from 2015-6-7

自分用の備忘録としてネット上にも残しておこうと思い書いています

maple_僕のmapletips1.txt

パレットの表示の変更
方程式のラベル 必要な式だけが可能か?
またあとから前に書いた式にラベルをつけることが
可能か?そのときにそれまでにつけたラベルは順送り
されるか?Yes.フォーマット->方程式のラベル->選択部分のチェックボックスを入れたり
消したりする
方程式のラベル参照はcommand + h
実行グループをカーソルの前に挿入 command+k
カーソルの後に挿入 command+j
文書作成領域の挿入 command +t
補完 esc
右クリック ctr + クリック


**************************
2枚のA4をA4にまとめてpdfにする方法
mapleでpdfにする。
印刷->プレビュー でプレビューで開くことになる。
command+P プレビュー->レイアウト2
****************************
{x = x, y = -3*x+6}


実行グループの分割f3
実行グループの結合f4
sift command h クイックヘルプ
太字 command+b
イタリック command+i
アンダーライン command+u

数式を移動するのは選んでドラッグ
別の場所にコピーするのはoption+ドラッグ

documentブロックを折り畳む(数学的)
とdocumentブロックを展開する(メープル的)
を使って表示を切り替えれる

ドキュメントブロックの中の実行グループを展開
はview->expand execution block
たたむときはview->collapse execution block



ドキュメントブロックを消去してパラグラフを書いたり、
>でコマンドを書いて実行させて、そのあとまとめてドキュメントブロック
を作成する。さらに表示させたくないoutcomeがあれば左のルーラーの
ところを右クリックし、ドキュメントブロックを展開し、コマンドの
最後にコロン:を付ける。さらにドキュメントブロックを折り畳めば
きれいに見える。
(コードを隠すのにはドキュメントブロックを使う
結果を隠すのは:)
http://www.maplesoft.com/support/training/videos/maple12/04-Doc_Creation.aspx



表示ー>マーカー
フォーマットー>ドキュメントブロックを消去、作成
で数学ふうに表示したり、コマンド風に表示したりできる
その際に、表示->マーカーをしておくと便利

実行カーソル>を選んで挿入->文章作成領域 あるいはcommand + T
2dmath領域はcommand + R


view->show/hide contentsで表示されるものを決めれる。
(たとえばtableの区切り線を表示させるか否か)


数式の表示
sqrt(x) の部分を反転させた後、右クリックをします。
すると、コンテキストメニューが現れます。その中の「変換」から、
「2-D Math」を選んでいただければ、テキストの中に数式を入れられます。

注釈の付け方 format->注釈(annotations)
注釈を削除・編集 edit->注釈の削除・編集

キャンバスの入れ方
挿入->キャンバス

assumeコマンドを私用して名前に適用した前提条件はadditionally オプションを
指定した場合を除き、assumingコマンドでは無視される

assume(x < 1);
is(-x^2+1 > 0) assuming x > -1;
                             false
is(-x^2+1 > 0) assuming additionally, x > -1
                              trues

クイックヘルプはF1で呼び出す

****************************ここからノートに書き写す********
solve(2=x^2,x,useassumptions) assuming x>0;
というふうにuseassumptionsが必要

plots[display]の使い方
plot1 := plot(ln(x), x = 0 .. 25);
plot2 := plot(ln(x-5), x = 0 .. 25);
print(`output redirected...`); # input placeholder
plots[display]([plot1, plot2]);

ヘルプからプロットガイドでいろいろな図の書き方を知れる

図の大きさを変える(maple18から)
サイズを指定した場合:
plot(sin(x), size = [200,300]);
plot(sin(x), size = [default, golden]);
プロット全体に指定サイズを適応させる方法
plots[setoptions](size = [300, 100]);
plot(sin(x));


option+*1;

#上で得た式をyに代入します。
eval(y, d_a);

まとめると
eval(y,isolate(x,D(a)));


<<複数をisolateする方法: x^2+z^2=-t^2+y^2とする方法>>
t^2+x^2+y^2+z^2 = 0;
select(has, lhs(t^2+x^2+y^2+z^2 = 0), {x, z}) = R;
algsubs(x^2+z^2 = R, t^2+x^2+y^2+z^2 = 0);
isolate(t^2+y^2+R = 0, R);
algsubs(R = -t^2-y^2, x^2+z^2 = R);

**********ここから


<<第一項の分母のみのfactor>>
Expr:=-tau*alpha*sigma*omega*(tau-omega^(-sigma))/(s*L*(1-gamma-tau^2+tau^2*gamma))

-(sigma*alpha)/s*(1-tau*omega^sigma)/(omega^(sigma-1)*(1-gamma)*L*(1/tau-tau));

答え
A:=factor(denom(op(1, Expr)));

subs(op(1,Expr)=numer(op(1,Expr))*1/A, Expr);

別解
subsop(1= factor(op(1, Expr)), Expr);

別解2
subs(op(3,denom(op(ex)[1]))=factor(op(3,denom(op(ex)[1]))),ex);

係数をfactorする
a:=sigma*omega*alpha = mu(H, H)*s*omega*gamma1*L+mu(F, H)*s*L-mu(F, H)*s*L*gamma1;
collect(a, {mu(F,H),s,L}, factor);
sigma*omega*alpha = s*L*(1-gamma1)*mu(F, H)+mu(H, H)*s*omega*gamma1*L
とmu(F,H)の係数でまとめて、その係数をfactorすることができる。

別のやりかたとしてはappyruleを使う方法がある(がcollect({a,b,c},factor)のほうがいい)
algsubsではa*c/(a+b)のa/(a+b)をxと置き換えることができない。
このときにはstudent[powsubs](a=b,f)
を使うか、applyruleを使う

algsubsの使い方
f:=x*y+x^2*y+x/y^2+1
algsubs(x*y=0,f)は0+x*(x*y)+x/y^2+1となりx/y^2+1
algsubs(x/y=0,f)はx*y+x^2*y+1 {x/y^2=x*y^(-2)}だが

「uのmonomialがvのmonomialを割れるためには。
i) 0=<degree(u,x)=<degree(v,x)か ii) degree(v,x)=<degree(u,x)<0
のいずれかでなければならないということから(ヘルプ参照)」

今の場合は割られるもの(v)x/y^2、割るもの (u) x/yがmonomial(単項)について
degree(v,y)=-2<-1=degree(u,y)となるので ii)の基準からyで割れる。
xについては
degree(u,x)=1=degree(v,x)なので i)の基準からxで割れる
これからx/y=0をfにalgsubsできることになる。

f := 2*a+b;なら
algsubs( a+b=c, f, [a,b] );はaを先に考えて
2c-b=2(a+b)-bとなるから2c-bを返す。
algsubs( a+b=c, f, [b,a] );はbを先に考えて
a+b=c->b=c-aなので
2a+b=b+2a=(c-a)+2a=c+a=a+cと計算

またexactのoptionを付けて
algsubs(a+b = p, 2*a+b, exact)とすると、
aの係数がa+bの1と2*a+bの2というふうになり、2/1がaについての係数の比だけど
bの係数がa+bの1と2*a+bの1というふうになり、1/1がbについての係数の比
となり、その二つの係数の比はことなるので返ってくる値は
2*a+bという元のままのものである。

subsと同じで代入前に積やパワー(乗)を展開したりしない。
subs(x = 1, a[x])がa[1]だがalgsubs(x=1,a[x])は
a[x]を返す。つまり内のインデックスネームには代入しない。

また代入の結果に、ファンクションコールが適用される(w*y=0をfに代入するなら
w*yを代入した結果に、w*y=0が適用されてw*yをゼロにおくということ)

expandについて

ee:=(a+b)*z+sin(a+b)+exp(a+b)

expand(ee,sin(a+b))とすればsin(a+b)は手をつけない
ようにできる
またindetsを使うやり方もある。
expand(ee, op(indets(ee, specfunc(anything,exp))));
     z a + z b + sin(a) cos(b) + cos(a) sin(b) + exp(a + b)
 the exponentialとsineを展開しない
expand(ee, op(indets(ee, specfunc(anything,[exp,sin]))));
              z a + z b + exp(a + b) + sin(a + b)
すべての関数を展開しない
expand(ee, op(indets(ee, function)));
              z a + z b + exp(a + b) + sin(a + b)
b := (sin(x+y)+sin(x-y))^2;
frontend(expand,[b]);

sin(x+y)^2+2*sin(x+y)*sin(x-y)+sin(x-y)^2
を得れる。関数はすべてexpandしない



indetsの使い方
indeterminantsを返す。タイプネームをつけるとindeterminates以外の物も拾う
indets(3*x^2-5*x*y+6-y^2);
                             {x, y}
a:=5*x-3*sin(y)+x*y^4+exp(z^2);
indets(a);
                  { x, y, z, exp(z^2), sin(y) }
indets(a,function);
                      { exp(z^2), sin(y) }
次のやり方で効率的に拾える
e := x^(1/2) + exp(x^2) + f(9):
indets(e, 'specfunc(anything, {f,g})');
{f(9)}


applyopの使い方
p := y^2-2*y-3;
applyop(f,2,p);
結果は
y^2+f(-2*y)-3

mapは
map(f, x + y*z);
で+のoperandにfがかかりf(x)+f(y*z)となる
map(f,x*y)ならf(x)*f(y)と*のoperandにfが
掛かる。





combine(f, `@@`)
combine/@@ combines nested functions into function expressions using the iterated composition operator, "@@"
>combine(f*2, `@@`);
(f@@4)(x)
>combine(g*3(x))), `@@`);
(g@@3)(x)




 




****************************************************


行列の計算
http://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/Maple/LA/VectorMatrix.pdf
http://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/Maple/LA/Inner&Outer.pdf
http://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/Maple/LA/Det&Inverse.pdf
http://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/Maple/LA/Eigenvalues.pdf
http://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/Maple/Symbolic/Ex2.pdf




mapleの勉強方法
http://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/Maple/
?mapleresources
で検索すると勉強手段が出てくる。

?examples/index
でいろいろでてくる

********?examples/index*****************
Symbolic Calculations
<<Define>>

>define(f, linear, f(1) = tt);
>f(2*x+4);
2 f(x) + 4 tt
>define(g, g(a::algebraic^n::(nonunit(integer))) = n*g(a), g(a::realcons) = a);
>g(x^2)
2*g(x)
>g(Pi*sqrt(2))
Pi*sqrt(2)

>define(P, diff(P(x), x) = 1/P(x));
>diff(P(x), x);
1/P(x)
>diff(P(exp(z)), z);
exp(z)/P(exp(z))
>diff(1/P(x^2), x);
-2*x/P(x^2)^3

IntegrationTools[command](arguments)
command(arguments)
の使い方

plotsetup(maplet);
plot(x, x = 0 .. 1);
で図だけ別表示できる


myTipsofMaple。mwからの書き出し
> Maple上でmathMLに変換→Mathtypeにペーストして数式をつくる作り方は
> MathML[Export](式)として式を変換し、それをコピーして、Mathtypeにペーストする。
> その時に、Mathtypeの設定を、MathMLがペーストできるように変える。
>

代入について
> 副次式を代入する場合には algsubs コマンドを使用します。 > algsubs(a+b=1, a+b+c); 1 + c > subs(a*b=2,
> a*b*c); * a b c > algsubs(a*b=2, a*b*c); 2 c
powerの簡単化の方法

> simplify*4;
{\frac {\sin \left( x \right) }{\cos \left( x \right) }}
> diff(sin(x),x);
cos(x)
> eq := Diff(sin(x),x);
d eq := --- sin(x) dx
> latex(eq);
{\frac {d}{dx}}\sin \left( x \right)
> eq=value(eq);
d --- sin(x) = cos(x) dx
> latex(eq=value(eq));
{\frac {d}{dx}}\sin \left( x \right) =\cos \left( x \right)
>
> simplifyにsizeをつけるとより簡単になる
> c := v =
> -(-w[2]*theta*w[1]-theta*w[2]-w[2]^2*phi^2-w[2]*phi^2+theta*w[2]^2*phi^2+theta
> *w[2]*phi^2+theta*phi*w[1]^2+w[1]*w[2]*phi+phi*w[1]-w[1]*theta*w[2]*phi)/(-w[1]*
> theta*w[2]*phi-phi*w[2]^2-w[2]*phi+phi*theta*w[2]^2+theta*phi^2*w[1]^2+theta*phi
> ^2*w[1]+w[2]*w[1]+w[1]-w[2]*theta*w[1]-theta*w[1]);
             /                                    2    2           2
  c := v = - \-w[2] theta w[1] - theta w[2] - w[2]  phi  - w[2] phi

                 2    2                 2                 2                
     + theta w[2]  phi  + theta w[2] phi  + theta phi w[1]  + w[1] w[2] phi

                                     \//                               2
     + phi w[1] - w[1] theta w[2] phi/ \-w[1] theta w[2] phi - phi w[2]

                                2            2     2            2     
     - w[2] phi + phi theta w[2]  + theta phi  w[1]  + theta phi  w[1]

                                                      \
     + w[2] w[1] + w[1] - w[2] theta w[1] - theta w[1]/
>
> simplify(c,size);
        /    2                 2
    v = \-phi  (theta - 1) w[2]

         /                                    2                    \     
       + \(theta - phi + theta phi) w[1] + phi  (1 - theta) + theta/ w[2]

                                  2\//                    2
       - phi w[1] - theta phi w[1] / \(theta - 1) phi w[2]

       + *5 = y(x) }
                  \                                             /
> j:=diff(h,x);
                 /       / d      \                / d      \      
           j := { 2 y(x) |--- y(x)| - 2 z(x) - 2 x |--- z(x)| = 0,
                 \       \ dx     /                \ dx     /      

                               /         / d      \\    d      \
             2 x + sin(x z(x)) |z(x) + x |--- z(x)|| = --- y(x) }
                               \         \ dx     //    dx     /
> solve(j,{diff(y(x),x),diff(z(x),x)});
            / d           2 y(x) x + y(x) sin(x z(x)) z(x) - z(x)  
           { --- z(x) = - ---------------------------------------,
            \ dx                 x (y(x) sin(x z(x)) - 1)          

              d                   2 x         \
             --- y(x) = - -------------------- }
              dx          y(x) sin(x z(x)) - 1/
> 分母と分子を消去しないやりかた
> aa:=``(delta[1]*n[1])/``(n[f1]*delta[1]);



一時的代入は't'というふうに' 'で囲む。
> t:=a+1/a;
                                           1
                                  t := a + -
                                           a
> t^2+2;
                                        2    
                                 /    1\     
                                 |a + -|  + 2
                                 \    a/     
> 't'^2+2;
                                     2    
                                    t  + 2
>
代入についてsimplify(x^3,{x^2=3*a+1});というのがalgsubsと同じ働きをするものとして使えそう。
> simplify(x^3,{x^2=3*a+1});
                                  3 x a + x
> コマンド+シフト+スペースで入力補完

cat コマンドを使ってTikzで使えるデータを作る。
pl := plot(sin(x), x=0..5, numpoints=100);
data := plottools[getdata](pl);
M := data[-1];
seq(M[i], i = 1 .. 100);%でモニターにMのデーターがうつる。
ExportMatrix("test.dat”,M);%テキストファイルとして保存する場合(保存できない場合はファイルを作って、
そのファイルへのパスを書く)
ExportMatrix("test.csv", M, delimiter=“,”);%cvsデータとして保存する場合

pt:=Matrix(2,2, [[1,2],[3,5]]);
TikZdata := cat("(", convert(pt[1,1], string), ",", convert(pt[1,2], string), ")", " -- ");
とすることで
TikZdata := "(1,2) -- "
と表示される。Tikzの形式

mapleデータをtikzで利用する方法
pl := plot(sin(x), x = 0 .. 5, numpoints = 100);
data := plottools[getdata](pl);
M := data[-1];
string1 := cat(seq(sprintf("(%a,%a,)==", M[k, 1], M[k, 2]), k = 1 .. op([1, 1], M)))[1 .. -3];

thisproc, _passedの使い方

p := proc( expr )
if type( expr, 'numeric' ) then
          sin( 2 * expr )
      elif type( expr, { '`+`', '`*`' } ) then
          map( thisproc, _passed )
      else
          'procname'( _passed )
      end if
end proc:
> p( 2 );
sin(4)
> p( x );
p(x)
> p( x + 1 );
p(x)+sin(2)
>p(a*b);
p(a)*p(b)


微分の仕方
f := x->x^2;
with(Student[MultivariateCalculus]);
Jacobian([f(x)], [x] = [3])
上のだとf(x)をxで全微分して、x=3で評価している

*1:shift+return)<====enter) でインライン評価

<paragraphでパラグラフ挿入(タイトルを入れる時など)>>
edit->Split/Joinedで一つの大きなパラグラフを作る。
それから>のアイコンをクリック(command+sift+< (?))で
パラグラフを作る。

入力についてcommand +T…..textモード
          command +R…2D数式モード
      command+underscore…subscript


plotbuilderの使い方
tool->assistant->plotbuilderで
図のcode(コード、コマンド)を吐き出させたり、図そのものを描ける。
パッケージの呼び出しwith(Student[Precalculus])などが
必要な場合もある。(どのパッケージが必要かはエラーをみて
考える)
 そのコードをコピーペーストして出て来たものをdocument block
を使ってコマンドを消すこともできる。
一旦document blockをformat->Remove document blockで消して
指定して再度Create documentblockにする
View->Expand Document blockやCollapse document blockを
使って展開したり折り畳むこともできる。

plot(x^2, x = -1 .. 1, labels = [x[old], x[old]^2], labelfont = [TIMES, ITALIC, 16])
で軸に^2や、_oldを入れる事ができる。






******************************************************
<<spreadsheet>>
~B$1 で参照。$1は絶対指定 Bは相対指定
列をドラッグして、メニューバーのfill->detailed->Step Sizeを1へ

<<両辺から同じ数を引く>>
eq:=4*x+17=23
eq-(17=17)
とすれば両辺から17が引かれる

siderels:=x^2+y^2=1
simplify(fnc,siderels,[x,y])
とすることで
x^2=1-y^2を計算しそれをfncの中に
代入して単純化

<<部分的に項をまとめる>>
eqmH1 := sigma*omega*alpha = mu(H, H)*s*omega*gamma*L+mu(F, H)*s*L-mu(F, H)*s*L*gamma;

collect(eqmH1,{mu(F,H),s,L});
とすると
sigma*omega*alpha = (1-gamma)*L*s*mu(F, H)+mu(H, H)*s*omega*gamma*L


<<代入して変数を消す方法>>
x := D(a*b*c = 3*d);
y := D(a^2*b^3*c = 3*a);

#"isolate"コマンドでD(a)のみを左辺に移動します。
d_a := isolate(x, D(a

*2:f@@3)(x

*3:g@@4)((g@@(-2

*4:a^b)^c);
                                        c
                                    / b\
                                    \a /
> simplify((a^b)^c,power);
                                        c
                                    / b\
                                    \a /
> simplify((a^b)^c,power,symbolic);
                                     (b c)
                                    a     
> x^a*y^b;
                                     a  b
                                    x  y
> simplify(x^a*x^b,power);
                                    (a + b)
                                   x       
> 変数がどういう性質かをみるときaboutを使う


> assume(a>0);
> about(a);
Originally a, renamed a~: is assumed to be: RealRange(Open(0),infinity)
> 実数の答えのみ出るようにするRealDomain指定をする。
> use RealDomain in simplify( sqrt( x^2 ) ) end;
                                     |x|
> か、with(RealDomain);として計算する。
> with(RealDomain);
Warning, these protected names have been redefined and unprotected: Im, Re, `^`,
arccos, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech, arcsin,
arcsinh, arctan, arctanh, cos, cosh, cot, coth, csc, csch, eval, exp, expand,
limit, ln, log, sec, sech, signum, simplify, sin, sinh, solve, sqrt, surd, tan,
tanh
[Im, Re, ^, arccos, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech,

  arcsin, arcsinh, arctan, arctanh, cos, cosh, cot, coth, csc, csch, eval, exp,

  expand, limit, ln, log, sec, sech, signum, simplify, sin, sinh, solve, sqrt,

  surd, tan, tanh]
> solve(x^3-1,x);
                                      1
> 下添字は
                                     ?

> p[x]:=5;
                                  p[x] := 5
> Format->paragraphで位置を変えれる
>
Command +4で400%にZOOM FACTOR


>
mapleでtexコードを出させる

> latex(sin(x)/cos(x

*5:-theta phi + 1 - theta) w[1] - phi) w[2]

              /         2                 2            \\
       + w[1] \theta phi  w[1] + theta phi  + 1 - theta//
> collectについて factorをoptionとして付けるととても簡単になる
> c := v =
> -(-w[2]*theta*w[1]-theta*w[2]-w[2]^2*phi^2-w[2]*phi^2+theta*w[2]^2*phi^2+theta
> *w[2]*phi^2+theta*phi*w[1]^2+w[1]*w[2]*phi+phi*w[1]-w[1]*theta*w[2]*phi)/(-w[1]*
> theta*w[2]*phi-phi*w[2]^2-w[2]*phi+phi*theta*w[2]^2+theta*phi^2*w[1]^2+theta*phi
> ^2*w[1]+w[2]*w[1]+w[1]-w[2]*theta*w[1]-theta*w[1]);
             /                                    2    2           2
  c := v = - \-w[2] theta w[1] - theta w[2] - w[2]  phi  - w[2] phi

                 2    2                 2                 2                
     + theta w[2]  phi  + theta w[2] phi  + theta phi w[1]  + w[1] w[2] phi

                                     \//                               2
     + phi w[1] - w[1] theta w[2] phi/ \-w[1] theta w[2] phi - phi w[2]

                                2            2     2            2     
     - w[2] phi + phi theta w[2]  + theta phi  w[1]  + theta phi  w[1]

                                                      \
     + w[2] w[1] + w[1] - w[2] theta w[1] - theta w[1]/
> g:=collect(c,phi,factor);
           /                               2
g := v = - \w[2] (w[2] + 1) (theta - 1) phi

                                                                           \/
   - w[1] (-theta w[1] - w[2] - 1 + theta w[2]) phi - theta w[2] (w[1] + 1)/

  /                         2                                                 
  \theta w[1] (w[1] + 1) phi  + w[2] (-theta w[1] - w[2] - 1 + theta w[2]) phi

                                \
   - w[1] (w[2] + 1) (theta - 1)/
> 陰関数の微分。implicitdiffを使うが、2つの式があり3つの変数x,y,zがあり、y,zがxの関数と考えて、xでy, zを微分する方法
> f:=y^2-2*x*z=1: g:=x^2-cos(x*z)=y: implicitdiff({f,g},{y,z},y,x);
                                      2 x      
                               - --------------
                                 y sin(x z) - 1
> implicitdiff({f,g},{y,z},z,x);
                            2 y x + y sin(x z) z - z
                          - ------------------------
                               x (y sin(x z) - 1)   
> 他方で次のやりかたも使える。
> h:=eval({f,g},{y=y(x),z=z(x)});
                  /    2                  2                     \
            h := { y(x)  - 2 x z(x) = 1, x  - cos(x z(x