| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 75.1 Introduction to simplification | ||
| 75.2 Package absimp | ||
| 75.3 Package facexp | ||
| 75.4 Package functs | ||
| 75.5 Package ineq | ||
| 75.6 Package rducon | ||
| 75.7 Package scifac | ||
| 75.8 Package sqdnst |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ディレクトリ maxima/share/simplificationは整理ルールと整理関数を実装する
いくつかのスクリプトと整理に関係しないいくつかの関数を含みます。
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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)
分母を有理化するように、 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
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
Categories: Expressions · Share packages · Package scifac
gcfacは、科学者が式をより簡単にしようとする時に適用するのと同じ発見的方法の適用を
試みる因数分解関数です。
gcfacは単項式タイプの因数分解に限られます。
和に関しては gcfacは以下を行います:
対のすべての可能な再配列の中から最も簡潔な対因数分解された結果を産むものを見つけることの 組み合わせ的に困難な性質のため、 項目(3)は必ずしも、対での因数分解の最善の仕事をしません。
load (scifac)はこの関数をロードします。
demo (scifac)はこの関数のデモを見せます。
Categories: Package scifac · Expressions
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
可能なら、簡単で、数値的で、二項無理数 (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
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって5月, 20 2015にtexi2html 1.76を用いて生成されました。