24小时热门版块排行榜    

查看: 1764  |  回复: 10

lnjzh

银虫 (正式写手)

[求助] 这个简单的迭代怎么编程序,matlab语言的

Z=1/(1-h)-h*b/(1+h)
h=a/Z
a,b为常数
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

【答案】应助回帖

感谢参与,应助指数 +1
消去Z,直接用fsolve求解即可
2楼2013-02-04 21:27:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shizijun

木虫 (著名写手)

自定义头衔

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
lnjzh: 金币+5, 谢谢你 2013-02-14 10:45:57
引用回帖:
6楼: Originally posted by lnjzh at 2013-02-05 21:55:10
代入化简不得手动推导吗。实际问题比较复杂。需要都用程序实现。如何实现之?...

syms z h b a
f1 = 1/(1-h)-h*b/(1+h)-z;
f2 = a/z-h;
[h z]=solve(f1,f2);
个人签名
8楼2013-02-06 16:31:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

lnjzh

银虫 (正式写手)

引用回帖:
2楼: Originally posted by nono2009 at 2013-02-04 21:27:03
消去Z,直接用fsolve求解即可

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语言实现呢?
3楼2013-02-04 22:30:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lnjzh

银虫 (正式写手)

引用回帖:
2楼: Originally posted by nono2009 at 2013-02-04 21:27:03
消去Z,直接用fsolve求解即可

matlab能消去Z吗。可以不用手动推导实现吗。实际问题比这复杂的多,我只是把繁琐的问题简化了。
4楼2013-02-04 22:57:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shizijun

木虫 (著名写手)

自定义头衔

楼主要干嘛,表示不懂啊。。代入化简不可以吗?
个人签名
5楼2013-02-05 09:27:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lnjzh

银虫 (正式写手)

引用回帖:
5楼: Originally posted by shizijun at 2013-02-05 09:27:29
楼主要干嘛,表示不懂啊。。代入化简不可以吗?

代入化简不得手动推导吗。实际问题比较复杂。需要都用程序实现。如何实现之?
6楼2013-02-05 21:55:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
当作一个方程组来求解不行吗?
7楼2013-02-06 09:33:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anjing8811

木虫 (小有名气)

Mr

【答案】应助回帖

你看看牛顿迭代的资料,编个小算法,就可以了。

[ 发自手机版 http://muchong.com/3g ]
9楼2013-02-08 10:50:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

寒武纪000

银虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★
lnjzh: 金币+5, ★★★★★最佳答案, 谢谢你。 2013-02-14 10:46:08
csgt0: 金币+1, 谢谢 2013-02-16 09:20:15
你这应该就是求根吧。用fixed position interation 应该可以写出来吧
iter = 0;
while (1)
    xrold = xr;
    xr = func(xr);
    iter = iter +1;
    if xr~=0,ea = abs((xrold-xr)/xr)*100;end
    if ea <= es, break,end
end
root = xr; disp(xr);
end
这是我之前写的Mfile里面的,你把X换成你的Z 应该就可以了吧。
10楼2013-02-09 03:46:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lnjzh 的主题更新
信息提示
请填处理意见