[PR] この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。
前回、数式の展開計算、因数分解などを紹介しました。今回は、数式を代入したり、整理したりする一般的な計算や、 連立方程式を解いたりしてみることにしましょう。
関数 F(X,Y)=(X+Y)^2 + 2*X + Y なるものに、X=3、Y=2 を代入したときの計算をしてみる。まず、関数をていぎしましょう。 関数の定義は、定義記号 := を使います。等号 = にコロン : を組み合わせたものです。 関す定義から、数値代入までを一気にしてみましょう。
(%i1) F(X,Y):=(X+Y)^2 + 2*X + Y; ※ 関数を定義する
2
(%o1) F(X, Y) := (X + Y) + 2 X + Y ※ 関数を定義されました!
(%i2) F(3,2); ※ 関数に代入します
(%o2) 33 ※ 関数値を計算しました
数値を代入するレベルでは簡単すぎますね。では、数式を代入してみましょう。X に 3a+b を、Y に 2a-5b を代入してみましょう。 これは、関数の変数部にそれぞれの値を入れてやるだけで、Maxima が計算してくれます。 F(3a+b, 2a-5b) だけで良いのですからね。注意する点は 係数と変数の間に乗算記号 * を入れるところだけです。
(%i3) F(3*a+b,2*a-5b); ※ 関数に代入します
2
(%o3) 2 (b + 3 a) - 5 b + (5 a - 4 b) + 2 a ※ 代入してくれました
さらに展開してみましょう。expand コマンドを使えばよいのは分かっていますね。
(%i4) expand(%o2); ※ 前の出力式をそのままつかうときは式の番号 %o2 を入れます
2 2
(%o4) 16 b - 40 a b - 3 b + 25 a + 8 a ※ 展開・整理してくれました
これくらいの計算であれば、計算ミス無しに筆算で答えを出すのは大変です。Maxima はどんなに複雑になっても大丈夫ですから。
方程式は中学校で習ったものですが、当然、Maxima でも計算してくれます。このとき使うのは、solve コマンドです。
(%i5) solve(2*x + 3 =0 ,x); ※ 最も簡単な一元一次方程式から
3
(%o5) [ x = - - ] ※ 分数で答えを出してくれました
2
このレベルなら中学生でも出来ますね。では、2次方程式はどうでしょうか?
(%i6) solve(2*x^2 + 3*x - 5 = 0 ,x); ※ 一元二次方程式では
5
(%o6) [ x = 1, x = - - ] ※ 分数で答えを出してくれました
2
二次方程式だから、解は2つ出てきました。実数解以外はどうなるのでしょうか? 虚数解になる二次方程式を入れて見ましょう。当然、これも解いてくれます。
(%i7) solve(2*x^2 + 3*x + 5 = 0 ,x); ※ 虚数解になる二次方程式では
SQRT(31) %I + 3 SQRT(31) %I - 3
(%o7) [x = - ---------------, x = ---------------] ※ %I が虚数単位記号
4 4
なお、SQRT は平方根記号のことです。Maximaは 虚数解まできちんと解けるのですね。 3次方程式は全て解が求められると数学の先生に聞いたのですが、Maxima は、3次方程式が解けるでしょうか?
(%i8) solve(2*x^3 + 4*x^2 + 4*x +2 = 0 ,x); ※ 3次方程式は解けるか?
SQRT(3) %I + 1 SQRT(3) %I - 1
(%o8) [x = - --------------, x = --------------, x = - 1]
2 2
係数がどんなに複雑でも同じです。簡単に計算してくれますね。
では、連立方程式を解いてくれるのでしょうか?
当然、解いてくれます。数値係数の中学校レベルの連立方程式から、
高校レベルの文字係数の連立方程式でも、どちらでもOKです。
[問題] 質量が m と 2m の2つの物体が糸で連結し滑車にかけられている。静かに手を離すとき、両物体の加速度と糸の張力を求めなさい。なお、重力加速度が g であるとする。
上の問題は物理分野の 「運動方程式を扱う問題」 です。全て、文字係数となっているので、中学生にはできません。 Maximaは、糸の張力と加速度を求めることができるでしょうか。Maximaに計算させて見ましょう。 最初に2つの物体の運動方程式を作り、Maximaに渡してみましょう。糸の張力は T 、加速度が a です。
(%i9) solve([T - m*g = m*a, 2*m*g - T = 2*m*a], [a,T]); ※ 文字係数の連立方程式は解けるか
g 4 g m
(%o9) [[a = -, T = -----]] ※ 見事に解けました。文字の順はご愛嬌ですね!
3 3
1秒もかからないのです。あっという間に、糸の張力と加速度を求めてくれました。 上の問題は、未知数が2つで、係数も簡単ですから手で求めてもそれほど大変ではありません。 しかし、キルヒホッフの法則を使う問題などでは未知数が多くなり、手で計算するには大変です。 この様な場合では、Maximaは大いに威力を発揮するでしょう。
ページの都合もあり、これくらいにしておきましょう。次回は、三角関数などを取り上げてみましょう。お楽しみに。
前回と含めて2回に渡って紹介してきた 数式処理システム 「Maxima」 ですが、一度入手して利用してみてはいかがでしょうか。 マニュアルなどはPDF文書で入手可能ですので、詳しく読めば相当なレベルの数式処理が可能になります。