Problema errore NaN

di il
3 risposte

Problema errore NaN

Salve, avrei un problema che per ora nn riesco a risolvere, l'errore si presenta qui:

for k=1:M
Pdi(k) = fzero(@(x) 1-Pd - binocdf(k-1,M,x),0.5);

mi da il seguente messaggio:
fzero(@(x) 1-Pd - binocdf(10-1,M,x),0.5)
Exiting fzero: aborting search for an interval containing a sign change
because NaN or Inf function value encountered during search.
(Function value at -0.14 is NaN.)
Check function or try again with a different starting value.

come mai succede? come lo risolvo? Grazie

3 Risposte

  • Re: Problema errore NaN

    Ti sta dicendo che la funzione non è definita per x=-0.14, per k=10.
    Infatti, se provi a scrivere :
    c=binocdf(k-1,M,-0.14);
    il risultato è proprio NaN (Not a Number).
    Andando infatti a leggere sull'help della funzione, c'è scritto che l'ultimo ingresso (P) deve essere un numero compreso tra 0 e 1, mentre la ricerca degli zeri, da parte della funzione fzero, si spinge fino a valori negativi di x.
    Non so quali siano i valori di Pd ed M, ma puoi provare a verificare che probabilmente la funzione non ha zeri per k=10;
    x=0:0.01:1;
    c=1-Pd-binocdf(k-1,M,x);
    figure();plot(x,c)
  • Re: Problema errore NaN

    Allora ti spiego, M fa 10 e Pd = 0.9, mi serve trovare la x al variare di k, cmq adesso dovrei aver risolto, ho messo cosi
    Pdi(k) = fzero(@(x) 1-Pd - binocdf(k-1,M,x),[0 1]);

    cioe ho impostato un intervallo in cui x deve rimanere positivo, pero mi sembra strano, la funzione binocdf non riconosce che x essendo un aprobabilita deve imanere positiva, allora perche me la calcolava in -0.14?
  • Re: Problema errore NaN

    In realtà non credo che faccia un controllo a priori sulla validità di tutte le funzioni contenute dell'espressione. Lui prova a cercare uno zero, e quando fa la ricerca prova a sostituire il valore nella funzione, e se il valore ha qualche incompatibilità con le funzioni presenti dà errore.
    Comunque passandogli l'intervallo dovresti aver risolto.
Devi accedere o registrarti per scrivere nel forum
3 risposte