Ricerca di un valore

di il
1 risposte

Ricerca di un valore

Ciao!! Devo cercare un valore di una funzione tramite interpolazione. Ho una tabella con le variabili x e y che assumono valori fatti in questo modo:
x = da 0 a 30 con passo 0,05
y = valori dell'ordine di 10^-10 e 10^-9 fino a x = 28
valori più grandi (fino all'ordine di 10^-4) per 28 < x < 30.
Adesso devo trovare un valore di x in corrispondenza di y = 10^-5
Ho scritto questo codice:
load D1.txt
vgs=D1(:,1);
id=D1(:,2);
L=length(vgs);
n=1e-4;
m=1/n;
vgsi=vgs(1):n:vgs(L);
idi=interp1(vgs,id,vgsi);
ibreak=2.5e-4;
a=round(idi*m)/m;
vbreak=vgsi(find(a==ibreak))

plot (vgs,id,'o',vgsi,idi)
ma mi restituisce sempre 0. Cosa sbaglio nell'interpolazione?? Grazie!

1 Risposte

  • Re: Ricerca di un valore

    Allora, il codice funziona, quindi probabilmente dipende dai dati in ingresso.
    Però, in questo caso, invece di usare interp1, ti consiglio di usare la funzione polyfit, con grado 1.
    Questa funzione ti restituisce i coefficienti (a e b) del polinomio y=ax+b
    Poi usi la funzione roots per ricavare il valore della funzione in y=vbreak, in questo modo:
    x_vbreak=roots([a b-vbreak])
    cioè gli chiedi di risolvere e trovare le radici dell'equazione:
    ax+(b-vbreak)=0
    In questo modo non c'è la possibilità di non trovare il valore a causa degli arrotondamenti.
Devi accedere o registrarti per scrivere nel forum
1 risposte