【数值分析】非线性方程求根,二分法,割线法,matlab实现

这篇具有很好参考价值的文章主要介绍了【数值分析】非线性方程求根,二分法,割线法,matlab实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 基本问题

收敛阶
lim ⁡ k → ∞ ∣ e k + 1 ∣ ∣ e k ∣ r = C > 0    ,    r 为收敛阶 \lim_{k\to\infty} \frac{|e_{k+1}|}{|e_k|}^r=C>0 \,\,,\,\, r为收敛阶 klimekek+1r=C>0,r为收敛阶

2. 二分法

二分法是线性收敛的,如果指定精度 ϵ { \epsilon } ϵ ,则最多需要迭代步数
k = ⌈ log ⁡ 2 ( b − a ϵ ) ⌉ k= \lceil \log_2(\frac{b-a}{\epsilon }) \rceil k=log2(ϵba)⌉
matlab实现

%% 二分法例子
f = @(x) x^3-x-1;
format long
[x,i] = bisect(f,1,2,1e-5,1000)

%% 二分法求非线性方程的根
% 输入函数,范围,精度,最大迭代次数
% 输出根,迭代次数
function [x,i] = bisect(f,a,b,eps,max_iter)
    if sign(f(a))~=sign(f(b))
        for i = 1:max_iter  
            c = a/2+b/2;
            if (b-a)<eps || abs(f(c))<eps
                x = c;
                break
            end
            if sign(f(a))==sign(f(c))
                a = c;
            else
                b = c;
            end
        end
    end
end

3. 不动点迭代加速

不动点 x = x ∗ {x=x ^{*} } x=x
x k + 1 = ϕ ( x k ) x_{k+1}=\phi(x_k) xk+1=ϕ(xk)
x k + 1 − x ∗ = ϕ ( x k ) − ϕ ( x ∗ ) = ϕ ′ ( ξ k ) ( x k − x ∗ )    ,    ξ k ∈ ( x k , x ∗ ) x_{k+1}-x ^{*} =\phi(x_k)-\phi(x ^{*} )=\phi'(\xi_k)(x_k-x ^{*} ) \,\,,\,\, \xi_k\in(x_k,x ^{*} ) xk+1x=ϕ(xk)ϕ(x)=ϕ(ξk)(xkx),ξk(xk,x)
let     ϕ ′ ( ξ k ) = L \text{let} \,\,\, \phi'(\xi_k) =L letϕ(ξk)=L
x ∗ ≈ x k + 1 − L x k 1 − L = ϕ ˉ ( x ) x ^{*} \approx \frac{x_{k+1}-Lx_k}{1-L}=\bar\phi(x) x1Lxk+1Lxk=ϕˉ(x)
为加速后的不动点迭代格式。

6. 割线法

割线法比起牛顿迭代法不需要计算导数。
双点割线法
需要知道两个的函数初始值,不需要函数值异号。迭代公式如下:
x k + 1 = x k − f ( x k ) x k − x k − 1 f ( x k ) − f ( x k − 1 ) x_{k+1}=x_k-f(x_k) \frac{x_k-x_{k-1}}{f(x_k)-f(x_{k-1})} xk+1=xkf(xk)f(xk)f(xk1)xkxk1
收敛阶:
r = 5 + 1 2 ≈ 1.618 r= \frac{\sqrt{5}+1}{2} \approx 1.618 r=25 +11.618

matlab编程实现

%%  割线法例子
f = @(x) x-sin(x)-0.5;
[x,e,i] = cutSolve(f,1.4, 1.6, 0.01, 100)

%% 双点割线法
% 输入函数,根所在的区间下限上限,精度,最大迭代次数
% 输出根,根的值,迭代次数
function [x,e,i] = cutSolve(f,a,b,eps,max_iter)
    x0 = a;
    x1 = b;
    for i = 1:max_iter
        x = -f(x0)*(x1-x0)/(f(x1)-f(x0))+x0
        if abs(x-x1)<=eps
            e = abs(f(x));
            break;
        end
        x0=x1;
        x1=x;
    end
end

单点割线法
固定初始点,有
x k + 1 = x k − f ( x k ) x k − x 0 f ( x k ) − f ( x 0 ) x_{k+1}=x_k-f(x_k) \frac{x_k-x_{0}}{f(x_k)-f(x_{0})} xk+1=xkf(xk)f(xk)f(x0)xkx0
算是一种不动点迭代。文章来源地址https://www.toymoban.com/news/detail-815155.html

到了这里,关于【数值分析】非线性方程求根,二分法,割线法,matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

    非线性方程的求根方法很多,常用的有牛顿迭代法,但该方法需要求原方程的导数,而在实际运算中这一条件有时 是不能满足的,所以又出现了弦截法、二分法等其他方法。 在 MATLAB 中,非线性方程的求解和最优化问题往往需要调用最优化工具箱来解决。优化工具箱提供了一

    2024年02月08日
    浏览(53)
  • PINN解偏微分方程实例2(一维非线性薛定谔方程)

       考虑偏微分方程如下: i h t + 0.5 h x x + ∣ h ∣ 2 h = 0 h ( 0 , x ) = 2 s e c h ( x ) h ( t , − 5 ) = h ( t , 5 ) h x ( t , − 5 ) = h x ( t , 5 ) begin{align} begin{aligned} ih_t + 0.5h_{xx} + |h|^2h = 0 \\\\ h(0,x) = 2 sech(x) \\\\ h(t,-5) = h(t,5) \\\\ h_x(t,-5) = h_x(t,5) end{aligned} end{align} ​ i h t ​ + 0.5 h xx ​ + ∣ h ∣

    2024年02月01日
    浏览(49)
  • 线性方程组AX=b,AX=0以及非线性方程组的最小二乘解(解方程组->优化问题)

    超定方程组无解是因为方程组包含了过多的约束条件,无法满足所有的约束条件,在这种情况下,方程组的某些方程必然是矛盾的,也就是说,他们描述的条件是不兼容的,无法同时满足。 所以求解超定方程组其实是一个拟合问题,其基本思想是最小化所有方程的误差平方和

    2024年02月08日
    浏览(47)
  • matlab实现牛顿迭代法求解非线性方程

    非线性方程是指含有未知数的方程,且方程中至少有一个未知数的次数大于一或者含有非一次幂的函数(如指数、对数、三角函数等)。例如,$f(x) = x^3 - 2x - 5 = 0$就是一个非线性方程。非线性方程通常没有显式的解析解,因此需要使用数值方法来近似求解。 牛顿迭代法(N

    2024年02月11日
    浏览(49)
  • 牛顿(Newton)迭代法求解非线性方程以及方程组的Matlab实现

    必做题目比较简单,写得有些随意,主要还是第二个拓展题目的难度比较高 传入题设数据有: 另附运行截图  

    2024年02月11日
    浏览(44)
  • 节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 本文提

    2024年02月12日
    浏览(53)
  • Matlab数据处理:用离散数据根据自定义多变量非线性方程拟合解析方程求取参数

    问题:已知xlsx表格[X,Y,Z]的离散取值,希望用  来拟合,用matlab求得[C1,C2,C3,C5,C6]的值 解答: 运行结果:  备注: 1.rsquare=0.8668认为接近1,拟合效果不错 2.fill函数的startpoint如何设置[C1,...C6]得到一个收敛点?(我找了没找到什么设置startpoint好方法,摸索用如下方法找到了一个

    2024年02月11日
    浏览(48)
  • 6自由度并联机器人 运动学算法 正解 逆解6个耦合的非线性方程组求解

    6自由度并联机器人 运动学算法   正解  逆解 6个耦合的非线性方程组求解 正解快速收敛可用在机器人控制中 已实际使用 6自由度并联机器人运动学算法及其在机器人控制中的应用 随着社会科技的不断发展,机器人技术在工业自动化和服务业中的应用越来越广泛。其中,高自

    2024年04月28日
    浏览(50)
  • 数值分析——线性方程组求解

    清理磁盘的时候偶然发现大二下数值分析的实验作业还在,本着在丢弃之前可以放在网上以备不时之需的原则,我便发了上来。 分别用直接法、Jacobi迭代法、Gauss-Seidel迭代法求解下列线性方程组AX = b,其中A为五对角矩阵(n=20),b是除第一个分量是1外,其他分量都是0的列向量

    2024年02月05日
    浏览(41)
  • 线性回归(线性拟合)与非线性回归(非线性拟合)原理、推导与算法实现(一)

    关于回归和拟合,从它们的求解过程以及结果来看,两者似乎没有太大差别,事实也的确如此。从本质上说,回归属于数理统计问题,研究解释变量与响应变量之间的关系以及相关性等问题。而拟合是把平面的一系列点,用一条光滑曲线连接起来,并且让更多的点在曲线上或

    2023年04月14日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包