matlab编程,简单的迭代问题

Z=1/(1-h)-h*b/(1+h) (1)
h=a/Z (2)
a,b为常数
我是把复杂的问题简化成这样形式的。别告诉我h直接代入然后手动化简求解。实际问题很繁琐的。提示是设置初值Z=1代入(2),然后计算得h带入(1),比较两个Z,设置一个精度,满足精度的Z为答案,不满足的话将得到Z赋值给(2)继续迭代。
这个过程怎样用 matlab语言实现呢?

你的这个问题看似简单,但你没给出a和b的值,迭代有可能不收敛的哈
给你一个,你参考一下,不难实现的:
clear all;clc;
z(1)=1;
a=2;b=1/3;
for ii=1:100
h(ii)=a/z(ii);
zz(ii)=1/(1-h(ii))-b*h(ii)/(1+h(ii));
k(ii)=abs(z(ii)-zz(ii));
if k(ii)<=0.01
z(ii)=zz(ii);
break;
else
z(ii+1)=zz(ii);
end
end
----------------------------
z =
1.0000 -1.2222 -0.4778 -0.2451 -0.2663
zz =
-1.2222 -0.4778 -0.2451 -0.2707 -0.2663
ii=5,需要5次迭代就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-04
找一本计算方法书,里面一堆类似的例子,自己动手编写就行
第2个回答  2013-02-04
用一个for循环,等到满足精度就break不就完事了啊