学生の時は大嫌いだったのに、歳をとると数学・統計とかを勉強してみたくなる。
前も書きましたが、これは文系出身者の病気みたいなもんです。
この病気にかかる人は意外に多いみたいで、大人が数学を勉強しなおすための本はたくさん出版されてますし、紹介している情報も同様です。
自分も何回か罹患しました(笑)
たいてい、一月ほどで治ります。
平易な日本語にすると、「飽きる(笑)」とか「メゲる」といいますが。
困ったことに、罹患するたびに本を買ったりするので、知らぬ間にたまってて、先日本棚を整理したら、何冊かそういう類の本と、必死に計算してるっぽいノートがでてきました。
それを見てると、どうも、いつも筆算で答えを求めるのがしんどくなって、パタッとやめているような傾向が見えます。
だったら、筆算やめてみたら続くかな?
ようするに問題が読めて答えがわかれば良いわけですから。
最初から、Pythonでやる方法を覚えたほうが、自分には手っ取り速いかもしれません。
まずは因数分解とか
最初に試したのは因数分解です。
こんなやつ。
$$9x^2−24xy+16y^2$$
この程度なら、暗算でもできますけど、あえてpythonでやってみます。
from sympy import Symbol from sympy import factor from sympy import pprint x = Symbol('x'); y = Symbol('y'); exp = 9 * x**2 - 24 * x * y + 16 * y**2; pprint(factor(exp));
pythonだと、9xのようには書けないので、「9*x」になり、xの2乗は「x**2」みたいな書き方になるので、上記式は「 9 * x**2 - 24 * x * y + 16 * y**2」となります。
sympyのfactorは、因数分解の答えを返してくれる関数です。
答えはこういう風に表示されます。
もう少しきれいな数式にすると。
$$(3x - 4y)^2$$
あはは、いい感じ。
次は二次方程式を解いてみる
例の解の公式ってやつを使うものです。
これですね。
$$x=\dfrac{-b\pm\sqrt{b^2-4ac}}{2a}$$
これも、まあ、ぎりぎり筆算でやれんことはないです。
でも、あえてpythonで。
問題はこんな感じ。
$$2x^2 - 4x + 1 = 0$$
solve関数を使うと一発で解けます。
from sympy import Symbol from sympy import solve x = Symbol('x'); exp = 2 * x**2 - 4 * x + 1; print(solve(exp,dict=True));
式の「=0」の部分は前提なので書いてません。
返される答え。
sqrtは平方根なので、整形表示するとこうです。
$$1\pm\dfrac{\sqrt{2}}{2}$$
うーん。pythonのsolve関数、楽だな。
じゃあ、三次方程式も解けるのか
さあ、次は三次です。
いつも、この辺でめげます。
三次方程式にも「カルダノの公式」という解の公式があるんですけど、見るだけでめまいがします。
以下のサイトで丁寧に解説してもらっているのですが、解のところの式を読んでいるうちに意識を失って・・眠ったということですが・・しまいました。
これは筆算したくないので、pythonで答えがだせるならいいなあと。
例えば、こんな問題。
$$4x^3-2x^2-6x+3=0$$
答えを先に見てみると、こうでした。
$$x=\dfrac{1}{2},\pm\dfrac{\sqrt{6}}{2}$$
二次方程式と同じように答えが求まるのでしょうか?
from sympy import Symbol from sympy import solve x = Symbol('x'); exp2 = 4 * x**3 - 2 * x**2 - 6 * x + 3; print(solve(exp2,dict=True));
表示された答え。
sqrtは平方根だから、ばっちり答えがでてますね。
圧倒的にこれが楽だな。
やはり、自分には筆算より、こっちが向いているのを確信しましたね。
ちなみに、上記は sympy が必要です。
はいってない場合は「pip install sympy」で入れてからです。
ではでは。