絶対値の方程式が解けない [Mathematica]
仕事に余裕ができたので、今年の東北大学の入試問題を解いていた。(それだけヒマだということだ)
その過程で絶対値を含んだ不等式が出た。解いてはみたものの、答があっているような気がしなかったので Mathmatica で確かめようと思った。(自信がないというのも情けない話だが、納得する答が出るまで計算してみようという気もない。したがって、受験生と一緒に入試を受けたら、合格点は取れない)
解きたかった不等式は | -3 a + 6 | < | a | だ。〜 0 〜 2 〜 で場合分けするだけなので、面倒がらずに集中して計算すればいいだけだ。
そこで Mathematica に計算させた結果が これ 。
最初の1行( In[2] )は復習がてらに方程式を解いてみたもの。Solve[ ] という関数を使う。また、{ } 内の ,x は xについての方程式 という意味である。
2行目( In[3] )は絶対値( Abs[ ] )を使ってみた。確かに正しい計算結果を出している。
3行目( In[4] )以降は今日のターゲットである絶対値2つの方程式である。In[4] は等号( == )の両側に絶対値をいれたら、解けなかった。
さらに両辺の絶対値( Abs )が悪いのかと思い、これを移項して等号の右辺を 0 にしてみたのが In[6] だ。これも思ったような答が出てこない。
最後に、教科書にでも載ってそうな方程式( In[7] )にしてみてもうまくいかない。
Mathematica で解けないなんてことがあるのだろうかと考えると、解けないのは自分に違いない、と思ってしまうから不思議だ。
場合分けができないのかなぁ
その過程で絶対値を含んだ不等式が出た。解いてはみたものの、答があっているような気がしなかったので Mathmatica で確かめようと思った。(自信がないというのも情けない話だが、納得する答が出るまで計算してみようという気もない。したがって、受験生と一緒に入試を受けたら、合格点は取れない)
解きたかった不等式は | -3 a + 6 | < | a | だ。〜 0 〜 2 〜 で場合分けするだけなので、面倒がらずに集中して計算すればいいだけだ。
そこで Mathematica に計算させた結果が これ 。
最初の1行( In[2] )は復習がてらに方程式を解いてみたもの。Solve[ ] という関数を使う。また、{ } 内の ,x は xについての方程式 という意味である。
2行目( In[3] )は絶対値( Abs[ ] )を使ってみた。確かに正しい計算結果を出している。
3行目( In[4] )以降は今日のターゲットである絶対値2つの方程式である。In[4] は等号( == )の両側に絶対値をいれたら、解けなかった。
さらに両辺の絶対値( Abs )が悪いのかと思い、これを移項して等号の右辺を 0 にしてみたのが In[6] だ。これも思ったような答が出てこない。
最後に、教科書にでも載ってそうな方程式( In[7] )にしてみてもうまくいかない。
Mathematica で解けないなんてことがあるのだろうかと考えると、解けないのは自分に違いない、と思ってしまうから不思議だ。
場合分けができないのかなぁ
Windows版も無料で公開されている。 [Mathematica]
Mathmatica(12.0.0)を無料でダウンロードできるサイトを見つけた。
https://www.malavida.com/jp/soft/mathematica/
ver 12.0.0 でRasbian の Buster に含まれるものと同じバージョンだ。どこまで活用できるかはよくわからないが、30年前に少し勉強した僕としては十分なバージョンだ。
DLしたので、これからインストールしてみよう。
https://www.malavida.com/jp/soft/mathematica/
ver 12.0.0 でRasbian の Buster に含まれるものと同じバージョンだ。どこまで活用できるかはよくわからないが、30年前に少し勉強した僕としては十分なバージョンだ。
DLしたので、これからインストールしてみよう。
Plot3D ー 3次元のグラフを書く。 [Mathematica]
Mathematica で3次元のグラフを書くことができる。
Plot3D が3次元グラフを書く命令で、この命令では、
z = Sin [ x y ] のグラフを、ーπ < x < π、ーπ < y < π の範囲で書かせたもので、
PlotPoints を 30 にして、より滑らかな曲線を書くように指定し、
AxesLabel でx軸,y軸,z軸にそれぞれラベルをつけた。
考え方として、3次元のグラフはy座標を固定してxを変化させて曲線を引き、y座標を少し動かして同じようにxを変化させて曲線を引くことを繰り返す。
大学入試の数学の問題となるとき、yを固定したときの最大値(最小値)を(xを含まない ー こうなるように問題を作ることが多い)yで表し、次にyを変化させて最大値(最小値)を計算させる。これなら手作業でも「それなりの」問題を作ることができる。
さらに、全体像を把握するためには Plot3D のような命令も有効になり、これを上手に利用すれば作問にも生かすことができそうだ。
ー 補足 ー
ViewPoint->[ x , y , z ] x,y,z は数値(座標)
これを適切に変化させることで、3次元グラフの曲面を見る視点を指定することができる。標準では ViewPoint -> { 1.3 , -2 . 4,2 } とセットされている。
Plot3D が3次元グラフを書く命令で、この命令では、
z = Sin [ x y ] のグラフを、ーπ < x < π、ーπ < y < π の範囲で書かせたもので、
PlotPoints を 30 にして、より滑らかな曲線を書くように指定し、
AxesLabel でx軸,y軸,z軸にそれぞれラベルをつけた。
考え方として、3次元のグラフはy座標を固定してxを変化させて曲線を引き、y座標を少し動かして同じようにxを変化させて曲線を引くことを繰り返す。
大学入試の数学の問題となるとき、yを固定したときの最大値(最小値)を(xを含まない ー こうなるように問題を作ることが多い)yで表し、次にyを変化させて最大値(最小値)を計算させる。これなら手作業でも「それなりの」問題を作ることができる。
さらに、全体像を把握するためには Plot3D のような命令も有効になり、これを上手に利用すれば作問にも生かすことができそうだ。
ー 補足 ー
ViewPoint->[ x , y , z ] x,y,z は数値(座標)
これを適切に変化させることで、3次元グラフの曲面を見る視点を指定することができる。標準では ViewPoint -> { 1.3 , -2 . 4,2 } とセットされている。
多倍長計算 [Mathematica]
Mathematica では多倍長計算もサポートする。次の画像は π の 1000桁表示である。こんな値もすぐ表示してくれるし、 1000 のところを他の数値にすればその分の桁数を表示してくれる。
また、高校数学でよくやる 2 ^ x に関係する問題のチェックも簡単にできる。
ま、『 2 ^ 1000 の1の位の数はいくつか』程度ならこれでいいが、『 2 ^ 1000 は何桁の数か』なんて問題にすると桁数を数えなければならなくなるので常用対数を使った教科書流の方が優れているのがよくわかる。
また、高校数学でよくやる 2 ^ x に関係する問題のチェックも簡単にできる。
ま、『 2 ^ 1000 の1の位の数はいくつか』程度ならこれでいいが、『 2 ^ 1000 は何桁の数か』なんて問題にすると桁数を数えなければならなくなるので常用対数を使った教科書流の方が優れているのがよくわかる。
Mathematica のヘルプ [Mathematica]
Mathematica のヘルプ機能を使ってみた。
? がヘルプの命令
* はワイルドカード(昔流の言い方で今はどういうか知らないが)
で、In[1] の命令では Plot で始まる命令の一覧を表示させる。優れていると感じる点は Out{1] の出力結果がすべてリンクになっていて、これらをクリックするとさらにサンプルが表示される。サンプルの説明は英語だが、なんとなくはわかる。
サンプルに従って、y = x^3 - 3x のグラフを -4 < x < 4 の範囲と指定すると、その範囲でグラフを書いてくれる。ちなみに座標軸は Mathematica が自動的に調整してくれる。x軸、y軸のスケールを合わせてくれるわけではないので軸の数値をチェックしておくことが必要になる。
ちょっと複雑な、y = x Sin[2 x] のグラフ
や、y = Sin[ 1 / x ] のグラフ
なども、ストレスなく書いてくれる。
Plot 命令は使い方次第だが、RaspberryPi 上の無料で使用できる Mathematica として、素晴らしいと思う。
? がヘルプの命令
* はワイルドカード(昔流の言い方で今はどういうか知らないが)
で、In[1] の命令では Plot で始まる命令の一覧を表示させる。優れていると感じる点は Out{1] の出力結果がすべてリンクになっていて、これらをクリックするとさらにサンプルが表示される。サンプルの説明は英語だが、なんとなくはわかる。
サンプルに従って、y = x^3 - 3x のグラフを -4 < x < 4 の範囲と指定すると、その範囲でグラフを書いてくれる。ちなみに座標軸は Mathematica が自動的に調整してくれる。x軸、y軸のスケールを合わせてくれるわけではないので軸の数値をチェックしておくことが必要になる。
ちょっと複雑な、y = x Sin[2 x] のグラフ
や、y = Sin[ 1 / x ] のグラフ
なども、ストレスなく書いてくれる。
Plot 命令は使い方次第だが、RaspberryPi 上の無料で使用できる Mathematica として、素晴らしいと思う。
(-1)^(1/4) の実体に近づいた [Mathematica]
結局は cos(π/4) + i sin(π/4) を出したいだけで結果はわかっているが、ここでは計算を Raspberry Pi 上の Mathematica でやることに意味を見出しているわけで、価値があるかといえばほとんどないと言える。
さて、今日は次のような計算をした。In[ ]の数字がおかしいのは試行錯誤の成果で、「行を消すことを覚えた」ある種の進化の成果だ。
Arg[ ] は偏角を求める関数だ。したがって、In[4],In[5] の入力に対し、Out[4],Out[5] のような出力を返す。
ComplexExpand[ ] は複素数 a + b i の形に直してくれる。したがって、In[3],In[8] のような入力に対し、Out[3],Out[8] のような結果を返してくれる。Out[8] の分子は - 1 + i のほうが好みなのであるが。
ま、今日は半歩前進。
さて、今日は次のような計算をした。In[ ]の数字がおかしいのは試行錯誤の成果で、「行を消すことを覚えた」ある種の進化の成果だ。
Arg[ ] は偏角を求める関数だ。したがって、In[4],In[5] の入力に対し、Out[4],Out[5] のような出力を返す。
ComplexExpand[ ] は複素数 a + b i の形に直してくれる。したがって、In[3],In[8] のような入力に対し、Out[3],Out[8] のような結果を返してくれる。Out[8] の分子は - 1 + i のほうが好みなのであるが。
ま、今日は半歩前進。
本家 Wolfram サイトにあるチュートリアル [Mathematica]
Wolfram のサイト内に日本語のチュートリアルを見つけた。
RaspberryPi 上の無料の Mathematica でどこまでできるかわからないが、あらかたのコマンドは使えるだろうと思う。Mathematica使いの大学の先生が学生用の講義録のようなチュートリアルを公開しているが、無色マニュアルに近いこのチュートリアルもなかなか良い。
ちなみに、画像は scrot -s で画面をキャプチャし、GIMP で縮小してみた。これらのソフトがすべて無料で公開されていることは驚きだ。
RaspberryPi 上の無料の Mathematica でどこまでできるかわからないが、あらかたのコマンドは使えるだろうと思う。Mathematica使いの大学の先生が学生用の講義録のようなチュートリアルを公開しているが、無色マニュアルに近いこのチュートリアルもなかなか良い。
ちなみに、画像は scrot -s で画面をキャプチャし、GIMP で縮小してみた。これらのソフトがすべて無料で公開されていることは驚きだ。
ちょっと不思議 [Mathematica]
方程式 x^2 + 2x +2 = 0 を解くと -1 ± i が答となる。
方程式 x^2 - 2x +2 = 0 も同様だ。
そこで、この2式をかけ(In[1]:Expand[])てできた方程式 x^4 + 4 = 0 を解いてみた。(In[3]:Solve[])
その結果が Out[3]
( - 1 )^(1/4) ってなんだ??
一度因数分解した x^2 + 2 x + 2 = 0,x^2 - 2 x + 2 = 0 を別々に解く( In[4] , In[5] )と筆算どおりの答が帰ってくるのだが。
「極形式」を考えれば ( - 1 )^(1/4) は解釈できそうではある。
内部では筆算とずいぶん違う処理をしているようだ。
方程式 x^2 - 2x +2 = 0 も同様だ。
そこで、この2式をかけ(In[1]:Expand[])てできた方程式 x^4 + 4 = 0 を解いてみた。(In[3]:Solve[])
その結果が Out[3]
( - 1 )^(1/4) ってなんだ??
一度因数分解した x^2 + 2 x + 2 = 0,x^2 - 2 x + 2 = 0 を別々に解く( In[4] , In[5] )と筆算どおりの答が帰ってくるのだが。
「極形式」を考えれば ( - 1 )^(1/4) は解釈できそうではある。
内部では筆算とずいぶん違う処理をしているようだ。
ESCキーで入力できる文字 [Mathematica]
数回前の記事に書いた長坂先生のテキストや、Ver2.4時代の入門書などを眺めながら勉強している。
今回は、iやe、πなどの特殊記号が[ESC]キーとの組み合わせで入力できる頃を見つけたので試してみた。例は割り算の「÷」だ。長坂先生のテキストでは [ESC]DIV[ESC] と書いてあるのでやってみた。
Ver2.4で遊んでいた時代から30年以上たつので進化は当然だが、Mathematicaで ÷ が表示でき、しかも計算をする。今の人達から見れば当然かもしれないが。
とりあえず、20÷6 の計算を目指す。
この画像は 20 を入力して [ESC]キーを押したところ。20の右に不明な文字が表示されている。拡大してみるとわかるかもしれないが、点を3つ縦に並べたように見える。
次に div を入れてみたが、そのまま表示される。
次に [ESC] キーを押すと、÷ に変わる。
続けて 6 を入力して、
このままSHIFT+Enter で計算をしてくれる。
当然ではあるが「約分」しているところにも注目だ。
この他にも [ESC] キーと組み合わせて様々な文字が入力できるが、これは次回以降で。
今回は、iやe、πなどの特殊記号が[ESC]キーとの組み合わせで入力できる頃を見つけたので試してみた。例は割り算の「÷」だ。長坂先生のテキストでは [ESC]DIV[ESC] と書いてあるのでやってみた。
Ver2.4で遊んでいた時代から30年以上たつので進化は当然だが、Mathematicaで ÷ が表示でき、しかも計算をする。今の人達から見れば当然かもしれないが。
とりあえず、20÷6 の計算を目指す。
この画像は 20 を入力して [ESC]キーを押したところ。20の右に不明な文字が表示されている。拡大してみるとわかるかもしれないが、点を3つ縦に並べたように見える。
次に div を入れてみたが、そのまま表示される。
次に [ESC] キーを押すと、÷ に変わる。
続けて 6 を入力して、
このままSHIFT+Enter で計算をしてくれる。
当然ではあるが「約分」しているところにも注目だ。
この他にも [ESC] キーと組み合わせて様々な文字が入力できるが、これは次回以降で。
二項係数,式の簡略化,Range関数 [Mathematica]
関数の動作チェックである。
In[6] の Binomial[4, 2] は二項係数という説明もあるが、Combination 4C2 である。
In[7] の FullSimplify は引数となっている式を簡略化する関数。数学の試験風に書けば、「次の式を整理せよ」なんてぐあいの計算をする関数だ。数秒時間がかかったが、そこら辺の高校生よりもよっぽど早く計算してくれて、ミスもない。
以下は、Range関数の動作確認である。
Range[10]は、1から10までの整数のリストを生成する。
したがって、これらをすべて加えるように Plus@@ をつけると
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 の合計を計算して、結果 55 を返す。
Range関数の引数は、順に、初期値,終値,間隔 のようで、3つ目のパラメータを省略すると間隔が1となるようだ。
Range[2, 10] は2から始まって10まで、1ずつ増やしてリストをつくる。
Range[10, 2] は10から始まって2までの指定なので、無理だから「空白リスト」を返す。
Range[1, 10, 3] は1から始まって、10まで3刻みに数のリストを作るので、
1, (+3) 4, (+3) 7 , (+3) 10 となる。
よって、10未満の3の倍数であれば3から始める Range[3, 10, 3]とすれば良い。( In[13] )
Version12なので多機能なのはしょうがないが、使い切ることは難しい。