x1=xk; disp(xk); end disp('xk=') disp(xk)
弦截法通用程序:
%使用说明 f为符号表达式,x0,x1为初始值 function Xuanjiefa(f,x0,x1) syms x; x=x0; f1=eval(f); x=x1; f2=eval(f);
x2=x1-(f2/(f2-f1))*(x1-x0); while(norm(x2-x1)>0.000001) x=x1; f1=eval(f); x=x2; f2=eval(f);
xk=x2-(f2/(f2-f1))*(x2-x1); x1=x2; x2=xk; end disp('xk=') disp(xk)
Newton法:
k 0 1 2 3 xk 3 3.5102 3.4611 3.4606 f(xk) -25 2.9962 0.0301 3.1407e-06 xk?1?xk 0.5102 0.0491 5.0362e-04 k 0 1 2 3 4 xk 2 4.1333 3.5404 3.4619 3.4606 f(xk) -64 46.1178 4.8532 0.07744 2.0766e-5 xk?1?xk 2.1333 0.5929 0.0786 0.0013 k 0 1 2 3 xk 4 3.5136 3.4612 3.4606 f(xk) 36 3.1982 0.0342 4.059e-6 xk?1?xk 0.4865 0.0524 5.726e-4 弦截法:
k 0 1 2 3 4 5 xk 3 3.2 3.4879 3.4591 3.4606 3.406 f(xk) -25 -14.7520 1.6418 -0.0907 -5.1186e-04 1.6105e-07 xk?1?xk 0.2 0.2879 0.0288 0.0015 8.5667e-6 k 0 1 2 3 4 5 6 xk 2 3 3.6410 3.4428 3.4599 3.4606 3.4606 f(xk) -64 -25 11.1937 -1.0607 -0.0390 1.4420e-4 -1.9486e-8 xk?1?xk 1 0.6410 0.1983 0.0172 6.5469e-6 2.4129e-6 从上述两个表的结果我们可以对照得出,在不同的初始值的条件下运行程序都具有收敛性,但是不同的初始值有不同的收敛速度;
9:用二分法求解方程excosx?2?0在区间[0,4?]上所有根。 function er_fen_fa(f,a,b) syms x;
e=0.0000001; while((b-a)>e) m=(b+a)/2; x=a; f1=eval(f); x=m; f2=eval(f); if f1*f2>=0 a=m; else b=m; end end c=(a+m)/2; disp(c);
根据函数的特点将其定义域分为4等分分别为[0,?],[?,2?],[2?,3?],[3?,4?] 分别运行程序: >> syms x
>> f=exp(x)*cos(x)+2; >> a=0; >> b=pi; >> er_fen_fa(f,a,b 近似零点: 1.8807 >> syms x
>> f=exp(x)*cos(x)+2;
a=pi; >> b=2*pi; >> er_fen_fa(f,a,b) 近似零点: 4.6941 >> syms x
>> f=exp(x)*cos(x)+2; >> a=2*pi; >> b=3*pi; >> er_fen_fa(f,a,b) 近似零点: 7.8548 >> syms x
>> f=exp(x)*cos(x)+2; >> a=3*pi; >> b=4*pi; >> er_fen_fa(f,a,b) 近似零点: 10.9955
;x2?4.6941;x2?7.8548;x4?10.9955 由上述程序可知其全部解为x1?1.880710:考虑函数f(x)?sin(?x),x?[0,1]。用等距节点作f(x)的Newton插值,求出插值多项式以及f(x)的图像,观察收敛性。
Newton插值求插值多项式的通用程序: function P=Nweton_xhazhi(X,f) syms x; p=0;
[~,n]=size(X); for i=1:n-1 F=0; w=1; sum=1; for l=1:i+1; w=w*(x-X(l)); end for j=1:i+1 x=X(j);
F=F+f(j)/(eval(diff(w))); end for t=1:i syms x;
sum=sum*(x-X(t)); end p=p+F*sum; end P=p+f(1); Disp(‘P=’);
用等距节点作f(x)的Newton插值多项式的通用程序: X=0:0.1:1; f=sin(pi*X);
O=Nweton_xhazhi(X,f); Y=simple(O); disp(Y);