用不动点迭代法求某函数的近似解的matlab程序怎么写?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 23:33:51
用不动点迭代法求某函数的近似解的matlab程序怎么写?
还有怎么求迭代次数和怎么要求精确度.
还有怎么求迭代次数和怎么要求精确度.
%%以下是不动点主程序
function [xc,num,eps] = fpi(g,x0,phi,step)
if nargin step
disp('超过迭代次数,可能不收敛')
break;
end
end
xc = afterNum;
==================
下面是该程序的用法,比如我们想要求x^3+x-1=0的根,按如下的步骤进行:
1、首先将其转换成x=g(x)的形式,比如我将其转换成 x = (1-x)^(1/3)这种开立方的形式
2、将这种形式写成函数,即此时有g(x) = (1-x)^(1/3),将下面的代码保存成g.m文件:
function y = g(x)
y = nthroot(1-x,3);
3、调用上面的主程序,后面两个参数是可选的,第三个参数表示你要求的最低精度,默认值为1e-6,第四个参数表示最大迭代次数,默认是100次.
[xc,num,eps] = fpi(@g,0.8)
获得结果如下:(xc就是根,num是实际迭代次数,eps是根的精度)
xc =
0.6823
num =
38
eps =
9.5514e-07
================
以下是几点说明:
① 不动点的形式也可能有其它种形式,比如x=1-x^3,但是它不收敛,具体原因请参考数学书,这里可以提示一下,在根附近的其导数的绝对值大小1
② 所取的初始值最好在根附近,别太远.不动点法在离根较远时可能不收敛(虽然在根附近会收敛),上面的程序若取初值为1的话,最后并不收敛,会在0与1之间来回折腾.可自行验证
有问题请留言
function [xc,num,eps] = fpi(g,x0,phi,step)
if nargin step
disp('超过迭代次数,可能不收敛')
break;
end
end
xc = afterNum;
==================
下面是该程序的用法,比如我们想要求x^3+x-1=0的根,按如下的步骤进行:
1、首先将其转换成x=g(x)的形式,比如我将其转换成 x = (1-x)^(1/3)这种开立方的形式
2、将这种形式写成函数,即此时有g(x) = (1-x)^(1/3),将下面的代码保存成g.m文件:
function y = g(x)
y = nthroot(1-x,3);
3、调用上面的主程序,后面两个参数是可选的,第三个参数表示你要求的最低精度,默认值为1e-6,第四个参数表示最大迭代次数,默认是100次.
[xc,num,eps] = fpi(@g,0.8)
获得结果如下:(xc就是根,num是实际迭代次数,eps是根的精度)
xc =
0.6823
num =
38
eps =
9.5514e-07
================
以下是几点说明:
① 不动点的形式也可能有其它种形式,比如x=1-x^3,但是它不收敛,具体原因请参考数学书,这里可以提示一下,在根附近的其导数的绝对值大小1
② 所取的初始值最好在根附近,别太远.不动点法在离根较远时可能不收敛(虽然在根附近会收敛),上面的程序若取初值为1的话,最后并不收敛,会在0与1之间来回折腾.可自行验证
有问题请留言
用不动点迭代法求某函数的近似解的matlab程序怎么写?
用牛顿迭代法解三元三次方程的MATLAB程序!
编程 利用不动点迭代法求非线性方程的根
哪位大哥会matlab 帮忙写个程序,用牛顿迭代法求方程X^3-3*x-1=0在2附近的解
MATLAB的写程序求函数
求:牛顿迭代法解方程的程序
用Matlab编程,采用不动点迭代法,求f(x)=x3+4x2-10在区间[1,2]上的 一个根
SOR迭代法 求MATLAB程序
求一段用matlab实现牛顿迭代法程序,迭代函数很复杂.
用matlab求函数最小值的程序
matlab样条插值函数,已经有求插值函数的程序,想知道求一系列值的程序该怎么写
急寻用matlab编写的解决雅各比迭代法的程序