非线性方程的数值解法java_MATLAB学数值分析(一)迭代法解非线性方程

本文介绍了数值分析中的迭代法,包括二分法和不动点法,用于求解非线性方程。通过MATLAB实现,讲解了算法的基本原理和应用场景,并提供了具体例子进行说明。
摘要由CSDN通过智能技术生成

[toc]

这个学期在学数值分析,课程内容相当于学过的计算方法的升级版,数值分析是一门很有用的学科,可以解决很多工程上实际的问题,学习这门课最好的方法就是把学到的算法自己实现一遍,现在打算开一个新坑,把数值分析每一章学到的算法都用matlab实现一遍。

强力推荐Timothy Sauer的数值分析,他的书没有那么多详细的推导,但是入门举的例子非常恰当,最重要的是他可以帮助你理解算法的本质,知道为什么要这样做,这个系列也会讲一点关于这个算法的本质上的理解

第一篇是关于迭代法求非线性方程

一、二分法

二分法很容易理解,收敛的条件也很简单,满足介值定理即可

function xc=bisect(f,a,b,tol)

if sign(f(a))*sign(f(b)) >= 0

error('f(a)f(b)<0 not satisfied!') %停止运行

end

fa=f(a);

fb=f(b);

while (b-a)/2>tol

c=(a+b)/2;

fc=f(c);

if fc==0

break

end

if sign(fc)*sign(fa)<0

b=c;

fb=fc;

else

a=c;

fa=fc;

end

end

xc=(a+b)/2;

两个实例

(1)

f=@(x) x+sin(x)-1

bisect(f,1,2,0.001)

解得答案为1.5322

(2)

f=@(x) x+sin(x)-1

bisect(f,1,2,0.001)

解得答案为0.5107

二、不动点法(FPI)

接下来的方法其实都可以归结为迭代法,本质上就是利用所给的方程找出一个形如x=φ(x)的公式,然后进行迭代(可以自行设置迭代精度或者迭代次数来控制求根)

不动点法得到迭代公式的方式十分简单,但是是否收敛以及收敛区间的选取是重点,这里不多提传统的条件,用几何的角度去理解非常形象

例:求x^3+x-1=0的根

有三种不动点迭代的公式

x=g(x)=1-x^3

x=g(x)=(1-3x)^(1/3)

x=g(x)=(1+2x^2)/(1+3xxx)

用几何的角度理解就是求y=x与y=g(x)的交点,迭代的过程就是这样一个回旋的过程,这样就不难理解为什么需要g`(x)

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[MATLAB学数值分析(一)迭代法解非线性方程]http://www.zyiz.net/tech/detail-132279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值