【源码】迭代法求根的matlab算法

迭代法求根的matlab算法

本篇是在课程学习中自己编程实现的迭代法计算非线性方程或者超越方程近似根的算法,写一下,后边便于复习和期末课程设计引用。

% 迭代法求根的matlab算法
function [X_k,x0,counter]=interation(a,err,f_x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%输入参数a为迭代初值                               %
%输入参数err为误差精度                             %
%输入参数f_x为迭代函数,即满足x=f_x(x)的函数       %
%输出参数X_k为迭代序列                             %
%输出参数x0为满足精度要求的根                      %
%输出参数counter为迭代的次数                       %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
counter=0;%计数器初始化
X_k=(0);%序列初始化
while(sign(f_x(a))==0)%如果a的函数值为0停止迭代输出x0为a的值,迭代次数为0
    x0=a;
    X_k(1)=a;
    counter=0;
    return;
end
while(sign(f_x(a))~=0&&abs(f_x(a)-a)>=err)%a的函数不为零且不满足误差精度进行迭代
    X_k(1)=a;%将a赋给序列第一个值
    a=f_x(a);%迭代
    counter=counter+1;%每迭代一次计数器加一
    X_k(counter)=a;%将当前值赋值给序列
    x0=a;%最终输出最后一个迭代值作为根
    interation(a,err,f_x);%不满足精度时重复调用迭代函数本身进行迭代
end
end
  • 引用实列:计算在这里插入图片描述
    在x=0.5附近的根,![在这里插入图片描述](https://img-blog.csdnimg.cn/20200924171204234.png#pic_center
    需要先计算出迭代函数,等价变形为x=exp(-x)
  • 则调用代码为: f_x=@(x)exp(-x)%定义迭代函数
    [X_k,x0,n]=interation(0.5,10^(-5),f_x)%调用迭代函数计算
  • 计算结果在这里插入图片描述
    转载请注明出处!

版权声明:本文为myDearing_lulu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。