20/10/2021, 10:50
function[x,i] = aitken(x0,f,df,tol,max)
f0=feval(f,x0);
d=feval(df,x0);
x1=x0-(f0/d);
f1=feval(f,x1);
d=feval(df,x1);
x2=x1-(f1/d);
for i=1:max
x0=(x1*x1-x0*x2)/(2*x1-x2-x0);
if abs(x0-x2)<=tol*(1+abs(x2))
break
end
f0=feval(f,x0);
d=feval(df,x0);
x1=x0-(f0/d);
f1=feval(f,x1);
d=feval(df,x1);
x2=x1-(f1/d);
end
x=x2;
20/10/2021, 20:13
20/10/2021, 20:22
f
df
20/10/2021, 22:32
Quinzio ha scritto:Oltre a fare il copia-incolla del codice Matlab, vuoi essere cosi' gentile da spiegarci qual e' la sequenza che vorresti trattare, cosa cosa sono "f" e "df" che si vedono nel codice, fare un esempio numerico in modo che rispondere sia un po' piu' facile ? Grazie
f =
Inline function:
f(x) = ((x-1)^3)*exp(x-1)
>> df=fcnchk('exp(x-1)*(3*((x-1)^2)+(x-1)^3)')
df =
Inline function:
df(x) = exp(x-1)*(3*((x-1)^2)+(x-1)^3)
>> [x,i]=aitken(0,f,df,1e-3,100)
x =
1.0000
i =
4
>> [x,i]=aitken(0,f,df,1e-6,100)
x =
1
i =
5
>> [x,i]=aitken(0,f,df,1e-9,100)
x =
1
i =
5
>> [x,i]=aitken(0,f,df,1e-12,100)
x =
NaN
i =
100
feddy ha scritto:@Quinzioè la funzione di cui vuoi trovare lo zero, mentre
- Codice:
f
la sua derivata.
- Codice:
df
@Xemitron Non ho tempo per fare debugging ora, ma sono certo che potrai trovare in rete dei file MatLab che implementano Aitken
20/10/2021, 22:59
d
x1=x0-(f0/d);
20/10/2021, 23:01
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.