用不动点迭代法求某函数的近似解的matlab程序怎么写?

还有怎么求迭代次数和怎么要求精确度。!!还有加分!!!... 还有怎么求迭代次数和怎么要求精确度。!!还有加分!!! 展开
简时空
推荐于2017-11-25 · TA获得超过950个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:239万
展开全部
%%以下是不动点主程序
function [xc,num,eps] = fpi(g,x0,phi,step)
if nargin<3
phi = 1e-6;
end
if nargin<4
step = 100;
end
preNum=x0;
num = 0;
eps = 1;
while eps>phi
afterNum=g(preNum);
eps = abs(afterNum-preNum);
preNum = afterNum;
num = num+1;
if num > 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之间来回折腾。可自行验证

有问题请留言
北京埃德思远电气技术咨询有限公司
2023-08-25 广告
"整定计算的工作步骤,大致如下:1.确定整定方案所适应的系统情况。2.与调度部门共同确定系统的各种运行方式。3.取得必要的参数与资料(保护图纸,设备参数等)。4.结合系统情况,确定整定计算的具体原则。5.进行短路计算。6.进行保护的整定计算... 点击进入详情页
本回答由北京埃德思远电气技术咨询有限公司提供
不要被用
2012-11-04
知道答主
回答量:41
采纳率:0%
帮助的人:25万
展开全部
函数先转换成x=f(x)的形式,然后还要保证上述形式的迭代的收敛性,至于程序相当简单,不用我具体写了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式