matlab编程,简单的迭代问题
Z=1/(1-h)-h*b/(1+h)(1)h=a/Z(2)a,b为常数我是把复杂的问题简化成这样形式的。别告诉我h直接代入然后手动化简求解。实际问题很繁琐的。提示是设置...
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语言实现呢? 展开
h=a/Z (2)
a,b为常数
我是把复杂的问题简化成这样形式的。别告诉我h直接代入然后手动化简求解。实际问题很繁琐的。提示是设置初值Z=1代入(2),然后计算得h带入(1),比较两个Z,设置一个精度,满足精度的Z为答案,不满足的话将得到Z赋值给(2)继续迭代。
这个过程怎样用 matlab语言实现呢? 展开
3个回答
展开全部
你的这个问题看似简单,但你没给出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次迭代就可以了。
给你一个,你参考一下,不难实现的:
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次迭代就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询