第二次实验报告(非线性方程求根)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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总结

相关文档
最新文档