数值分析matlab完整版实验报告.docx

上传人:b****0 文档编号:547232 上传时间:2022-10-11 格式:DOCX 页数:8 大小:369.62KB
下载 相关 举报
数值分析matlab完整版实验报告.docx_第1页
第1页 / 共8页
数值分析matlab完整版实验报告.docx_第2页
第2页 / 共8页
数值分析matlab完整版实验报告.docx_第3页
第3页 / 共8页
数值分析matlab完整版实验报告.docx_第4页
第4页 / 共8页
数值分析matlab完整版实验报告.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数值分析matlab完整版实验报告.docx

《数值分析matlab完整版实验报告.docx》由会员分享,可在线阅读,更多相关《数值分析matlab完整版实验报告.docx(8页珍藏版)》请在冰豆网上搜索。

数值分析matlab完整版实验报告.docx

数值分析matlab完整版实验报告

 

数值分析matlab完整版实验报告

《数值分析》报告

 

运用Matlab求解非线性方程的根

 

学院:

专业:

班级:

姓名:

学号:

 

1.目的

掌握非线性方程求根的方法,并选取实例运用MATLAB软件进行算法的实现,分别用牛顿法、弦截法和抛物线法求非线性方程的根。

2.报告选题

报告选取《数值分析(第四版)》290页习题7作为研究对象,即求在附近的根。

根的准确值,要求结果准确到四位有效数字。

(1)用牛顿法;

(2)用弦截法,取,;

(3)用抛物线法,取,,。

3.理论基础

(1)牛顿迭代法

牛顿迭代法是一种特殊的不动点迭代法,其计算公式为

其迭代函数为

牛顿迭代法的收敛速度,当时,容易证明,,,牛顿迭代法是平方收敛的,且。

(2)弦截法

将牛顿迭代法中的用在,处的一阶差商来代替,即可得弦截法

(3)抛物线法

弦截法可以理解为用过两点的直线方程的根近似替的根。

若已知的三个近似根,,用过的抛物线方程的根近似代替的根,所得的迭代法称为抛物线法,也称密勒(Muller)法。

4.MATLAB实现

根据牛顿法、弦截法和抛物线法求非线性方程根的理论基础,为实现计算在MATLAB中编写了以下M文件:

(1)f.m,题目中的函数f

functiony=f(x)

y=x^3-3*x-1;

(2)d.m,函数f的导数

functiony=d(x)

y=3*x^2-3;

(3)newton.m,牛顿法

functionnewton(f,d,x0,e,max)

%f是要求根的方程(f(x)=0);

%d是f(x)的导数;

%x0是所给初值,位于x*附近;

%e是给定允许误差;

%max是迭代的最大次数;

%x1是newton法求得的方程的近似解;

%err是误差估计;

%k是迭代次数;

%y是f(x)值;

k=0;

y=feval('f',x0);

fprintf('k=%.0fx%d=%.8fy%d=%.6e\n',k,k,x0,k,y)

fork=1:

max

x1=x0-feval('f',x0)/feval('d',x0);

err=abs(x1-1.87938524);

x0=x1;

y=feval('f',x0);

fprintf('k=%.0fx%d=%.8fe%d=%.6ey%d=%.6e\n',k,k,x0,k,err,k,y)

if(err

break;

end

end

(1)xjmethod.m弦截法

functionxjmethod(f,x0,x1,e,max)

%f是要求根的方程(f(x)=0);

%x0,x1是所给初值,位于x*附近;

%e是给定允许误差;

%max是迭代的最大次数;

%x1是弦截法求得的方程的近似解;

%err是误差估计;

%k是迭代次数;

%y是f(x)值;

fprintf('k=%.0fx%d=%.8fy%d=%.8e\n',0,0,x0,0,feval('f',x0))

fprintf('k=%.0fx%d=%.8fy%d=%.8e\n',1,1,x1,1,feval('f',x1))

fork=2:

max

x2=x1-(feval('f',x1)*(x1-x0))/(feval('f',x1)-feval('f',x0));

err=abs(x2-1.87938524);

x0=x1;

x1=x2;

y=feval('f',x1);

fprintf('k=%.0fx%d=%.8fe%d=%.6ey%d=%.8e\n',k,k,x1,k,err,k,y)

if(err

break;

end

end

(1)pwxmethod.m抛物线法

functionpwxmethod(f,x0,x1,x2,e,max)

%f是要求根的方程(f(x)=0);

%x0,x1,x2是所给初值,位于x*附近;

%e是给定允许误差;

%max是迭代的最大次数;

%x3是弦截法求得的方程的近似解;

%err是误差估计;

%k是迭代次数;

%y是f(x)值

fprintf('k=%.0fx%d=%.8fy%d=%.8e\n',0,0,x0,0,feval('f',x0))

fprintf('k=%.0fx%d=%.8fy%d=%.8e\n',1,1,x1,1,feval('f',x1))

fprintf('k=%.0fx%d=%.8fy%d=%.8e\n',2,2,x2,2,feval('f',x2))

fork=3:

max

f0=feval('f',x0);

f1=feval('f',x1);

f2=feval('f',x2);

a=(f0-f2)/(x0-x2);

b=(f1-f2)/(x1-x2);

c=(a-b)/(x0-x1);

w=b+c*(x2-x1);

ifw<0

x3=x2-(2*f2/(w-sqrt(w^2-4*c*f2)));

elseifw>0

x3=x2-(2*f2/(w+sqrt(w^2-4*c*f2)));

end

err=abs(x3-1.87938524);

x0=x1;

x1=x2;

x2=x3;

y=feval('f',x2);

fprintf('k=%.0fx%d=%.8fe%d=%.6ey%d=%.8e\n',k,k,x2,k,err,k,y)

if(err

break;

end

end

5.运行结果

图1运行结果界面

(1)牛顿法计算结果

k

0

2.00000000

1.000000e+000

1

1.88888889

9.503649e-003

7.270233e-002

2

1.87945157

6.632695e-005

5.038501e-004

即,误差为6.632695e-005。

(2)弦截法计算结果

k

0

2.00000000

1.000000e+000

1

1.90000000

1.59000000e-001

2

1.88109394

1.708696e-003

1.29961633e-002

3

1.87941106

2.582017e-005

1.96128714e-004

即,误差为2.582017e-005。

(3)抛物线法计算结果

k

0

1.00000000

-3.00000000e+000

1

3.00000000

1.70000000e+001

2

2.00000000

1.00000000e+000

3

1.89314982

1.376458e-002

1.05630272e-001

4

1.87913526

2.499828e-004

-1.89859581e-003

5

1.87938530

5.621918e-008

4.15115927e-007

即,误差为5.621918e-008。

6.小结

迭代法是解非线性方程的主要方法,牛顿法就是最有效的迭代法之一,它在单根附近具有较高阶的收敛速度。

而弦截法用差商代替导数,对于较复杂的函数运算变的方便。

抛物线法也是超线性收敛的,适用于求多项式的实根和复根。

通过本次报告加深了对牛顿法、弦截法和抛物线法求解非线性方程根的理解,同时掌握了MATLAB强大的计算功能,增强了对数值分析课程的学习兴趣。

参考文献

[1]李庆扬.数值分析(第四版)北京:

清华大学出版社,施普林格出版社.2001.

[2]胡学林.可编程控制器教程.北京:

机械工业出版社,2003.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1