第二次实验报告(非线性方程求根)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算方法Matlab 实验报告
数学实验报告
实
验
五
学院:数学与统计学院
班级:数学与统计学院 (2)班
姓名:石紫雲
学号: 201470010234
非线性方程的数值解法实验
1实验目的
1)进一步熟练掌握求解非线性方程的牛顿迭代法和弦截法。
2)根据牛顿迭代法和弦截法的原理,编写程序求解非线性方程,提高编程解决问题的能力。2实验内容
(1)用牛顿法和割线法求下列方程的根
x^2-e^x=0;
x*e^x-1=0;
(2)用牛顿迭代法求平方根,计算5
3实验原理
(1)牛顿迭代公式:x k 1x k f (x k )/ f '(x k )
双点弦法公式: x k 1x k
f ( x k )
x k 1 ) f ( x k )
( x k
f ( x k 1 )
(2)令f ( x)x2 A ,再用牛顿法求根。
4实验步骤
1)根据牛顿迭代法,双点弦法的算法编写相应的求根函数;
2)用牛顿迭代法和双点弦法分别对方程进行求解;
5程序设计
牛顿迭代法
x0=1.0;
N=100;
k=0;
eps=5e-6;
delta=1e-6;
while (1)
x1=x0-fc1(x0)/fc2(x0);
k=k+1;
if k>N
disp('Newton method failed') break
end
if(abs(x1-x0) break ; end x0=x1; end fprintf('%f',x0) fprintf('%f',abs(fc1(x1))) 双点弦法 function cutline(x0,x1) N=100; k=0; delta=5e-8; while (1) (abs(x1-x0)>=delta) c=x1; x1=cutnext(x0,x1); x0=c; k=k+1; if k>N disp('Cutline method failed') break ; end if(abs(x1-x0) break ; end end fprintf('%10f\n',x1); function y=cutnext(a,b) y=b-fc(b)/(fc(b)-fc(a))*(b-a); 1)原函数 function fc1=fc1(x) fc1=x^2-exp(x); end 导函数 function fc2=fc2(x) fc2=2*x-exp(x); end 2 )原函数 function fc1=fc1(x) fc1=x*exp(x)-1; end 导函数 function fc2=fc2(x) fc2=1*exp(x)+x*exp(x); end 3)原函数 function fc1=fc1(x) fc1=x^2-5; end 导函数 function fc2=fc2(x) fc2=2*x; end 6实验结果及分析 方程x^2-e^x=0x*e^x-1=0x250牛顿迭代法结果 牛顿法迭代次数 弦截法结果 弦截法迭代次数 注:牛顿迭代法由于设置delta=1e-6 ,所以算出的误差 e<1.0*10^-6; 割线 法由于设置 delta=5e-8 ,所以误差 e<5.0*10^-8. 7总结