最近、いつ泣きましたか?

Maple10を利用して漸化式を解くにはどうすればいいのでしょうか?
たぶんfor文やif文を使うとは思うんですがプログラミング自体が苦手なので全然考えが浮かんできません。
今まで考えて出来たところまで載せますのでわかる人いましたら続き・または新しいものを教えて下さい。
kを0から5までで動かしたときに
Z1(0,t)~Z1(5,t)までの値がeとtとλで表される答えが欲しいです。
どうかよろしくお願いします。
(Σのところですが・・・xが1~5までの値を取るという意味です。うまい書き方がなかったので下記のようになりました。)

for k from 0 to 5 do
   
Z1(k,t):=Σ(x=1→k) λ(t-(k-1)T)^x/(x!) e^-(λ-(k-1)T)*Z1(k-x,(k-1)T
end do;

A 回答 (4件)

#1です。


Mapleでどうプログラムするのかということが目的ですので、その一例を示します。

k:=5:Z1(0):=exp(-lambda*t):for m from 1 to k do s:=0:for x from 1 to m do s:=s+(lambda*(t-(m-1)*T))^x*exp(-lambda*(t-(m-1)*T))*Z1(m-x)/x! od:Z1(m):=factor(s) od;

これをCopy&Pasteして実行すれば式の形で出てきますが、yabaissuさんの結果と合いません(私の式が間違っているかもしれません)。

なお、上のコマンドはZ1が1変数の場合としていますが、2変数でt=(k-1)*Tとする場合は以下のようにすればいいと思います(そうすると、前にも書いたように全部ゼロになってしまいます)。

k:=5:Z1(0):=exp(-lambda*t):for m from 1 to k do s:=0:for x from 1 to m do t:=(m-1)*T:s:=s+(lambda*(t-(m-1)*T))^x*exp(-lambda*(t-(m-1)*T))*Z1(m-x)/x! od:Z1(m):=factor(s) od;
    • good
    • 0

#1です。


関数の形は了解しました(λは^xからはずれているわけですね)。
ところで関数Z1ですが、明示する独立変数をkだけにして、Z1(k)=Σ...Z1(k-x)としてはダメですか?もしそれでいいのなら、Z1(1)から順次計算していけば

Z1(1)=λ*t*exp(-λ*t)*Z1(0)*T
Z1(2)=λ/2*(t-T)exp(t-T)*Z1(0)*T*[t-T*2*λ*t*T*exp(-λ*t)]
Z1(3)=λ/6*(t-2*T)exp(t-2*T)*Z1(0)*T*[...]
...
Z1(5)=λ*(t-4*T)/5!*exp[-λ(t-4*T)]*Z1(0)*T*α
α=f1*exp(-λ*T)+f2*exp(-λ*(t-T))+f3*exp(-λ*(2*t-T))+...f5*exp(-λ*(4*t-T))
f1,..f5はλ,t,Tの多項式ですが、相当複雑なのでここには書ききれません。

となりますが、初期値がZ1(0)=0なら、全部Z1(0)がかかっているので、Z2(1)=Z1(2)=..=0となってしまいます。

この回答への補足

返答ありがとうございます。
またまたこちらのミスでλも^xがかかります(λ^xになります)
それともう1つミスがありまして
Z1(0,t)=exp(-λt)
でした。失礼しました。(Z1(0,0)=1になります。)

出来れば今まで通りの形でいきたいと思っています。
普通に計算してみると
k=1,2のときの値は
Z1(1,t)=λt*exp(-λt)
Z1(2,t)=λ(t-T)*exp(-λ(t-T))*λT+(1/2)*[{λ(t-T)}^2]*exp(-λ(t-T))*exp(-λT)

になります。
このような結果を出せるプログラミングが理想です。
お手数かけますがよろしくお願いします。

補足日時:2007/01/20 19:51
    • good
    • 0

#1です。


>Sum((1/x!)*((λ(t-(k-1)*T)^x)*exp(-λ(t-(k-1)))*Z1(k-x,(k-1)*T),x=0,5)

この式は括弧の数が合いませんが、λもx乗するのではありませんか?そのほうが式としてスッキリするのですが(expの中と一致するので)。

xの和を取るという表記に違和感があるので、式を書き直すと

Z1(k,t)=Sum[An*Z1[k,(k-1)*T],n=0..5)]
ただし、An=[λ*(t-(k-1)*T)]^n*exp[-λ*(t-(k-1)*T)]/n!

となりますが、t=(k-1)*TのときAn=0、つまりZ1(k,(k-1)*T)=0となって、Z1(k,t)は常にゼロということにならないでしょうか。

ちなみに、この再帰方程式はMapleでは一般解が出ませんでした(再帰方程式を解いた経験があまりないので他に方法があるのかもしれません)。

この回答への補足

失礼しました。
もう一度書き直しますのでご検討お願いします。
Σの範囲は最後に載せます。

Z1(k,t)=Σ(1/x!)*[λ{t-(k-1)*T}^x]*exp{-λ[t-(k-1)*T]}Z1(k-x,(k-1)*T)
Σの範囲:x=1,k
Z1(0,t)=0

求めてもらいたいのは k=5 のときです。
上記の補足では曖昧な部分が多々あって申し訳ありませんでした。
もう一度、ご検討してもらえると幸いです。
よろしくお願いします。

補足日時:2007/01/20 13:56
    • good
    • 0

Mapleを使っています。

今使っているPCにも入っています。
漸化式(再帰方程式)を解くコマンドはrsolveですが、関数がはっりきりしない(指数の範囲が不明)のでこちらでも計算できません。
関数はこれ↓ですか?

Sum(lambda*(t-(k-1)*T)^x/x!*exp(-(lambda-(k-1)*T))*Z1(k-x,(k-1)*T),x=0..5)

λ(lambda)は定数ですか?Tとtは別物ですか?
Mapleの式を教えてください。

この回答への補足

早速の回答ありがとうございます。

λは定数です。
Tとtは別物です。

関数が見にくくてすみません。
もう一度書き直します。

Sum((1/x!)*((λ(t-(k-1)*T)^x)*exp(-λ(t-(k-1)))*Z1(k-x,(k-1)*T),x=0,5)

それとZ1(0,t)=0です。

よろしくお願いします。

補足日時:2007/01/19 23:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!