计算方法实验报告 打印稿
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算方法实验报告
作业4
学院:数学科学学院
专业:信息与计算科学
班级:116班
学号:11213202
姓名:王华靖
用二分法和牛顿切线法求实根
一、实验目的:
<1>.熟悉用matlab 实现迭代
<2>.用matlab 实现二分,牛顿等求根算法
<3>.应用算法求解方程根
二、实验代码:
<1>函数图形:
>> x=[-2:0.1:1];
>> y=x.^4+2*x.^3-x-1;
>> plot(x,y);
>> grid on
-2-1.5-1-0.500.51-1.5-1
-0.5
0.5
1
<2>二分法:
1)
function [val,n]=ErFen_root(f,x,dalt)
if nargin<3
dalt=1e-5;
end
ab=x;i=0;x0=sum(ab)/2;
f0=feval(f,ab(1));
f1=feval(f,x0);
while abs(f1)>=dalt;
if f0*f1<0
ab(2)=x0;
else
ab(1)=x0;
end
x0=sum(ab)/2;
f0=feval(f,ab(1));
f1=feval(f,x0);
i=i+1;
disp(sym([ab(1) x0 ab(2) f0 f1 feval(f,ab(2))]));
if (ab(2)-x0)<2*eps
disp('May not be root!');
break;
end
end
val=x0;
if nargout==2
n=i;
end
2)
function f=F1(x)
f=x.^4+2*x.^3-x-1;
<3>牛顿切线法:
1)function [val,n]=Newton_root(f,a,daltf,daltx) tic
if nargin<4
dalt=1e-5;
end
if nargin<3
dalt=1e-6;
end
flag=0;i=size(a);
if i(2)==1
flag=1;
end
hold on
i=0;e=0;df1=0;x1=0;x0=a;
f0=feval(f,x0);d=ones(size(f0'));
df0=Jacbi_div(f,x0);
while sqrt((f0.^2)*d)>=daltf
x1=x0-f0*inv(df0');
f1=feval(f,x1);
df1=Jacbi_div(f,x1);
i=i+1;
if sqrt(x1.^2*d)<1
e=sqrt((x0-x1).^2)*d;
else
e=sqrt(((x0-x1).^2)*d./(x1.^2))*d;
end
if e break; end if i==100 disp('No root find!'); break; end if flag==1 plot([x0 x1],[f0 0],'r', [x0 x0],[0 f0], '-.r'); end x0=x1;df0=df1;f0=f1; disp(i) disp([xo' fo']) end if flag==1 X=x1-(a-x1):(a-x1)/50:x1+(a-x1); plot(X,feval(f,X),'k'); end hold on val=x1; if nargout==2 n=i; end disp('耗时:') disp(toc) 2) function[val]=Jacbi_div(f,X,n,h) if nargin<=3 h=0.1; end if nargin==2 n=3; end r=size(X);m=r(2); b=size(feval(f,X));b=b(2); df=zeros(b,m); for t=1:m Y=X;Y(t)=Y(t)+h; Z=X;Z(t)=Z(t)-h; df(:,t)=((feval(f,Y)-feval(f,Z))./(2*h))'; end G(1,1,:,:)=df; for t=2:n h=h/2; G=[G zeros(t-1,1,b,m);zeros(1,t,b,m)]; for k=1;m Y=X;Y(k)=Y(k)+h; Z=X;Z(k)=Z(k)-h; df(:,k)=((feval(f,Y)-feval(f,Z))./(2*h))'; end G(1,1,:,:)=df; for k=2;t r=k-1; G(t,k,:,:)=((4^r).*G(t,r,:,:)-G(t-1,r,:,:))./(4^r-1); end end val=reshape(G(n,n,:),[b,m]); 3) function y=fun1(x) y=x.^4+2*x.^3-x-1; 三、运行结果: <1> val = -1.8668 n = 12 >> <2> m = 2 t = 2