FrontPage

2011/06/17からのアクセス回数 3284

ここで紹介したSageワークシートは、以下のURLからダウンロードできます。

http://www15191ue.sakura.ne.jp:8000/home/pub/5/

また、Sageのサーバを公開しているサイト(http://www.sagenb.org/, http://www15191ue.sakura.ne.jp:8000/)にユーザIDを作成することで、ダウンロードしたワークシートを アップロードし、実行したり、変更していろいろ動きを試すことができます。

方程式の解法

数式処理システムで使いたい機能の一つに、方程式の解法があります。

方程式の解法にはsolve関数を使用します。solve関数の呼び出し形式は以下の通りです。

solve(解きたい方程式また方程式のリスト, 解を得る変数)			

一次方程式の解

以下の一次方程式をsolveを使って解いてみましょう。 $$ f(x)=2x+1 $$ solverの戻り値は、解のリストです。一次方程式では1個の解、\(x = −\frac{1}{2}\) が得られます。

sageへの入力:

# 一次方程式の解法
var('x')
f = 2*x + 1
sol = solve(f, x); view(sol)

out1.png

一次方程式のグラフ表現

先のf(x)をyとすると、直線の式が得られます。 $$ y = 2x + 1 $$

この直線をプロットしてみると、以下のようになります。 直線とX軸が交わる点が、方程式の解になっていることがわかります。

sageへの入力:

# 一次方程式のグラフ
plot(f, [x, -2, 2])

out2.png

2次方程式

同様に、以下の2次方程式について見てみましょう。 $$ f(x) = x^2 + x - 1 $$

f(x)の定義と因数分解の結果を表示します。

sageへの入力:

# 2次方程式
f = x^2 + x - 1
view(factor(f))

out3.png

2次方程式の解とグラフ表現

solve関数の解は、2個の実数が求まります。

この場合のグラフは、X軸で交わる点が2個存在します。

sageへの入力:

# 2次方程式の解
sol = solve(f, x); view(sol)

out4.png

sageへの入力:

# 2次方程式のグラフ
plot(f, [x, -2, 2])

out5.png

重根の場合

2次方程式の解が同じ値を持つ場合(重根)の場合には、X軸との交点が1個となります。

重根の場合、解をaとすると因数分解の形は、以下のようになります。 $$ f(x) = (x -a)^2 $$

sageへの入力:

# 重根の場合
f = x^2 - 2*x + 1
view(factor(f))

out6.png

sageへの入力:

# 2次方程式の解(重根の場合)
sol = solve(f, x); view(sol)

out7.png

sageへの入力:

# 2次方程式のグラフ(重根の場合)
plot(f, [x, -2, 2])

out8.png

複素数の場合

2次方程式の解が複素数の場合には、グラフはX軸と交わりません。

sageへの入力:

# 複素数
f = x^2 + x + 1
view(factor(f))

out9.png

sageへの入力:

# 2次方程式の解
sol = solve(f, x); view(sol)

out10.png

sageへの入力:

# 2次方程式のグラフ
plot(f, [x, -2, 2])

out11.png

多項式と数値解

多項式の例として、以下の3次多項式をみてみましょう。 $$ f(x) = x^3 - 2 x + 4 $$

solveの結果は、1個の実数と2個の複素数が求まります。ここから予想されるグラフの形は、X軸と交わる点が1個の3次曲線です。

このように関数の解を求めたり、グラフと解の関係を理解する上で、Sageはとても有効です。

sageへの入力:

# 3次方程式
var('x')
f = x^3-2*x+4
view(factor(f))

out12.png

sageへの入力:

# 3次方程式の解
sol = solve(f, x); view(sol)

out13.png

sageへの入力:

# 3次方程式のグラフ
plot(f, -2.5, 2.5)

out14.png

数値解法

solveが解析的に解を求めたのに対し、与えられた範囲で解となる点を数値解法で求める 関数が、find_rootです。

find_rootの呼び出し形式は以下の通りです。fには1変数の関数を与えます。

find_root(f, 計算開始点, 計算終了点)

先の関数f(x)をfind_rootで求めると、解析解(x = 2)に非常に近い値が求まります。 $$ f(x) = x^3 - 2 x + 4 $$

sageへの入力:

# グラフから-3から3の範囲で数値解を求める
find_root(f, -3, 3)

sageの出力:

-1.9999999999999949

連立方程式

連立方程式の解とグラフの関係をSageを使ってみてみましょう。

先に解いた一次方程式と2次方程式を1つの連立方程式にして解いてみましょう。 $$ \left\{ \begin{eqnarray} y & = & 2 x + 1 \\ y & = & x^2 + x - 1 \end{eqnarray} \right. $$

方程式のリストをsolve関数に与えることで、連立方程式の解を得ることができます。

グラフから1次曲線と2次曲線の交点(-1, -1), (2, 5)が、連立方程式の解となっていることが分かります。

sageへの入力:

var('x y')
eq = [y == 2*x + 1, y == x^2 + x - 1]
# 解を求める
view(solve(eq, [x, y]))
# グラフから解を求める
p1 = plot(x^2 + x - 1, [x, -2, 3])
p2 = plot(2*x + 1, [x, -2, 3])
(p1+p2).show(ymin=-3, ymax=8)    # 不等号の例と描画範囲を合せた

out15.png

不等式とグラフ

region_plot関数を使うことで不等式の範囲をグラフで表示することができます。

region_plotの引数には、xとy2変数の関係式または2変数を引数に持つ関数とx変数とy変数の 描画範囲を指定します。

以下に1次不等式の例を示します。 $$ y \le 2 x + 1 $$

sageへの入力:

(x, y) = var('x y')
f(x, y) = y <= 2*x + 1
region_plot(f(x, y), [x, -2, 3], [y, -3, 8])

out16.png

incol, outcolで領域内、領域外の色を指定したり、bordercolで境界線の色を指定することができます。

以下では、2次不等式にincolに薄い青、境界線に灰色を指定して表示した例を示します。 $$ y > x^2 + x -1 $$

sageへの入力:

g(x, y) = y > x^2 + x - 1
region_plot(g(x, y), [x, -2, 3], [y, -3, 8], incol='lightblue', bordercol='gray')

out17.png

連立不等式のグラフ

region_plotに複数の式または関数をリストで与えることによって、連立不等式の 範囲を表示することができます。

以下に、先の2つの不等式を組み合わせた連立不等式の例を示します。 $$ \left\{ \begin{eqnarray} y & \le & 2 x + 1 \\ y & > & x^2 + x - 1 \end{eqnarray} \right. $$

sageへの入力:

region_plot([f, g], [x, -2, 3], [y, -3, 8])

out18.png

コメント

選択肢 投票
おもしろかった 4  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


添付ファイル: fileout18.png 519件 [詳細] fileout17.png 534件 [詳細] fileout16.png 464件 [詳細] fileout15.png 553件 [詳細] fileout14.png 569件 [詳細] fileout13.png 534件 [詳細] fileout12.png 525件 [詳細] fileout11.png 489件 [詳細] fileout10.png 559件 [詳細] fileout9.png 530件 [詳細] fileout8.png 526件 [詳細] fileout7.png 529件 [詳細] fileout6.png 523件 [詳細] fileout5.png 541件 [詳細] fileout4.png 533件 [詳細] fileout3.png 536件 [詳細] fileout2.png 554件 [詳細] fileout1.png 535件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-25 (水) 16:59:18 (512d)
SmartDoc