matlab迭代法求某数平方根,用不动点迭代法求某函数的近似解的matlab程序怎么写?还有怎么求迭代次数和怎么要求精确度....

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

%%以下是不动点主程序

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之间来回折腾.可自行验证

有问题请留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值