占个位,明天下午再看看。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
一题:(你的题目中精度没有说清楚,应当是公式复制过,丢失信息了)
你改一下精度和初始值吧(自己设计的迭代法的收敛与初值关系比较大)
f=inline('(x^2+2-exp(x))/3'); %注意这里是x(n+1)=**的迭代公式
acc=1e-8; %精度
x0=1.5;
%(1)迭代法
x1=x0;
for i_iter=1:10000 %迭代最大次数
x2=f(x1);
if (abs(x1-x2)
end
x1=x2;
end
x2,i_iter
%(2)斯蒂芬森
x1_s=x0;
for i_steff=1:10000 %迭代最大次数
y=f(x1_s);
z=f(y);
x2_s=x1_s-(y-x1_s)^2/(z-2*y+x1_s);
if (abs(x1_s-x2_s)
end
x1_s=x2_s;
end
x2_s,i_steff
%(3)牛顿法
syms x
fNew=x^2-3*x+2-exp(x);
df=diff(fNew); %导数
f_df=fNew/df;
x1_n=x0;
for i_New=1:10000 %迭代最大次数
x2_n=x1_n-subs(f_df,x1_n);
if (abs(x1_n-x2_n)
end
x1_n=x2_n;
end
x2_n,i_New
============
二题、
syms x1 x2
f(1)=3*x1^2-x2^2;
f(2)=3*x1*x2^2-x1^3-1;
df=jacobian(f);
f_df=(df\f')';
acc=1e-6;
x0=[1,1];
xold=x0;
for i_New=1:1000 %迭代最大次数
xnew=xold-subs(subs(f_df,x1,xold(1)),x2,xold(2));
if (norm(xnew-xold)
end
xold=xnew;
end
xnew,i_New
是