[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
20.1 Functions and Variables for Equations |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
デフォルト値: []
%rnum_list
は solve
や algsys
による解で導入された変数のリストです。
%r
変数はそれらが生成された順に %rnum_list
に追加されます。
これはあとで解への代入を行うのに便利です。
concat ('%r, j)
とするより このリストを使うことを推奨します。
(%i1) solve ([x + y = 3], [x,y]); (%o1) [[x = 3 - %r1, y = %r1]] (%i2) %rnum_list; (%o2) [%r1] (%i3) sol : solve ([x + 2*y + 3*z = 4], [x,y,z]); (%o3) [[x = - 2 %r3 - 3 %r2 + 4, y = %r3, z = %r2]] (%i4) %rnum_list; (%o4) [%r2, %r3] (%i5) for i : 1 thru length (%rnum_list) do sol : subst (t[i], %rnum_list[i], sol)$ (%i6) sol; (%o6) [[x = - 2 t - 3 t + 4, y = t , z = t ]] 2 1 2 1 |
Categories: Algebraic equations
デフォルト値: 10^8
algsys
が algepsilon
を使います。
Categories: Algebraic equations
デフォルト値: false
algexact
は以下のように algsys
の振る舞いに影響を与えます:
もし algexact
が true
なら、
algsys
はいつも solve
をコールし、
solve
の失敗時には realroots
を使います。
もし algexact
が false
なら、
問題が1変数でないときだけ、または方程式が二次か四次なら
(only if the eliminant was not univaririate, or if it was a quadratic or biquadratic)
solve
がコールされます。
このように algexact: true
は厳密解だけを保証しません。
ただ、 algsys
は最初に厳密解を与えるように最大限努力して、
他のすべてが失敗した時近似をもたらすことだけを保証します。
Categories: Algebraic equations
同時多項式 expr_1, …, expr_m
または多項式方程式 eqn_1, …, eqn_m
を変数 x_1, …, x_nについて解きます。
式 exprは等式 expr = 0
と同値です。
変数より等式が多い場合も逆もあります。
algsys
は解のリストを返します。
ここで、それぞれの解は方程式系を満たす変数
x_1, …, x_nの値を指定する等式のリストとして与えられます。
もし algsys
が解を見つけられないなら、
空のリスト []
が返されます。
シンボル %r1
, %r2
, …が
解の任意パラメータを表すために必要に応じて導入されます;
これらの変数はリスト %rnum_list
にも追加されます。
方法は以下の通りです:
xが消去されるので1つ変数の少ない新しいサブシステム S_i'が得られます。 ここでプロセスは(1)に戻ります。
solve
をコールします。
いくつかの場合、 solve
が解を見つけることができないか、
もし見つけたても、解が非常に大きな式になるかもしれません。
等式が1変数で、線形か二次か四次の場合、
もし近似が導入されないなら、再び solve
をコールします。
もし近似が導入されるか、等式が1変数でなく、線形でも二次でも、四次でもない場合、
もしスイッチ realonly
が true
なら、
実数解を見つけるため関数 realroots
をコールします。
もし realonly
が false
なら、
実数解と複素数解を探す allroots
をコールします。
もし algsys
が要求よりも有効数字が少ない解を生成するなら、
ユーザーは algepsilon
の値をより高い値に変更できます。
もし algexact
が true
に設定されているなら、
いつも solve
をコールします。
algsys
が(通常、初期の段階での厳密解発見の失敗による)
浮動小数点近似を含む多変数方程式に出会う時、
厳密な方法をそんな方程式に適用しようとせず、かわりにメッセージを表示します:
"algsys
cannot solve - system too complicated."
radcan
を使うと大きな式や複雑な式を生成することができます。
この場合、 pickapart
か
reveal
を使って結果の一部を分離することができるかもしれません。
radcan
は時々、実際には実数値の解に虚数単位%i
を導入するかもしれません。
例:
(%i1) e1: 2*x*(1 - a1) - 2*(x - 1)*a2; (%o1) 2 (1 - a1) x - 2 a2 (x - 1) (%i2) e2: a2 - a1; (%o2) a2 - a1 (%i3) e3: a1*(-y - x^2 + 1); 2 (%o3) a1 (- y - x + 1) (%i4) e4: a2*(y - (x - 1)^2); 2 (%o4) a2 (y - (x - 1) ) (%i5) algsys ([e1, e2, e3, e4], [x, y, a1, a2]); (%o5) [[x = 0, y = %r1, a1 = 0, a2 = 0], [x = 1, y = 0, a1 = 1, a2 = 1]] (%i6) e1: x^2 - y^2; 2 2 (%o6) x - y (%i7) e2: -1 - y + 2*y^2 - x + x^2; 2 2 (%o7) 2 y - y + x - x - 1 (%i8) algsys ([e1, e2], [x, y]); 1 1 (%o8) [[x = - -------, y = -------], sqrt(3) sqrt(3) 1 1 1 1 [x = -------, y = - -------], [x = - -, y = - -], [x = 1, y = 1]] sqrt(3) sqrt(3) 3 3 |
Categories: Algebraic equations
1変数多項式 exprもしくは1変数多項式方程式 eqnの実数と複素数の根の数値近似を計算します。
フラグ polyfactor
が true
の時、
allroots
は多項式が実数なら多項式を実数上で因数分解し、
多項式が複素数なら複素数上で因数分解します。
allroots
は多重根の場合、不正確な結果をもたらすことがあります。
もし多項式が実数なら、allroots (%i*p)
は
allroots (p)
より精確な近似を生成します。
allroots
はこの場合異なるアルゴリズムを呼ぶからです。
allroots
は非多項式を却下します。
rat
された分子が多項式であることを要求し、
分母はせいぜい複素数であることを要求します。
この結果、もし polyfactor
が true
なら、
allroots
はいつも(因数分解された)同値の式を返します。
複素多項式のために、JenkinsとTraubのアルゴリズムが使われます (Algorithm 419, Comm. ACM, vol. 15, (1972), .97)。 実多項式のために、Jenkinsのアルゴリズム (Algorithm 493, ACM TOMS, vol. 1, (1975), p.178)が使われます。
例:
(%i1) eqn: (1 + 2*x)^3 = 13.5*(1 + x^5); 3 5 (%o1) (2 x + 1) = 13.5 (x + 1) (%i2) soln: allroots (eqn); (%o2) [x = .8296749902129361, x = - 1.015755543828121, x = .9659625152196369 %i - .4069597231924075, x = - .9659625152196369 %i - .4069597231924075, x = 1.0] (%i3) for e in soln do (e2: subst (e, eqn), disp (expand (lhs(e2) - rhs(e2)))); - 3.5527136788005E-15 - 5.32907051820075E-15 4.44089209850063E-15 %i - 4.88498130835069E-15 - 4.44089209850063E-15 %i - 4.88498130835069E-15 3.5527136788005E-15 (%o3) done (%i4) polyfactor: true$ (%i5) allroots (eqn); (%o5) - 13.5 (x - 1.0) (x - .8296749902129361) 2 (x + 1.015755543828121) (x + .8139194463848151 x + 1.098699797110288) |
Categories: Polynomials · Numerical methods
1変数の多項式 exprまたは多項式方程式 eqnの実数根と複素数根の数値近似を計算します。
bfallroots
は多倍長浮動小数点を使って根を計算する以外のすべての点で
allroots
と同一です。
詳しい情報については allroots
を参照してください。
Categories: Polynomials · Numerical methods
デフォルト値: true
backsubst
が false
の時、
方程式を三角行列化した後 linsolve
の後退代入を抑制します。
これは
後退代入が極端に大きな式の生成のもととなる非常に大きな問題に対して役立つかもしれません。
(%i1) eq1 : x + y + z = 6$ (%i2) eq2 : x - y + z = 2$ (%i3) eq3 : x + y - z = 0$ (%i4) backsubst : false$ (%i5) linsolve ([eq1, eq2, eq3], [x,y,z]); (%o5) [x = z - y, y = 2, z = 3] (%i6) backsubst : true$ (%i7) linsolve ([eq1, eq2, eq3], [x,y,z]); (%o7) [x = 1, y = 2, z = 3] |
Categories: Algebraic equations
デフォルト値: true
breakup
が true
の時、
solve
は三次と四次の方程式の解を共通部分式を使って表現します。
共通部分式は中間式ラベル(%t1
, %t2
, など)に割り当てられます。
そうでないなら共通部分式は同定されません。
breakup: true
は
programmode
が false
の時だけ効果を持ちます。
例:
(%i1) programmode: false$ (%i2) breakup: true$ (%i3) solve (x^3 + x^2 - 1); sqrt(23) 25 1/3 (%t3) (--------- + --) 6 sqrt(3) 54 Solution: sqrt(3) %i 1 ---------- - - sqrt(3) %i 1 2 2 1 (%t4) x = (- ---------- - -) %t3 + -------------- - - 2 2 9 %t3 3 sqrt(3) %i 1 - ---------- - - sqrt(3) %i 1 2 2 1 (%t5) x = (---------- - -) %t3 + ---------------- - - 2 2 9 %t3 3 1 1 (%t6) x = %t3 + ----- - - 9 %t3 3 (%o6) [%t4, %t5, %t6] (%i6) breakup: false$ (%i7) solve (x^3 + x^2 - 1); Solution: sqrt(3) %i 1 ---------- - - 2 2 sqrt(23) 25 1/3 (%t7) x = --------------------- + (--------- + --) sqrt(23) 25 1/3 6 sqrt(3) 54 9 (--------- + --) 6 sqrt(3) 54 sqrt(3) %i 1 1 (- ---------- - -) - - 2 2 3 sqrt(23) 25 1/3 sqrt(3) %i 1 (%t8) x = (--------- + --) (---------- - -) 6 sqrt(3) 54 2 2 sqrt(3) %i 1 - ---------- - - 2 2 1 + --------------------- - - sqrt(23) 25 1/3 3 9 (--------- + --) 6 sqrt(3) 54 sqrt(23) 25 1/3 1 1 (%t9) x = (--------- + --) + --------------------- - - 6 sqrt(3) 54 sqrt(23) 25 1/3 3 9 (--------- + --) 6 sqrt(3) 54 (%o9) [%t7, %t8, %t9] |
Categories: Algebraic equations
dimen
は、次元解析パッケージです。
load ("dimen")
はこのパッケージをロードします。
demo ("dimen")
は短いデモンストレーションを表示します。
Categories: Share packages
デフォルト値: true
もし block
内で false
に設定されたら
block
内でコールされた解法関数が生成する出力の表示を抑制します。
block
をドル記号$で終端すると、
dispflag
を false
に設定します。
Categories: Algebraic equations · Display flags and variables
eqnを満たす有理関数 g(t)
が存在するかどうかに依存して、
[g(t) = ...]
か []
を返します。
ここで、 eqnは(この場合)
g(t)
とg(t+1)
に関して
一次、線形多項式(first order, linear polynomial)でなければいけません。
(%i1) eqn: (n + 1)*f(n) - (n + 3)*f(n + 1)/(n + 1) = (n - 1)/(n + 2); (n + 3) f(n + 1) n - 1 (%o1) (n + 1) f(n) - ---------------- = ----- n + 1 n + 2 (%i2) funcsolve (eqn, f(n)); Dependent equations eliminated: (4 3) n (%o2) f(n) = --------------- (n + 1) (n + 2) |
警告: これはとても未完成な実装です - 多くの安全性チェックや明らかな一般化が忘れられています。
Categories: Algebraic equations
デフォルト値: false
globalsolve
が true
の場合、
2つ以上の線形方程式を解く時、
解くべき変数が linsolve
や solve
が見つけた解の値に割り当てられます。
globalsolve
が false
の時、
2つ以上の線形方程式を解く時、
linsolve
や solve
が見つけた解は等式として表現され、
解くべき変数は割り当てられません。
2つ以上の線形方程式以外の何かを解く時には、
solve
は globalsolve
を無視します。
方程式を解く他の関数(例えば algsys
)はいつも globalsolve
を無視します。
例:
(%i1) globalsolve: true$ (%i2) solve ([x + 3*y = 2, 2*x - y = 5], [x, y]); Solution 17 (%t2) x : -- 7 1 (%t3) y : - - 7 (%o3) [[%t2, %t3]] (%i3) x; 17 (%o3) -- 7 (%i4) y; 1 (%o4) - - 7 (%i5) globalsolve: false$ (%i6) kill (x, y)$ (%i7) solve ([x + 3*y = 2, 2*x - y = 5], [x, y]); Solution 17 (%t7) x = -- 7 1 (%t8) y = - - 7 (%o8) [[%t7, %t8]] (%i8) x; (%o8) x (%i9) y; (%o9) y |
Categories: Linear equations
inteqn
は積分方程式を解くためのパッケージです。
load ("inteqn")
はこのパッケージをロードします。
ieは積分方程式です;
unkは未知の関数です;
techは上で与えられたこれらから試される手法です;
(tech = first
は次を意味します: 解を見つける最初の手法を試みる;
tech = all
は次を意味します: 適用可能な手法すべてを試みる);
nは taylor
か, neumann
, firstkindseries
,
fredseries
に関して扱う項の最大数です (微分法に関する再帰の最大深度でもあります);
guessは neumann
か firstkindseries
に関する初期の推測です。
2番目から5番目までのパラメータのデフォルト値は、以下の通りです:
unk: p(x)
。
ここで pは被積分関数の中で出会う Maximaが知らない最初の関数であり、
xは secondkind
方程式の場合の積分の外側で見つかった
pの最初の出現時の引数か
firstkind
方程式の中の積分変数を除いた唯一の残りの変数です。
もし xを探す企てが失敗したら、ユーザーは独立変数を提供するよう尋ねられるでしょう。
tech: first
n: 1
guess: none
とすると、 neumann
と firstkindseries
は初期推測として
f(x)
を使うようになります。
Categories: Integral equations
デフォルト値: true
ieqnprint
は ieqn
コマンドが返す結果の振る舞いを決めます。
ieqnprint
が false
の時、
ieqn
関数が返すリストは形式
[solution, technique used, nterms, flag]
を取ります。
ここでもし解が厳密なら flagはありません。
そうでないなら、厳密でない解か閉じていない形の解かに対応してそれぞれ、単語
approximate
か incomplete
です。
もし級数法が使われたら、
ntermsは取った項の数を与えます。
(もしエラーが更なる項の生成を防いだなら、項の数は
ieqn
に与えたnよりも小さいこともあり得ます。)
Categories: Integral equations
exprの演算子が関係演算子 < <= = # equal notequal >= >
の1つか
割り当て演算子 := ::= : ::
の1つ、
infix
で宣言されたユーザー定義の二項中置演算子のいずれかの時、
式 exprの左辺(すなわち、最初の項)を返します。
exprがアトムか、演算子が上で記載したもの以外の何かの時、
lhs
は exprを返します。
rhs
も参照してください。
例:
(%i1) e: aa + bb = cc; (%o1) bb + aa = cc (%i2) lhs (e); (%o2) bb + aa (%i3) rhs (e); (%o3) cc (%i4) [lhs (aa < bb), lhs (aa <= bb), lhs (aa >= bb), lhs (aa > bb)]; (%o4) [aa, aa, aa, aa] (%i5) [lhs (aa = bb), lhs (aa # bb), lhs (equal (aa, bb)), lhs (notequal (aa, bb))]; (%o5) [aa, aa, aa, aa] (%i6) e1: '(foo(x) := 2*x); (%o6) foo(x) := 2 x (%i7) e2: '(bar(y) ::= 3*y); (%o7) bar(y) ::= 3 y (%i8) e3: '(x : y); (%o8) x : y (%i9) e4: '(x :: y); (%o9) x :: y (%i10) [lhs (e1), lhs (e2), lhs (e3), lhs (e4)]; (%o10) [foo(x), bar(y), x, x] (%i11) infix ("]["); (%o11) ][ (%i12) lhs (aa ][ bb); (%o12) aa |
Categories: Expressions
変数のリストに関して連立線形方程式のリストを解きます。 それぞれの式は変数に関する多項式でなければならず、等式も受け付けます。
globalsolve
が true
の時、
解くべき変数それぞれは方程式の解の値にバインドされます。
backsubst
が false
の時、
linsolve
は方程式を三角行列化した後、後退代入を実行しません。
これは後退代入が極端に大きな式の生成の原因となる非常に大きな問題に対して
必要とされるかもしれません。
linsolve_params
が true
の時、
linsolve
は
algsys
の下のマニュアルの中で記述された任意のパラメータを表すのに使われる
%r
シンボルも生成します。
そうでないなら、
linsolve
は他を使って表されたいくつかの変数を使って決定中の方程式系を解きます。
(solves an under-determined system of equations with some variables expressed in terms of others.)
programmode
が false
の時、
linsolve
は中間式(%t
)ラベルを使って解を表示し、ラベルのリストを返します。
(%i1) e1: x + z = y; (%o1) z + x = y (%i2) e2: 2*a*x - y = 2*a^2; 2 (%o2) 2 a x - y = 2 a (%i3) e3: y - 2*z = 2; (%o3) y - 2 z = 2 (%i4) [globalsolve: false, programmode: true]; (%o4) [false, true] (%i5) linsolve ([e1, e2, e3], [x, y, z]); (%o5) [x = a + 1, y = 2 a, z = a - 1] (%i6) [globalsolve: false, programmode: false]; (%o6) [false, false] (%i7) linsolve ([e1, e2, e3], [x, y, z]); Solution (%t7) z = a - 1 (%t8) y = 2 a (%t9) x = a + 1 (%o9) [%t7, %t8, %t9] (%i9) ''%; (%o9) [z = a - 1, y = 2 a, x = a + 1] (%i10) [globalsolve: true, programmode: false]; (%o10) [true, false] (%i11) linsolve ([e1, e2, e3], [x, y, z]); Solution (%t11) z : a - 1 (%t12) y : 2 a (%t13) x : a + 1 (%o13) [%t11, %t12, %t13] (%i13) ''%; (%o13) [z : a - 1, y : 2 a, x : a + 1] (%i14) [x, y, z]; (%o14) [a + 1, 2 a, a - 1] (%i15) [globalsolve: true, programmode: true]; (%o15) [true, true] (%i16) linsolve ([e1, e2, e3], '[x, y, z]); (%o16) [x : a + 1, y : 2 a, z : a - 1] (%i17) [x, y, z]; (%o17) [a + 1, 2 a, a - 1] |
Categories: Linear equations
デフォルト値: true
linsolvewarn
が true
の時、
linsolve
はメッセージ"Dependent equations eliminated"を表示します。
Categories: Linear equations
デフォルト値: true
linsolve_params
が true
の時、
linsolve
は
algsys
の下のマニュアルに記述された任意のパラメータを表すのに使われる
%r
シンボルも生成します。
それでないなら、linsolve
は他を使って表されたいくつかの変数を使って
決定中の方程式系を解きます。
Categories: Linear equations
デフォルト値: not_set_yet
multiplicities
は
solve
や realroots
が返す個々の解の重複度のリストに設定されます。
Categories: Algebraic equations · Polynomials
半開区間 (low, high]
の中の実数一変数多項式
pの実根の数を返します。
区間の端点は minf
か inf
かもしれません。
nroots
は、Sturm列の方法を使います。
(%i1) p: x^10 - 2*x^4 + 1/2$ (%i2) nroots (p, -6, 9.1); (%o2) 4 |
Categories: Polynomials · Numerical methods
pは整数係数多項式で、 nは正の整数です。
q^n = p
のような整数上の多項式 q
を返すか、
pが完全な n番目のべき
(a perfect nth pwer)でないことを示すエラーメッセージを表示します。
このルーチンは factor
より、また sqfr
よりさえもっと速いです。
Categories: Polynomials
デフォルト値: false
オプション変数 polyfactor
が true
の時、
allroots
と bfallroots
は
もし多項式が実数なら実数上で、もし多項式が複素数なら複素数上で多項式を因数分解します。
例は allroots
を参照してください。
Categories: Polynomials · Numerical methods
デフォルト値: true
programmode
が true
の時、
solve
, realroots
, allroots
,
linsolve
はリストの中の要素として解を返します。
(backsubst
が false
設定されている時を除きます―
その場合はprogrammode: false
が仮定されます―)
programmode
が false
の時、
solve
などは中間式ラベル %t1
,
%t2
など生成し、解をそれらに割り当てます。
Categories: Algebraic equations · Polynomials
デフォルト値: false
realonly
が true
の時、
algsys
は %i
を含まないそれらの解だけを返します。
Categories: Algebraic equations
変数多項式 exprか1変数多項方程式 eqnの実根の有理近似を
bound
の許容誤差の範囲内で計算します。
exprか eqnの係数はリテラル数でなければなりません。
%pi
のようなシンボル定数は却下されます。
realroots
はみつけた根の重複度をグローバル変数
multiplicities
に割り当てます。
realroots
はそれぞれの根を囲むために Sturm列を構成し、
それから近似を精密化するために二分法を適用します。
根を探索する前にすべての係数を同値の有理数に変換し、
計算は正確な有理算術で実行します。
たとえ係数が浮動小数点でも、
(float
か
numer
フラグによって浮動小数点が強要されない限り)結果は有理数です。
boundが1よりも小さい時、全ての整数根は正確に計算されます。
boundが指定されない時、グローバル変数 rootsepsilon
と等しいと仮定されます。
グローバル変数 programmode
が true
の時、
realroots
は形式
[x = x_1, x = x_2, …]
のリストを返します。
programmode
が false
の時、
realroots
は中間式ラベル %t1
, %t2
, …を生成し、
結果をそれらに割り当て、ラベルのリストを返します。
例:
(%i1) realroots (-1 - x + x^5, 5e-6); 612003 (%o1) [x = ------] 524288 (%i2) ev (%[1], float); (%o2) x = 1.167303085327148 (%i3) ev (-1 - x + x^5, %); (%o3) - 7.396496210176905E-6 |
(%i1) realroots (expand ((1 - x)^5 * (2 - x)^3 * (3 - x)), 1e-20); (%o1) [x = 1, x = 2, x = 3] (%i2) multiplicities; (%o2) [5, 3, 1] |
Categories: Polynomials · Numerical methods
exprの演算子が関係演算子 < <= = # equal notequal >= >
の1つか、
割り当て演算子:= ::= : ::
の1つ、
infix
で宣言されたユーザー定義の二項中置演算子のいずれかの時
式 exprの右辺(すなわち、二番目の項)を返します。
exprがアトムか、演算子が上で記載したもの以外の何かの時、
rhs
は exprを返します。
lhs
も参照してください。
例:
(%i1) e: aa + bb = cc; (%o1) bb + aa = cc (%i2) lhs (e); (%o2) bb + aa (%i3) rhs (e); (%o3) cc (%i4) [rhs (aa < bb), rhs (aa <= bb), rhs (aa >= bb), rhs (aa > bb)]; (%o4) [bb, bb, bb, bb] (%i5) [rhs (aa = bb), rhs (aa # bb), rhs (equal (aa, bb)), rhs (notequal (aa, bb))]; (%o5) [bb, bb, bb, bb] (%i6) e1: '(foo(x) := 2*x); (%o6) foo(x) := 2 x (%i7) e2: '(bar(y) ::= 3*y); (%o7) bar(y) ::= 3 y (%i8) e3: '(x : y); (%o8) x : y (%i9) e4: '(x :: y); (%o9) x :: y (%i10) [rhs (e1), rhs (e2), rhs (e3), rhs (e4)]; (%o10) [2 x, 3 y, y, y] (%i11) infix ("]["); (%o11) ][ (%i12) rhs (aa ][ bb); (%o12) bb |
Categories: Expressions
デフォルト値: true
rootsconmode
は rootscontract
コマンドの振る舞いを決定します。
詳細は rootscontract
を参照してください。
Categories: Expressions · Simplification flags and variables
根の積を積の根に変換します。
例えば、
rootscontract (sqrt(x)*y^(3/2))
は sqrt(x*y^3)
となります。
radexpand
が true
かつ domain
が real
の時、
rootscontract
は abs
を sqrt
に変換します。
例えば rootscontract (abs(x)*sqrt(y))
は sqrt(x^2*y)
をもたらします。
以下のように rootscontract
に影響するオプション rootsconmode
があります:
問題 rootsconmodeの値 rootscontractを適用した値 x^(1/2)*y^(3/2) false (x*y^3)^(1/2) x^(1/2)*y^(1/4) false x^(1/2)*y^(1/4) x^(1/2)*y^(1/4) true (x*y^(1/2))^(1/2) x^(1/2)*y^(1/3) true x^(1/2)*y^(1/3) x^(1/2)*y^(1/4) all (x^2*y)^(1/4) x^(1/2)*y^(1/3) all (x^3*y^2)^(1/6) |
rootsconmode
が false
の時、
rootscontract
は分母が同じ有理数指数に関してだけ短縮します。
rootsconmode: true
の例のキーは、
単に、4は2で割り切れますが4は2で割り切れないということです。
rootsconmode: all
は指数の分母の最小公倍数を取るようになります。
rootscontract
は logcontract
と似た方法で
ratsimp
を使います。
例:
(%i1) rootsconmode: false$ (%i2) rootscontract (x^(1/2)*y^(3/2)); 3 (%o2) sqrt(x y ) (%i3) rootscontract (x^(1/2)*y^(1/4)); 1/4 (%o3) sqrt(x) y (%i4) rootsconmode: true$ (%i5) rootscontract (x^(1/2)*y^(1/4)); (%o5) sqrt(x sqrt(y)) (%i6) rootscontract (x^(1/2)*y^(1/3)); 1/3 (%o6) sqrt(x) y (%i7) rootsconmode: all$ (%i8) rootscontract (x^(1/2)*y^(1/4)); 2 1/4 (%o8) (x y) (%i9) rootscontract (x^(1/2)*y^(1/3)); 3 2 1/6 (%o9) (x y ) (%i10) rootsconmode: false$ (%i11) rootscontract (sqrt(sqrt(x) + sqrt(1 + x)) *sqrt(sqrt(1 + x) - sqrt(x))); (%o11) 1 (%i12) rootsconmode: true$ (%i13) rootscontract (sqrt(5+sqrt(5)) - 5^(1/4)*sqrt(1+sqrt(5))); (%o13) 0 |
Categories: Simplification functions
デフォルト値: 1.0e-7
rootsepsilon
は
realroots
関数が見つけた根に関する信頼区間を確立する許容誤差です。
Categories: Polynomials · Numerical methods
代数等式 exprを xについて解き、 xの解等式のリストを返します。
もし exprが等式でなければ、等式 expr = 0
を仮定します。
xは関数(例えば f(x)
)でも他のアトムでない式でも問題ありません。
(sumやproductは除きます。)
exprが変数を1つだけ含む場合 xは省略できます。
exprは有理式でもよく、三角関数や指数関数を含むこともできます。
以下の方法を使います:
Eを式、 Xを変数とします。
もし Eが Xに関して線形なら Xについて自明に解きます。
そうでない場合、もし Eが A*X^N + B
の形なら、
結果は (-B/A)^(1/N)
かける1の N
乗根です。
もし Eが Xについて線形でないなら、
Eの中の Xの指数の gcd(以下 Nとする)で指数を割り、
根にNを掛けます。
その後、結果に対して solve
を再びコールします。
もし Eが因数分解されるなら、 solve
を因子のそれぞれに対してコールします。
最後に solve
は2次方程式、3次方程式、4次方程式の解の公式を必要に応じて使います。
Eが解くべき変数のある関数(以下 F(X)
)の多項式の場合,
最初に F(X)
について解き(結果をCと呼びます)、
関数 Fの逆関数がわかっている場合、等式 F(X)=C
をXについて解きます。
もし breakup
が false
なら、
solve
は3次もしくは4次方程式の解を、
デフォルトの、いくつかの共通部分式から成る表現ではなく、
単一の式で表現します。
multiplicities
は solve
や realroots
,
allroots
が返す多数の独立の解のリストに設定されます。
solve
に影響するスイッチについては apropos (solve)
を試してください。
スイッチの目的がはっきりしない時は、
describe
で個々のスイッチ名を調べましょう。
solve ([eqn_1, ..., eqn_n], [x_1, ..., x_n])
は
linsolve
か algsys
をコールすることで,
同時(線形もしくは非線形)代数方程式系を解き、変数の解リストのリストを返します。
linsolve
の場合、このリストは解の単一リストを含みます。
引数に2つのリストを取ります。
最初のリストは解くべき等式を示し、2番目のリストは決定すべき未知数のリストです。
もし等式の変数の総数が等式の数に等しいなら、2番目の引数リストは省略できます。
programmode
が false
の時、
solve
は中間式 (%t
)ラベルを持つ解を表示し、ラベルのリストを返します。
globalsolve
が true
でかつ、問題が2つ以上の線形方程式を解くことである場合、
それぞれの解くべき変数は方程式の解の値にバインドされます。
例:
(%i1) solve (asin (cos (3*x))*(f(x) - 1), x); solve: using arc-trig functions to get a solution. Some solutions will be lost. %pi (%o1) [x = ---, f(x) = 1] 6 (%i2) ev (solve (5^f(x) = 125, f(x)), solveradcan); log(125) (%o2) [f(x) = --------] log(5) (%i3) [4*x^2 - y^2 = 12, x*y - x = 2]; 2 2 (%o3) [4 x - y = 12, x y - x = 2] (%i4) solve (%, [x, y]); (%o4) [[x = 2, y = 2], [x = .5202594388652008 %i - .1331240357358706, y = .07678378523787788 - 3.608003221870287 %i], [x = - .5202594388652008 %i - .1331240357358706, y = 3.608003221870287 %i + .07678378523787788], [x = - 1.733751846381093, y = - .1535675710019696]] (%i5) solve (1 + a*x + x^3, x); 3 sqrt(3) %i 1 sqrt(4 a + 27) 1 1/3 (%o5) [x = (- ---------- - -) (--------------- - -) 2 2 6 sqrt(3) 2 sqrt(3) %i 1 (---------- - -) a 2 2 - --------------------------, x = 3 sqrt(4 a + 27) 1 1/3 3 (--------------- - -) 6 sqrt(3) 2 3 sqrt(3) %i 1 sqrt(4 a + 27) 1 1/3 (---------- - -) (--------------- - -) 2 2 6 sqrt(3) 2 sqrt(3) %i 1 (- ---------- - -) a 2 2 - --------------------------, x = 3 sqrt(4 a + 27) 1 1/3 3 (--------------- - -) 6 sqrt(3) 2 3 sqrt(4 a + 27) 1 1/3 a (--------------- - -) - --------------------------] 6 sqrt(3) 2 3 sqrt(4 a + 27) 1 1/3 3 (--------------- - -) 6 sqrt(3) 2 (%i6) solve (x^3 - 1); sqrt(3) %i - 1 sqrt(3) %i + 1 (%o6) [x = --------------, x = - --------------, x = 1] 2 2 (%i7) solve (x^6 - 1); sqrt(3) %i + 1 sqrt(3) %i - 1 (%o7) [x = --------------, x = --------------, x = - 1, 2 2 sqrt(3) %i + 1 sqrt(3) %i - 1 x = - --------------, x = - --------------, x = 1] 2 2 (%i8) ev (x^6 - 1, %[1]); 6 (sqrt(3) %i + 1) (%o8) ----------------- - 1 64 (%i9) expand (%); (%o9) 0 (%i10) x^2 - 1; 2 (%o10) x - 1 (%i11) solve (%, x); (%o11) [x = - 1, x = 1] (%i12) ev (%th(2), %[1]); (%o12) 0 |
シンボル %r
が解の中で任意定数を示すのに使われます。
(%i1) solve([x+y=1,2*x+2*y=2],[x,y]); solve: dependent equations eliminated: (2) (%o1) [[x = 1 - %r1, y = %r1]] |
更に知るには algsys
と %rnum_list
を参照してください。
Categories: Algebraic equations
デフォルト値: true
solvedecomposes
が true
の時、
もし多項式を解くように頼まれたなら、
solve
は polydecomp
をコールします。
Categories: Algebraic equations
デフォルト値: false
solveexplicit
が true
の時、
solve
が陰解―すなわち、F
がある関数である形式F(x) = 0
の解―
を返すことを抑制します。
Categories: Algebraic equations
デフォルト値: true
solvefactors
が false
の時、
solve
は式を因数分解しようとしません。
false
設定は因数分解が不要ないくつかの場合に望まれるかもしれません。
Categories: Algebraic equations
デフォルト値: true
solvenullwarn
が true
の時、
もし空の等式リストか空の変数リストを引数にコールされたら
solve
は警告メッセージを表示します。
例えば solve ([], [])
は2つの警告メッセージを表示し、 []
を返します。
Categories: Algebraic equations
デフォルト値: false
solveradcan
が true
の時、
solve
は radcan
をコールします。
solve
は遅くなりますが、指数と対数を含むある問題が解けるようになります。
Categories: Algebraic equations
デフォルト値: true
solvetrigwarn
が true
の時、
solve
は、方程式を解くために逆三角関数を使い そのため解を失っていることを示す
メッセージを表示するかもしれません。
Categories: Algebraic equations
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.