プロが教える店舗&オフィスのセキュリティ対策術

Maximaの初心者です。 お手数ですがMaximaの使い方を、ご教示願います。

制御の教科書に出てくる、簡単な閉ループの伝達関数の式を計算したいのですが、Maximaではどのようにしたら求められるのでしょうか?


y=e*C*P;
e=r-y;

y=(r-y)*C*P; --> y(1+C*P)=r*C*P --> y/r=(C*P)/(1+C*P)

なお、この計算は手でも出来ますが、複雑なブロックの場合はやはり、Maximaに任せたいのです。
お手数ですが、よろしくお願いいたします。

A 回答 (2件)

#1です。



A#1の補足の質問
>どのようにしたら、次式のような回答を得られるか、アドバイスいただけないでしょうか?
>y=C*P*r/(1+C*P) + d/(1+C*P)

この式はeが消去されyがrの式になっていますので連立方程式を[y,e]について解けば良いでしょう。そしてyを部分分数に展開しておけば良いだけ。

f1:y=e*C*P+d;
f2:e=r-y;
A:solve([f1,f2],[y,e])$
expand(A[1][1]);
    • good
    • 0
この回答へのお礼

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

helpを調べて、自分自身で解決しようとして、失敗していたのですが、いただいたアドバイスで、やり方がやっと理解できました。

ありがとうございました。

お礼日時:2010/09/06 22:54

-->の後に以下の式を入力し[shift+Enter]を押せば途中計算を含め出力してくれます。



f1:y=e*C*P;
f2:e=r-y;
f3:ev(f1,f2);
solve(f3,y)[1];
A:solve([f1,f2],[y,r])$
A[1][1]/A[1][2];
    • good
    • 0
この回答へのお礼

info22_様

早速のアドバイスありがとうございます。
Helpやマニュアルを読んだだけでは、分からなかった事が、少し分かってきました。
教えていただいたコマンドを、少し修正すると、望んでいた答えが得られました。
f1:y=e*C*P;
f2:e=r-y;
A:solve([f1,f2],[y,r])$
ratsimp(A[1][1]/A[1][2]);

これができたら、次のステップとして以下の計算を行いたいと考えています。
y=e*C*P+d;
e=r-y
答えは、y=C*P*r/(1+C*P) + d/(1+C*P)

以下のように式を変えてみたのですがうまくいきません。

f1:y=e*C*P+d;
f2:e=r-y;
A:solve([f1,f2],[y,r])$
ratsimp(A[1][1]/A[1][2]);

(%o42) y/r=(e*C*P+d)/(e*C*P+e+d)

どのようにしたら、次式のような回答を得られるか、アドバイスいただけないでしょうか?
y=C*P*r/(1+C*P) + d/(1+C*P)

お礼日時:2010/09/05 21:19

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