【スマホでPython数学】 第6章 solve(ソルブ)命令で方程式をじゃんじゃん解いてみる!

前章で連立方程式の解法を少しだけやりましたが、今回はSympyモジュールのsolve(ソルブ)命令を使って、じゃんじゃん方程式の解を求めてみましょう!

1.まずは関数の定義

学校の教科書から方程式を探してみてください。
それでは以下のように関数を定義してください。いわゆる方程式の「$${=0}$$」となるところは必要ありません。関数の部分だけで結構です。

from sympy import *
var('x')

f1 = x**2 -3*x +2
f2 = (x-3)*(x+1)*(x+3)
f3 = x**3 +2*x**2 -23*x -60
f4 = 2*x**4 +11*x**3 +16*x**2 +x -6
f5 = sin(x)

ここまで入力できたでしょうか?
ちなみに、それぞれの関数をきれいに表示する機能がJupyterには備わっていて、以下のように関数を記載してから、shift(⇑)+ enterキーでプログラムを走らせると、きれいな数式が出力されます。

2.Solve(ソルブ)関数で方程式を解いてみよう!

一つずつの関数について、solve命令で解を求めよう。

solve(f1)

$${x = 1, 2}$$

solve(f2)

$${x = -3, -1, 3}$$

solve(f3)

$${x = -4, -3, 5}$$

solve(f4)

$${x = -3, -2, -1, 1/2}$$

solve(f5)

$${x = 0, pi}$$

並べてsolve命令を書いてしまうと、最後の解だけが表示されます。並べて書きたいときは、print(プリント)命令を使うといいです。
print命令はSympyモジュール内の命令ではなく、Pythonの基本命令なので、覚えておくと良いです。

print(solve(f1), solve(f2), solve(f3), solve(f4), solve(f5))

print(プリント)命令はよく使います。数字を使う場合は(カッコ)の中にそのまま表示する数字や文字、変数を入れます。文字列を入れる場合は(カッコ)の中に'○○'(クォーテーション)で囲みます。

print(1+1)
print('1+1')
print('こんにちは')

4.xとyを使った連立方程式を解いてみよう

この章では、$${x}$$と$${y}$$の2つの変数を使った連立方程式を解いてみたいと思います。2つの変数ですので、var命令で$${x}$$と$${y}$$を変数として宣言する必要があります。また、どの変数で解を選るかを宣言する必要があります。連立方程式の型としては、前の章のように「f1-f2」ではなく、「solve([f1, f2], [x, y])」とすると、複数の関数の場合でも「solve([f1, f2, …], [x, y, …])」とできるので便利です。

from sympy import *
var('x y')

f1 = 3*x+ 2*y +3
f2 = -x+ 3*y -1
solve([f1,f2],[x,y])

$${x = -1, y = 0}$$が解になります。

4.二次方程式の解の公式

高校では二次方程式の解法として、公式を使うやり方もあります。ここではPythonで公式を求めてみましょう。この場合、変数は$${x}$$のみなのですが、a, b, cも変数として宣言しておきます。その際にsolve命令がどの変数で解を求めれば良いか分からなくなってしまうので、「solve(f1, x)」という型で、「,x」とすることで$${x}$$で解くことを宣言しています。

from sympy import *
var('x a b c')

f1 = a*x**2 + b*x + c
solve(f1,x) 

見慣れた二次方程式の解の公式になります。

演習1
 $${x^2+x−2 = 0}$$
 $${x^3−5x^2−x+5 = 0}$$
 $${x^5−5x^4−3x^3+29x^2+2x−24 = 0}$$

演習2
 $${2x -3y +6 = 0}$$と$${3x -2y +2 = 0}$$の連立方程式の解は?
 $${x + y = 3}$$と$${x × y = 0}$$の連立方程式の解は?

まとめ

何でもsolve命令で解を求められますので、便利に使ってみてください。

解答

演習1

f1 = x**2+x-2
f2 = x**3-5*x**2-x+5
f3 = x**5-5*x**4-3*x**3+29*x**2+2*x-24
solve(f1)

$${x = -2, 1}$$

solve(f2)

$${x = -1, 1, 5}$$

solve(f3)

解は$${x = -2, -1, 1, 3, 4}$$

演習2

$${x + y = 3}$$は$${x + y - 3 = 0}$$に変更しておきます。

f4 = x + y -3
f5 = x * y
solve([f4,f5],[x,y])

解は$${(x,y) = (0, 3),(3, 0)}$$


この記事が気に入ったらサポートをしてみませんか?