フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2007-8-27 1:16 |
Webmaster ![]() ![]() 登録日: 2004-11-7 居住地: 投稿: 3110 |
Maxima超便利 消去法では限界が出てきたので連立方程式を解くのに以前紹介されたMaximaを使ってみることに。
まず連立方程式をたてる。R1を流れる電流をI1,検流計(Rg)を流れる電流をIgとして全体を流れる電流をIとした場合、キルヒホッフの法則から以下が成り立つ。 E = I1*R1 + (I1 - Ig)*R2 E = (I - I1)*R3 + (I - I1 + Ig)*R4 E = I1*R1 + Ig*Rg + (I - I1 + Ig)*R4 E = (I - I1)*R3 - Ig*Rg + (I1 - Ig)*R2 この4つの式をMaximaに与えI,I1,Igを一気に解いてみる。 (%i34) e1: E=I1*R1+(I1-Ig)*R2; (%o34) E=(I1-Ig)*R2+I1*R1 (%i35) e2: E=(I-I1)*R3+(I-I1+Ig)*R4; (%o35) E=(-I1+I+Ig)*R4+(I-I1)*R3 (%i36) e3: E=I1*R1+Ig*Rg+(I-I1+Ig)*R4; (%o36) E=(-I1+I+Ig)*R4+I1*R1+Ig*Rg (%i37) e4: E=(I-I1)*R3-Ig*Rg+(I1-Ig)*R2; (%o37) E=(I-I1)*R3+(I1-Ig)*R2-Ig*Rg (%i38) solve([e1,e2,e3,e4],[I,I1,Ig]); Dependent equations eliminated: (2) (%o38) [[I=(E*((R3+Rg)*R4+Rg*R3)+E*R1*(R4+Rg)+R2*(E*(R3+Rg)+E*R1))/(R2*(R1*(R4+R3)+(R3+Rg)*R4+Rg*R3)+R1*((R3+Rg)*R4+Rg*R3)),I1= (E*((R3+Rg)*R4+Rg*R3)+E*R2*R3)/(R2*(R1*(R4+R3)+(R3+Rg)*R4+Rg*R3)+R1*((R3+Rg)*R4+Rg*R3)),Ig= (E*R2*R3-E*R1*R4)/(R2*(R1*(R4+R3)+(R3+Rg)*R4+Rg*R3)+R1*((R3+Rg)*R4+Rg*R3))]] 著者の解と分母の記述が異なる。著者の解は綺麗にRgの共通項が因数分解されて見やすいがMaximaで自動で因数分解すると分子は因数分解されるが分母は逆に展開され、おまけに負号が付いてしまっている。 factor(%); (%o39) [[I=(E*(R3*R4+R1*R4+Rg*R4+R2*R3+Rg*R3+R1*R2+Rg*R2+Rg*R1))/(R2*R3*R4+R1*R3*R4+R1*R2*R4+Rg*R2*R4+Rg*R1*R4+R1*R2*R3+Rg*R2*R3+Rg*R1*R3),I1= (E*(R3*R4+Rg*R4+R2*R3+Rg*R3))/(R2*R3*R4+R1*R3*R4+R1*R2*R4+Rg*R2*R4+Rg*R1*R4+R1*R2*R3+Rg*R2*R3+Rg*R1*R3),Ig=- (E*(R1*R4-R2*R3))/(R2*R3*R4+R1*R3*R4+R1*R2*R4+Rg*R2*R4+Rg*R1*R4+R1*R2*R3+Rg*R2*R3+Rg*R1*R3)]] これをRg, R1*R2, R3*R4の共通項を手で因数分解すると Ig = (R2*R3 - R1*R4)*E/(R2*R3*R4 + R1*R3*R4 + R1*R2*R4 + R1*R2*R3 + Rg*(R2*R4 + R1*R4 +R2*R3 + R1*R3)) = (R2*R3 - R1*R4)*E/(Rg*(R1 + R2)*(R3 + R4) + R1*R2*(R3 + R4) + R3*R4*(R1 + R2)) と著者の解と同じ結果が得られていることがわかる。 ちなみに著者の解は網目電流法で3つの閉回路について方程式をたててそれを解いている。同様にMaximaでその方程式を解かせてみると、 (%i53) e1: (R1+R3+Rg)*I1+(R1+R3)*I2-R3*I3=0; (%o53) I1*(R3+R1+Rg)+I2*(R3+R1)-I3*R3=0 (%i54) e2: (R1+R3)*I1+(R1+R2+R3+R4)*I2-(R3+R4)*I3=0; (%o54) I2*(R4+R3+R2+R1)+I3*(-R4-R3)+I1*(R3+R1)=0 (%i55) e3: -R3*I1-(R3+R4)*I2+(R3+R4)*I3=E; (%o55) I3*(R4+R3)-I2*(R4+R3)-I1*R3=E (%i56) solve([e1,e2,e3],[I1,I2,I3]); (%o56) [[I1=(E*R2*R3-E*R1*R4)/(R3*(R1*(R4+R2+Rg)+R2*R4+Rg*R2)+R1*(R2*R4+Rg*R4)+Rg*R2*R4),I2= (R3*(E*R4+Rg*E)+E*R1*R4+Rg*E*R4)/(R3*(R1*(R4+R2+Rg)+R2*R4+Rg*R2)+R1*(R2*R4+Rg*R4)+Rg*R2*R4),I3= (R3*(E*R4+E*R2+Rg*E)+R1*(E*R4+E*R2+Rg*E)+Rg*(E*R4+E*R2))/(R3*(R1*(R4+R2+Rg)+R2*R4+Rg*R2)+R1*(R2*R4+Rg*R4)+Rg*R2*R4)]] Ig=I1なので Ig = I1 =(E*R2*R3-E*R1*R4)/(R3*(R1*(R4+R2+Rg)+R2*R4+Rg*R2)+R1*(R2*R4+Rg*R4)+Rg*R2*R4) これも同様に手で因数分解すると Ig = (R2*R3 - R1*R4)*E/(R3*R1*R4 + R3*R1*R2 + Rg*R3*R1 + R3*R2*R4 + Rg*R2*R3 + R1*R2*R4 + Rg*R4*R1 + Rg*R2*R4) = (R2*R3 - R1*R4)*E/(Rg*(R1 + R2)*(R3 + R4) + R1*R2*(R3 + R4) + R3*R4*(R1 + R2)) とこれも著者の解と同じ結果が得られていることがわかる。 Maximaを使えば面倒な連立方程式を解くのも一瞬だし、行列式とかも扱う必要は無い。連立方程式はたてて、あと見やすいように手で因数分解して整理すればよい。 今回Maximaは以前本屋で見つけたブルーバックスの「はじめての数式処理ソフト」に付録で付いているCD-ROMからインストール。 ![]() かなりオススメ。 これでかなり後続の問題を解くのが楽しみに。著者の解答例だとすべからく連立方程式の解を行列式で解いている。行列式も今後当たり前に教科書に出てくるのでいずれ習得しないといけないが。慣れの問題である。今から行列式に慣れていれば後の回路解析理論についていけるとの配慮だろう。 |
フラット表示 | 前のトピック | 次のトピック |

投稿するにはまず登録を | |