24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2874  |  回复: 10

zhs4276689

木虫 (正式写手)

[求助] Matlab如何实现这样的计算:赋值——计算——判断结果——重复

以前没学过Matlab,最近急着计算一个数,才想起来看,但是入门难啊,所以想先问问大家。
如何实现赋值——计算——判断结果(合适则结束,不合适则重新赋值)这样的循环,比如说:
赋值A*,代入A=f(A*),获得A,若A=A*,则结束,不等则重新赋值A*=A*-x,反复循环,直到获得最终结果
请高手帮忙,程序写得尽量详细,我好学习,谢谢!
呵呵,这个过程应该叫迭代吧?
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ght1102

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
zhs4276689: 金币+5, 有点没看懂,呵呵 2012-04-20 17:28:40
你可以这样:
A* = ;
A = f(A*);
while A ~=A*
   A* = A*-x;
   A = f(A*);
end
2楼2012-04-20 15:11:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zhs4276689: 金币+10, 谢谢,对于两个参数的怎么办?请再指点下 2012-04-20 17:29:31
“赋值A*,代入A=f(A*),获得A,若A=A*,则结束,不等则重新赋值A*=A*-x,反复循环,直到获得最终结果”

就把A看作一个数,不是一个矩阵。
[code]
ErrorA = 1E-3;   % 迭代的容忍误差
A = A0;                % A0是初始数值,一定程度上随便选择的一个数
A_pre = A0 + 10*ErrorA;             % 定义上次迭代的结果的变量。

while   abs(A - A_pre) > ErrorA
        A_pre = A;            %保存上次计算现场
        A = f(A + x);            %计算新的A数值
end

[code]
很女子很弓虽大
3楼2012-04-20 16:19:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

上面发的帖子格式没对,呵呵,故重复一下:


“赋值A*,代入A=f(A*),获得A,若A=A*,则结束,不等则重新赋值A*=A*-x,反复循环,直到获得最终结果”

就把A看作一个数,不是一个矩阵。
CODE:
ErrorA = 1E-3;   % 迭代的容忍误差
A = A0;                % A0是初始数值,一定程度上随便选择的一个数
A_pre = A0 + 10*ErrorA;             % 定义上次迭代的结果的变量。

while   abs(A - A_pre) > ErrorA
        A_pre = A;            %保存上次计算现场
        A = f(A + x);            %计算新的A数值
end

很女子很弓虽大
4楼2012-04-20 16:20:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

sorry,

代码里面x前面的加号,应该改为减号

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
5楼2012-04-20 16:44:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhs4276689

木虫 (正式写手)

引用回帖:
4楼: Originally posted by lurencyj at 2012-04-20 16:20:50:
上面发的帖子格式没对,呵呵,故重复一下:


“赋值A*,代入A=f(A*),获得A,若A=A*,则结束,不等则重新赋值A*=A*-x,反复循环,直到获得最终结果”

就把A看作一个数,不是一个矩阵。

ErrorA = 1E-3 ...

谢谢,如果问题再复杂一点儿,比如两个变量,A,B,存在二元方程组,F1,F2,如何通过迭代同时获得这两个参数呢?
6楼2012-04-20 17:31:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhs4276689

木虫 (正式写手)

忘了说了,我遇到的方程组是隐式的,所以无法直接消除某一个,所以很头疼
7楼2012-04-20 17:34:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

楼主能不能表述的清楚一点呢? 大小写也区分一下。F1和f是不是一样?
很女子很弓虽大
8楼2012-04-20 17:55:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

其实,大同小异,稍微变通一下就好。

迭代的算法就是跟我写的那“伪代码”一样。
很女子很弓虽大
9楼2012-04-20 17:56:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhs4276689

木虫 (正式写手)

引用回帖:
8楼: Originally posted by lurencyj at 2012-04-20 17:55:50:
楼主能不能表述的清楚一点呢? 大小写也区分一下。F1和f是不是一样?

我刚开始结合matlab,但还急需解决实际问题,所以现在是边求教边自学,呵呵。

我说的意思是:
现在有两个关于A和B的隐式方程f1(A,B)、f2(A,B),我将其联立,最终求出A,B
设想的步骤是:给A、B赋初值,分别是A*,B*,经过计算后,通过某一判定条件判断其合理性,如不合适,改变A*和B*,比如都减去一个很小的量x,如此循环,最终获得合适的A、B值。
10楼2012-04-20 18:39:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhs4276689 的主题更新
信息提示
请填处理意见