[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
80.1 Introduction to simplification | ||
80.2 Package absimp | ||
80.3 Package facexp | ||
80.4 Package functs | ||
80.5 Package ineq | ||
80.6 Package rducon | ||
80.7 Package scifac | ||
80.8 Package sqdnst |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ディレクトリ maxima/share/simplification
は整理ルールと整理関数を実装する
いくつかのスクリプトと整理に関係しないいくつかの関数を含みます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
absimp
パッケージは abs
と
signum
関数のために組み込み整理ルールを拡張するパターンマッチングルールを含みます。
absimp
は、組み込み assume
関数で確立された関係や、偶数や奇数に関する
modedeclare (m, even, n, odd)
のような宣言によって確立された関係を考慮します。
absimp
は abs
と signum
を使って
unitramp
と unitstep
関数を定義します。
load (absimp)
はこのパッケージをロードします。
demo (absimp)
はこのパッケージのデモを表示します。
例:
(%i1) load (absimp)$ (%i2) (abs (x))^2; 2 (%o2) x (%i3) diff (abs (x), x); x (%o3) ------ abs(x) (%i4) cosh (abs (x)); (%o4) cosh(x) |
Categories: Simplification functions · Rules and patterns · Share packages · Package absimp
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
facexp
パッケージは、
制御された展開によって式を構造化する能力をユーザーに与えるいくつかの関連関数を含みます。
式が物理的意味を持つ変数を含むとき、この能力は特に役に立ちます。
そんな式の最も簡潔な形式は、それらの変数に関して式を完全に展開し、
その後係数を因数分解することで得られることがしばしばあるからです。
この手続きは標準の Maxima関数を使って実行することは難しくありませんが、
追加の微調整も望まれていて、これらの仕上げは適用するのが更に難しくなることがあります。
関数 facsum
とその関連形式は、
この方法で式の構造を制御するための便利な手段を提供します。
別の関数 collectterms
は、この形式に既に整理された複数の式を
式全体を再整理することなく、足し合わせるのに使うことができます。
式が非常に大きいとき、この関数は役に立つかもしれません。
load (facexp)
はこのパッケージをロードします。
demo (facexp)
はこのパッケージのデモを見せます。
Categories: Expressions · Share packages · Package facexp
引数 arg_1, ..., arg_nに依存する
exprの形式を返します。
引数は ratvars
に適した任意の形式か、そんな形式のリストを取り得ます。
もし引数がリストでないなら、
返される形式は、引数に関して完全に展開され、引数の係数は因数分解されます。
これらの係数は、非合理的な意味合いを除いて引数に依存しません。
引数のいずれかがリストなら、リストすべてを 1つのリストに結合し、
facsum
は、
引数の係数に対して factor
をコールする代わりに
これらの係数に対して自分自身をコールします。
この再帰コールに関しては、上記で新しく構成されたリストを新しい引数リストとして使います。
この処理は、リストの中に望まれた要素を入れ子にすることで、
任意の深さまで繰り返すことができます。
log (x + y)
のような、より複雑な部分式に関して
facsum
したいかも知れません。
そんな引数も許されています。
時々、ユーザーは
式に関して、先頭演算子によってのみ指定された上記形式いずれかが欲しいかもしれません。
例えば、すべての log
に関して facsum
したかもしれません。
この場合、この方法で扱われる特定の log
か、代わりに式
operator (log)
や 'operator (log)
を引数に含むことができます。
もし演算子 op_1, ..., op_nに関して
式 exprを facsum
したいなら、
facsum (expr, operator (op_1, ..., op_n))
を評価します。
operator
形式はリスト引数の中でも可能です。
更に、スイッチ facsum_combine
と nextlayerfactor
の設定は
facsum
の結果に影響するかもしれません。
Categories: Package facexp · Expressions
デフォルト値: false
nextlayerfactor
が true
の時、引数の係数の因数分解された形式の因子に
facsum
の再帰コールを適用します。
false
の時、 facsum
の再帰コールが起こる時はいつでも、
全体としてそれぞれの係数にfacsum
を適用します。
facsum
の引数リストにアトム nextlayerfactor
を入れると、
nextlayerfactor: true
の効果がありますが、
式の次のレベルだけに関してです。
nextlayerfactor
はいつも
true
か false
にバインドされているので、
facsum
の引数リストの中に現れる時はいつでも、
シングルクォートで表さなければいけません。
Categories: Package facexp · Expressions
デフォルト値: true
引数が多項式の商の時、
facsum_combine
は facsum
が返す最終結果の形式を制御します。
もし facsum_combine
が false
なら、
形式は既に記述したような完全に展開された和として返されますが、
もし true
なら、返される式は既に記述した形式の多項式の比です。
有理式の分子と分母両方を
facsum
したいが、分母が分子の項ずつに掛けられたくない時、このスイッチの
true
設定が役に立ちます。
Categories: Package facexp · Expressions
exprの因子に関して引数として
arg_1, ... arg_nを付けて facsum
をコールすることで得られる
exprの形式を返します。
もし exprの因子のいずれかがべきに累乗されるなら、
因子と指数と両方がこの方法で処理されます。
Categories: Package facexp · Expressions
もしいくつかの式が facsum
か factorfacsum
, factenexpand
,
facexpten
, factorfacexpten
で整理されていて、
それらが一緒に加算されているなら、関数
collectterms
を使ってそれらを結合することが望まれる場合があります。
collectterms
は
nextlayerfactor
を除いてこれらの他の関連した関数に渡すことができる引数すべてを
引数として取ることができます。
collectterms
の利点は facsum
と似た形式を返すことです。
しかし、既に facsum
で処理された加算形式なのでこの処理を繰り返す必要はありません。
この能力は加算する式が非常に大きい時特に役立ちます。
Categories: Package facexp · Expressions
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Categories: Share packages · Package functs
式 exprからパーツ nを削除します。
もし nが形式 [l, m]
のリストなら、パーツ
lから mまでを削除します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Expressions
変数 xに関する式のリスト[f_1, ..., f_n]の Wronskian行列を返します。 Wronskian行列の行列式は式のリストの Wronskian行列式です。
wronskian
を使うには最初に load(functs)
してください。例えば:
(%i1) load(functs)$ (%i2) wronskian([f(x), g(x)],x); (%o2) matrix([f(x),g(x)],['diff(f(x),x,1),'diff(g(x),x,1)]) |
Categories: Package functs · Differential calculus
行列 Mの跡(対角要素の和)を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Matrices
分母を有理化するように、 zの分子と分母に分母の複素共役を掛けます。 もし与えられたものが正準有理式 (CRE)形式なら、正準有理式 (CRE)形式を返し、 そうでないなら、一般形式を返します。
この関数を使うには最初に load(functs)
を書いてください。
Categories: Package functs · Expressions
もし exprがゼロでなく、
freeof (x, expr)
がtrue
を返すなら、
true
を返します。
そうでないなら false
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Expressions
exprが a*x + b
の形の式の時、
linear
は 3つの形式変数 b, a, xに対応する3つの等式のリストを返します。
ここで、 aはゼロでなく、 aと bは xに依存しません。
そうでないなら、 linear
は exprを返します。
load(antid)
はこの関数をロードします。
例:
(%i1) load (antid); (%o1) /usr/share/maxima/5.29.1/share/integration/antid.mac (%i2) linear ((1 - w)*(1 - x)*z, z); (%o2) [bargumentb = 0, aargumenta = (w - 1) x - w + 1, xargumentx = z] (%i3) linear (cos(u - v) + cos(u + v), u); (%o3) false |
Categories: Package antid · Expressions
takegcd
が true
の時、
gcdivide
は多項式 pと
qを最大公約多項式で割り、結果の比を返します。
takegcd
が false
の時、
gcdivide
は比 p/q
を返します。
この関数を使うには最初にload(functs)
と書いてください。
ezgcd
, gcd
, gcdex
, poly_gcd
も参照してください。
例:
(%i1) load(functs)$ (%i2) p1:6*x^3+19*x^2+19*x+6; 3 2 (%o2) 6 x + 19 x + 19 x + 6 (%i3) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x; 5 4 3 2 (%o3) 6 x + 13 x + 12 x + 13 x + 6 x (%i4) gcdivide(p1, p2); x + 1 (%o4) ------ 3 x + x (%i5) takegcd:false; (%o5) false (%i6) gcdivide(p1, p2); 3 2 6 x + 19 x + 19 x + 6 (%o6) ---------------------------------- 5 4 3 2 6 x + 13 x + 12 x + 13 x + 6 x (%i7) ratsimp(%); x + 1 (%o7) ------ 3 x + x |
Categories: Package functs · Polynomials
算術級数 a, a + d, a + 2*d, ...,
a + (n - 1)*d
の第 n項を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Sums and products
幾何級数 a, a*r, a*r^2, ...,
a*r^(n - 1)
の第 n項を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Sums and products
調和級数 a/b, a/(b + c),
a/(b + 2*c), ..., a/(b + (n - 1)*c)
の第 n項を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Sums and products
算術級数の 1から nまでの和を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Sums and products
幾何級数の 1から nまでの和を返します。
もし nが無限大 (inf
)なら、
rの絶対値が 1未満でのみ、和は有限です。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Sums and products
Gaussian確率函数 %e^(-x^2/2) / sqrt(2*%pi)
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
Gudermannian函数 2*atan(%e^x)-%pi/2
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
逆 Gudermannian函数 log (tan (%pi/4 + x/2))
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
正矢(せいし) 1 - cos (x)
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
余矢(よし) 1 - sin (x)
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
外正割 (exsecant) sec (x) - 1
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
半正矢 (1 - cos(x))/2
を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
一度に r個を取る n個のオブジェクトの組み合わせの数を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
n個のオブジェクトの集合から選択された r個のオブジェクトの置換の数を返します。
この関数を使うには最初に load(functs)
と書いてください。
Categories: Package functs · Mathematical functions
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ineq
パッケージは不等式の整理規則を含みます。
セッション例:
(%i1) load(ineq)$ Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. (%i2) a>=4; /* a sample inequality */ (%o2) a >= 4 (%i3) (b>c)+%; /* add a second, strict inequality */ (%o3) b + a > c + 4 (%i4) 7*(x<y); /* multiply by a positive number */ (%o4) 7 x < 7 y (%i5) -2*(x>=3*z); /* multiply by a negative number */ (%o5) - 2 x <= - 6 z (%i6) (1+a^2)*(1/(1+a^2)<=1); /* Maxima knows that 1+a^2 > 0 */ 2 (%o6) 1 <= a + 1 (%i7) assume(x>0)$ x*(2<3); /* assuming x>0 */ (%o7) 2 x < 3 x (%i8) a>=b; /* another inequality */ (%o8) a >= b (%i9) 3+%; /* add something */ (%o9) a + 3 >= b + 3 (%i10) %-3; /* subtract it out */ (%o10) a >= b (%i11) a>=c-b; /* yet another inequality */ (%o11) a >= c - b (%i12) b+%; /* add b to both sides */ (%o12) b + a >= c (%i13) %-c; /* subtract c from both sides */ (%o13) - c + b + a >= 0 (%i14) -%; /* multiply by -1 */ (%o14) c - b - a <= 0 (%i15) (z-1)^2>-2*z; /* determining truth of assertion */ 2 (%o15) (z - 1) > - 2 z (%i16) expand(%)+2*z; /* expand this and add 2*z to both sides */ 2 (%o16) z + 1 > 0 (%i17) %,pred; (%o17) true |
不等式の回りで括弧を使うことについて注意してください;
ユーザーが (A > B) + (C = 5)
と入力した時、
結果は A + C > B + 5
ですが、 A > B + C = 5
は構文エラーであり、
(A > B + C) = 5
は完全に何か他のものです。
規則定義の完全なリストを見るには、 disprule (all)
を実行してください。
Maximaが不等式に掛けられる量の符号を決定できない時、 ユーザーは問い合わせを受けるでしょう。
最もありふれた仕様の欠陥を以下に例示します:
(%i1) eq: a > b; (%o1) a > b (%i2) 2*eq; (%o2) 2 (a > b) (%i3) % - eq; (%o3) a > b |
別の問題は 0掛ける不等式です;
これを 0にするデフォルト動作はそのままです。
しかし、もし X*some_inequality
とタイプして、
Maximaが X
の符号を尋ね、
zero
(または z
)と答えたなら、
プログラムは X*some_inequality
を返し、
X
が 0という情報を使いません。
そんな時は、データベースは、決定の際、
X
を評価する目的ではなく、比較目的のためだけに使われるので、
ev (%, x: 0)
を実行すべきです。
パッケージがロードされた時、
整理器が、パッケージなしよりたくさんの規則を検証するよう強制されるので、
ユーザーはより遅い応答に気がつくかもしれません。
だから、これらを利用した後、規則を取り除きたいかもしれません。
(あなたが定義したかもしれないものすべてを含み)規則すべてを消すには、
kill (rules)
してください;
もしくは、もっと選択的にそれらのうちのいくつかだけ消すかもしれません;
もしくは、特定の規則に remrule
を使ってください。
もし自分の規則を定義した後、このパッケージをロードするなら、
同じ名前を持つあなたの規則をつぶすでしょう。
このパッケージの規則は以下の通りです:
*rule1
, ..., *rule8
,
+rule1
, ..., +rule18
,
そして、それを参照するには、
"+"
に関する最初の規則を限定して取り除くための
remrule ("+", "+rule1")
とか、
二番目の乗法規則の定義を表示するための disprule ("*rule2")
とか、
規則名を引用符で囲まなければいけません。
Categories: Simplification functions · Rules and patterns · Share packages · Package ineq
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Categories: Expressions · Share packages · Package rducon
exprの定部分式を構成された定アトムで置き換え、
これら構成された定数すべての定義を等式のリスト const_eqns
に保存し、修正された
exprを返します。
exprのそれらのパーツは、関数 constantp
が施された時
true
を返す定数です。
それゆえ、 reduce_consts
を呼び出す前に、
declare ([objects to be given the constant property], constant)$ |
をして、自分の式に現れる定数量のデータベースを設定すべきです。
もしこれらの数式計算の後、 Fortran出力を生成する予定があるなら、 最初のコードセクションの 1つはすべての定数の計算であるべきです。 このコードセグメントを生成するには、
map ('fortran, const_eqns)$ |
を実行してください。
reduce_consts
に影響する const_eqns
を除いた変数は以下の通りです:
const_prefix
(デフォルト値: xx
)
定部分式を表すために
reduce_consts
が生成するシンボルすべてに接頭として付けるのに使われる文字列です。
const_counter
(デフォルト値: 1)は
reduce_consts
が見つける定部分式それぞれを表すためのユニークなシンボルを生成するのに使われる整数添字です。
load (rducon)
はこの関数をロードします。
demo (rducon)
はこの関数のデモを見せます。
Categories: Package rducon · Expressions
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Categories: Expressions · Share packages · Package scifac
gcfac
は、科学者が式をより簡単にしようとする時に適用するのと同じ発見的方法の適用を
試みる因数分解関数です。
gcfac
は単項式タイプの因数分解に限られます。
和に関しては gcfac
は以下を行います:
対のすべての可能な再配列の中から最も簡潔な対因数分解された結果を産むものを見つけることの 組み合わせ的に困難な性質のため、 項目(3)は必ずしも、対での因数分解の最善の仕事をしません。
load (scifac)
はこの関数をロードします。
demo (scifac)
はこの関数のデモを見せます。
Categories: Package scifac · Expressions
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
可能なら、簡単で、数値的で、二項無理数 (binomial surds)の sqrt
を denestします。
例えば、
(%i1) load (sqdnst)$ (%i2) sqrt(sqrt(3)/2+1)/sqrt(11*sqrt(2)-12); sqrt(3) sqrt(------- + 1) 2 (%o2) --------------------- sqrt(11 sqrt(2) - 12) (%i3) sqrtdenest(%); sqrt(3) 1 ------- + - 2 2 (%o3) ------------- 1/4 3/4 3 2 - 2 |
時々、
(19601-13860 sqrt(2))^(7/4)
に対してのように、
sqrtdenest
を複数回適用することが役立ちます。
load (sqdnst)
はこの関数をロードします。
Categories: Expressions · Share packages · Package sqdnst
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.