数式処理プログラム MAXIMA については、このような紹介があります。 http://phe.phyas.aichi-edu.ac.jp/~cyamauch/maxima/ http://www.interq.or.jp/mars/cherry/maxima/ ダウンロード先はこちらです。 http://maxima.sourceforge.net/download.shtml 普通のプログラミング言語とは少し雰囲気が違います。 "=" は代入操作を表すのではなく、 あくまでも式の両辺が等しいという意味に使います。 つまり方程式の宣言になります。 代入操作は ":" で表します。 ● まずは f1, f2 という方程式を定義します。 f1 : fs = 1/(2 * %PI * sqrt(Lm * Cm)) $ f2 : fp = 1/(2 * %PI * sqrt(Lm * Cm * Cs / (Cm + Cs))) $ 次に式を Lm = ・・・ の形に変形、つまり方程式を solve() で解かせます。 fortran() というのは、FORTRAN の書式で結果を書け、という意味です。 fortran(solve(f1, Lm));  fs が正か負か聞かれるので、positive; と答えます。  [Lm = 1/(%PI**2*Cm*fs**2)/4.0] という結果が得られます。 fortran(solve(f2, Lm));  これも fp が正か負か聞かれるので、positive; と答えます。  [Lm = (Cs+Cm)/(%PI**2*Cm*Cs*fp**2)/4.0] という結果が得られます。 これで Lm を消去した方程式が作れますから、それを f3 として定義し、 f3 を Cm について解きます。 f3 : 1/(%PI**2*Cm*fs**2)/4.0 = (Cs+Cm)/(%PI**2*Cm*Cs*fp**2)/4.0 $ fortran(solve(f3, Cm));  [Cm = -(Cs*fs**2-Cs*fp**2)/fs**2] という結果が得られます。 これで数値計算をする準備ができました。 ● 実際の数値を定義します。 fs : 439550 $ fp : 455000 $ Cs : 270e-12 $ Cm の数値を計算すると共に、Cm を数値で定義し直します。 Cm : ev(-(Cs*fs**2-Cs*fp**2)/fs**2);  1.931435898761053E-11 という結果が得られます。 同様に Lm の値を計算します。 %PI という定数が入っているので、この場合は ev() でなく float() を使う必要があります。 Lm : float(1/(%PI**2*Cm*fs**2)/4.0);  0.00678802440886 という結果が得られました。 変数の定義が段階に応じて変わっています。そのまま他の操作をすると、思いも かけない結果が出てしまうことがあります。 このような場合はメニューバーの Maxima → Clear memory → Kill all という操作を行ったほうが安全です。 連立方程式を一挙に解かせる方法も試してみたのですが、うまくいきません。 一次連立方程式でないと解けないのかもしれません。 ● 後日、某掲示板の MAXIMA スレッドにリンクを張ったら、次のような回答をいただきました。 どうもありがとうございました。 「  名前:GO MAXIMA :2005/09/21(水) 02:07:11 solveは多項式の連立を解くためのものですから sqrtを含んでいてはいけません。以下のようにすれば 一度に求まります。 (%i1) f1:fs^2=1/(4*%pi^2*Lm*Cm)$ (%i2) f2:fp^2=1/(4*%pi^2*Lm*Cm*Cs/(Cm+Cs))$ (%i3) solve([f1,f2],[Lm,Cm]); (%o3) [[Lm = -1/(4*%PI^2*Cs*fs^2-4*%PI^2*Cs*fp^2), Cm = -(Cs*fs^2-Cs*fp^2)/fs^2 」