楼主: 烈女乖乖
5243 27

[问答] 请高手帮我看下这个简单的迭代计算程序 [推广有奖]

21
烈女乖乖 发表于 2012-3-10 17:16:46
lustboy 发表于 2012-3-10 16:26
程序里的这个等号是赋值的意思,也就是说把等号右边的结果赋给左边的变量。
所以,等号左边不能出现函数操 ...
今天自己又编写了一个小的运算程序,是这样的:
a(2)=0.2174;
for t=1:23;
x(t+2)=2.3823*br(t+1)-2.1393*(-0.000139+0.021936*br(t)-0.5)*(0.000253-0.009827*br(t)-0.5);
a(t+2)=0.3958*a(t+1)+exp(x(t+2));
end
运算结果没有什么问题,就是需要做点修改,请教下您,就是我这个a(2)实际上是个行向量,有21个分量,这里的0.2174实际上是第一个分量,也就是其实我有21个初始值,我自己计算的时候是把每个初始值都带一遍,这样特别麻烦,但是下面是个循环程序,初始值为向量的赋值方法我不会,请问您能懂我的意思么?能帮我解决一下么?万分感谢!


22
lustboy 发表于 2012-3-10 18:34:30
说实话,没看懂你啥意思,你最好把原始问题也一起说清楚。
现在的程序里,br没有赋初值,x都是零。a不会变。

23
烈女乖乖 发表于 2012-3-10 19:02:16
烈女乖乖 发表于 2012-3-10 17:16
今天自己又编写了一个小的运算程序,是这样的:
a(2)=0.2174;
for t=1:23;
你好,我的br赋值了,我忘记贴上来了,是这样的:
br=zeros(24,1);
a(2)=0.2174;
for t=1:23;
x(t+2)=2.3823*br(t+1)-2.1393*(-0.000139+0.021936*br(t)-0.5)*(0.000253-0.009827*br(t)-0.5);
a(t+2)=0.3958*a(t+1)+exp(x(t+2));
end

我的意思就是,我的这个程序是为了求得a,最终a有23个值(从a(3)到a(25)均可以得到)。但是实际情况是,我每次运算这个程序,都要带入不同的a(2)的值,这里我带入的是0.2174,我一共有21个需要带入,我的做法就是每次运行程序就修改一下a(2)的值,这样做21遍,我感觉太麻烦,每一个a(2)对应求出23个a的值,那么如果能够一次带入a(2)的21个值,每个值对应得到的a,最终能够直接得到a类似于一个23行21列的矩阵,即每一个a(2)对应a的一列!
不好意思,我的表达能力也不太好,不知道您能不能看明白,嘿嘿!~

24
烈女乖乖 发表于 2012-3-10 19:02:51
lustboy 发表于 2012-3-10 18:34
说实话,没看懂你啥意思,你最好把原始问题也一起说清楚。
现在的程序里,br没有赋初值,x都是零。a不会变 ...
你好,我的br赋值了,我忘记贴上来了,是这样的:
br=zeros(24,1);
a(2)=0.2174;
for t=1:23;
x(t+2)=2.3823*br(t+1)-2.1393*(-0.000139+0.021936*br(t)-0.5)*(0.000253-0.009827*br(t)-0.5);
a(t+2)=0.3958*a(t+1)+exp(x(t+2));
end

我的意思就是,我的这个程序是为了求得a,最终a有23个值(从a(3)到a(25)均可以得到)。但是实际情况是,我每次运算这个程序,都要带入不同的a(2)的值,这里我带入的是0.2174,我一共有21个需要带入,我的做法就是每次运行程序就修改一下a(2)的值,这样做21遍,我感觉太麻烦,每一个a(2)对应求出23个a的值,那么如果能够一次带入a(2)的21个值,每个值对应得到的a,最终能够直接得到a类似于一个23行21列的矩阵,即每一个a(2)对应a的一列!
不好意思,我的表达能力也不太好,不知道您能不能看明白,嘿嘿!~

25
lustboy 发表于 2012-3-10 23:59:25
还是没搞懂你的意思,a要是矩阵的话,需要用两层嵌套的循环控制。
另外,你的br都是零,x也都是零,因而a(t+2)=0.3958*a(t+1)+exp(0)。
似乎你想递归br,a还有x,但你的程序里br没有递归。
你最好找个明白人当面交流吧。

26
烈女乖乖 发表于 2012-3-12 15:48:04
lustboy 发表于 2012-3-10 23:59
还是没搞懂你的意思,a要是矩阵的话,需要用两层嵌套的循环控制。
另外,你的br都是零,x也都是零,因而a( ...
好的,,,还是非常感谢你啊,,耽误你这么久时间为我解答问题!!!谢谢!!!

27
lustboy 发表于 2012-3-12 19:04:30
客气了,我能力不济,没帮到你什么,你找个人面谈,可能收获会比较直接。

28
jyliao 发表于 2012-3-12 19:18:55
zs=zeros(23,1);
hs=zeros(24,1);
hs(1)=3;
for t=1:23;
    zh = zs(t)/sqrt(hs(t));
    hs(t+1)=-0.86+0.9*hs(t)+0.4*zh + 0.03*zh;
end;
提醒你,zs(t) =0, zh =0, 後面兩項可以合併,而且可以去掉

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 07:39