教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 初中教育 >

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

来源:网络收集 时间:2026-08-20
导读: 运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整 《数值分析》报告 运用 Matlab求解非线性方程的根学 院: 专 业: 班 级: 姓 名: 学 号: 运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整 1. 目的 掌握

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

《数值分析》报告

运用

Matlab求解非线性方程的根学 院: 专 业: 班 级: 姓 名: 学 号:

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

1. 目的

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

2. 报告选题

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

f(x) x3 3x 1 0在x0 2附近的根。根的准确值x* 1.87938524...,要求结果准确到四位有效数字。

(1) 用牛顿法;

(2) 用弦截法,取x0 2,x1 1.9; (3) 用抛物线法,取x0 1,x1 3,x2 2。

3. 理论基础 (1) 牛顿迭代法

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

xk 1 xk

f(xk)

,k 0,1,2,...f'(xk)

f(x)

f'(x)

其迭代函数为

(x) x

牛顿迭代法的收敛速度,当f(x*) 0,f'(x*) 0,f''(x*) 0时,容易证

明,f'(x*) 0,

''(x*)

f''(x*)

0f'(x*),牛顿迭代法是平方收敛的,且

lim

ek 1f''(x*)

k e22f'(x*)。 k

(2)弦截法

将牛顿迭代法中的f'(xk)用f(x)在xk 1,xk处的一阶差商来代替,即可得弦截法

xk 1 xk

f(xk)

(xk xk 1)

f(xk) f(xk 1) 。

(3)抛物线法

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

弦截法可以理解为用过(xk 1,f(xk 1)),(xk f(xk))两点的直线方程的根近似替f(x) 0的根。若已知f(x) 0的三个近似根xk,xk 1,xk 2用过(xk,f(xx(f, kx) k)x,x的抛物线方程的根近似代替())f(x) 0的k)), k11(2,(f k2根,所得的迭代法称为抛物线法,也称密勒(Muller)法。

4. MATLAB实现

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

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

function y=f(x) y=x^3-3*x-1;

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

function y=d(x)

y=3*x^2-3;

(3) newton.m,牛顿法

function newton(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=%.0f x%d=%.8f y%d=%.6e\n',k,k,x0,k,y) for k=1:max

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

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

x0=x1;

y=feval('f',x0);

fprintf('k=%.0f x%d=%.8f e%d=%.6e y%d=%.6e\n',k,k,x0,k,err,k,y) if (err<e)|(y==0)|(k==max) break; end

end

(4) xjmethod.m弦截法

function xjmethod(f,x0,x1,e,max)

%f 是要求根的方程(f(x)=0); %x0,x1是所给初值,位于x*附近; %e是给定允许误差; %max是迭代的最大次数;

%x1是弦截法求得的方程的近似解; %err是误差估计; %k是迭代次数; %y是f(x)值;

fprintf('k=%.0f x%d=%.8f y%d=%.8e\n',0,0,x0,0,feval('f',x0)) fprintf('k=%.0f x%d=%.8f y%d=%.8e\n',1,1,x1,1,feval('f',x1)) for k=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=%.0f x%d=%.8f e%d=%.6e y%d=%.8e\n',k,k,x1,k,err,k,y) if (err<e)|(y==0)|(k==max) break; end

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

end

(5) pwxmethod.m抛物线法

function pwxmethod(f,x0,x1,x2,e,max)

%f 是要求根的方程(f(x)=0); %x0,x1,x2是所给初值,位于x*附近; %e是给定允许误差; %max是迭代的最大次数;

%x3是弦截法求得的方程的近似解; %err是误差估计; %k是迭代次数; %y是f(x)值

fprintf('k=%.0f x%d=%.8f y%d=%.8e\n',0,0,x0,0,feval('f',x0)) fprintf('k=%.0f x%d=%.8f y%d=%.8e\n',1,1,x1,1,feval('f',x1)) fprintf('k=%.0f x%d=%.8f y%d=%.8e\n',2,2,x2,2,feval('f',x2)) for k=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); if w<0

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

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

err=abs(x3-1.87938524);

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

x0=x1; x1=x2; x2=x3;

y=feval('f',x2);

fprintf('k=%.0f x%d=%.8f e%d=%.6e y%d=%.8e\n',k,k,x2,k,err,k,y) if (err<e)|(y==0)|(k==max) break; end end

5. 运行结果

图1 运行结果界面

(1)牛顿法计算结果

运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整

即x* x2 1.87945157,误差为6.632695e-005。 (2)弦截法计算结果

迭代法是解非线性方程的主要方法,牛顿法就是最有效的迭代法之一,它在单根附近具有较高阶的收敛速度。而弦截法用差商代替导数,对于较复杂的函数运算变的方便。抛物线法也是超线性收敛的,适用于求多项式的实根和复根。

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

参考文献

[1] 李庆扬.数值分析(第四版)北京:清华大学出版社,施普林格出版社.2001. [2] 胡学林.可编程控制器教程.北京:机械工业出版社,2003.

…… 此处隐藏:1497字,全部文档内容请下载后查看。喜欢就下载吧 ……
数值分析matlab完整版实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/48200.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)