メモ置き場
Maxima
最終更新:
raket
-
view
0. Maximaって?
ぐぐれ
1. 基本的な使い方
1.1 とりあえず計算をさせてみる
見れば分かる
// 四則演算: +-*/ (%i1) 3*2-4/2; (%o1) 4
// 定数: 円周率=%pi,自然定数=%e,虚数単位=%i (%i2) %e^(%i*%pi)+1; (%o2) 0
// 具体的な値を知る: float(式) (%i3) float(sin(1)); (%o3) 0.8414709848079
//方程式を解く: solve(方程式,変数) (%i4) solve(x^3+3*x^2+3*x+1=0,x); (%o4) [x=-1]
1.2 変数/関数を定義したい
こんな感じ
(例) a:1 g:9.8 f(x):=3x^2 g(x,y)=x^2+y^2
変数は「:」で、関数は「:=」で定義する。
1.3 基本的な関数をド忘れした
この中に無かったらヘルプを見る
- 四則演算 1+2 1-2 1*2 1/2
- 累乗階乗 1^2 3!
- 絶対値 cabs(x) #abs(x)も可のようだ
- 平方根 sqrt(x)
- 指数関数 exp(x)
- 対数関数 log(x) #底は自然数e。底が10の対数を使う時はlog(x)/log(10)とする
- 三角関数 sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) atan2(y,x)
- 双曲線関数 sinh(x) cosh(x) tanh(x) asinh(x) acosh(x) atanh(x)
1.4 総和/積を使う
これも具体例を見れば分かる。
- 和1:sum(x^2,x,1,100) #1^2+2^2+…+100^2の計算「x^2の和をx = 1から100まで」
- 和2:sum(1/n^2,n,1,inf),simpsum #変数やinf(無限大)を使う時は値が表示されないときがあるので、その時はsimpsumをつける(難しい式だと無視されるが・・)
- 積:product(x^2,x,1,5) #1^2*2^2*3^2*4^2*5^2の計算。
1.5 微積の方法
- 微分:diff(x^3,x) #「x^3をxで微分」
- 定積分:integrate(x^2,x,-1,1) #「x^2をxについて-1から1まで積分」
- 不定積分integrate(x^2,x) #「x^2をxについて積分(不定積分)」
1.6 小数で表示させたい
分数とかルートが入った式じゃなくて小数で表示させる時はfloatかbfloatを使う。
bfloat(x)は必ず指数表示で表示され、float(x)で扱えないような大きい数も扱える。
bfloat(x)は必ず指数表示で表示され、float(x)で扱えないような大きい数も扱える。
(例) (%i1) float(%pi) (%o1) 3.141592653589793 (%i2) bfloat(1000!) (%o2) 4.023872600770938b2567 # b2567は「10の2567乗」という意味
1.7 方程式を解く
1.1で書いたとおりsolve(式,変数)が基本。基本的に解いてくれるのは多項式onlyなので、必要に応じてニュートン法を使う。
1.8 多項式を展開/因数分解したい
- 多項式展開: expand(f(x))
- 部分分数分解: partfrac(f(x),x)
- 指定次数の係数が欲しい: ratcoef(f(x),x^2) #この場合はx^2の係数
- 因数分解: factor(f(x)) #ちなみにf(x)の代わりに定数を代入すると素因数分解してくれる
2. 微積関係
2.1 ラプラス変換/逆変換をしたい
- ラプラス変換: laplace(f(t),t,s)
- 逆ラプラス変換:ilt(F(s),s,t)
2.2 フーリエ級数展開をしたい
fourieパッケージを読み込む必要があるので注意。
- step1: load(fourie)
- step2: fourier(f(x),x,p)
2.3 ニュートン法を使いたい
solve(..)で解けない問題で有効。f(x)=0を解く時、
- step1: load(newton) #ニュートン法に関するパッケージを読み込む
- step2: newton(f(x),探索開始値) #f(x)と探索開始値を渡す
ニュートン法なので、探索開始値に変な値を指定するとアウト。
2.4 微分方程式を解きたい
忘れた。
3.ベクトル演算
3.1 ベクトル/行列の定義
- ベクトル v1:[1,2,3]
- 行列 A:matrix([1,2,3],[2,3,1],[3,1,2])
3.2 ベクトル/行列の計算
- 和と差: スカラー同様+や-でOK
- 積 : 「.」を使う。 v1.v2(内積)、A.B(行列の積)など
- 累乗: 「^^」を使う。ただし、顔文字ではない
- 積について、ドットの前のベクトルは行ベクトル、後は列ベクトルと判断されるみたい
3.3 行列計算をしたい
- 単位行列の生成: ident(次数)
- ゼロ行列の生成: zeromatrix(次数)
- 転置: transpose(A)
- 行列式: determinant(A)
- 逆行列: invert(A)
- 余因子行列: adjoint(A)
- 固有値: eigenvalue(A) ただしload(eigen)が必要
4. グラフへのプロット
4.1 よく分からないけど普通にプロットしたい
- plot2d(f(t),[t,0,10]) #0~10の範囲でf(t)をプロット
- plot3d(f(x,y),[x,0,10],[y,-1,1])
4.2 細かい指定をしたい
maxima上でgnuplot呼び出すよりも直接gnuplot使えばいいじゃんと思ってしまう
5. その他
5.1 TeX形式の数式出力
tex()コマンドを使うとTeX形式の数式を出力してくれる。コピペすればおk。
5.2 変数/関数の定義消去
kill(a)で出来る
5.3 floatの桁数を指定したい
桁数を指定したいときは「fpprec:30」などと書く。