[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(howto/MenuBar)
* howto/mathematica [#a5270ac0]
#contents
** 一行メモ [#t5afd3b8]
- プロットした図を選択した状態で印刷すると、図だけを印刷...
- 会計用表記の出力:AccountingForm -- &new{2019-04-15 (...
- スライダーで値を変化させてグラフを見る: -- &new{2019-...
Manipulate[
Plot[a*Sin[n*x], {x, 0, 2*Pi}],
{{n, 1}, 1, 20, Appearance -> "Labeled"},
{{a, 1}, -10, 10, Appearance -> "Labeled"} ]
(* ちょっと複雑な例 *)
inSin[A_, w_, k_, t_, x_] := A*Sin[w*t + k*x]
outSin[A_, w_, k_, t_, x_] := A*Sin[w*t - k*x + Pi]
cwInSin[\[Rho]0_, A_, w_, k_, t_, x_] := \[Rho]0/(1 + k*...
cwOutSin[\[Rho]0_, A_, w_, k_, t_, x_] := \[Rho]0/(1 - k...
cwInSinPlusOutSin[\[Rho]0_, A_, w_, k_, t_, x_] := \[Rho...
Manipulate[
Plot[{
inSin[A, w, k, t, x], outSin[A, w, k, t, x],
inSin[A, w, k, t, x] + outSin[A, w, k, t, x], x,
(cwInSin[\[Rho]0, A, w, k, t, x] - \[Rho]0), (cwOutS...
},
{x, -3, 12}, PlotRange -> {-0.74*range, 0.74*range},
AspectRatio -> ratio, ImageSize -> 600,
PlotStyle -> {
{Red, Thickness[0.0003]}, {Green, Thickness[0.0003]}...
{Magenta, Dashed, Thickness[0.002]}, {RGBColor[0, 0....
},
PlotLegends -> {
"inSin 入射波", "outSin 反射波", "inSin+outSin 合成...
"cw InSin 入射波の密度変化", "cw OutSin 反射波の密...
}],
{{ratio, 0.5, "ranito(縦横比を変更)"}, 1/10, 1, Appearan...
{{\[Rho]0, 3, "媒質の密度"}, 0, 5, Appearance -> "Labele...
{{range, 5, "range(縦軸幅を変更)"}, 1, 20, Appearance ->...
{{A, 0.45, "振幅(入射波,反射波)"}, 0, 1/(2*k), Appearanc...
{{w, 1, "角振動数"}, 0, 10, Appearance -> "Labeled"},
{{k, 1, "波数"}, 0, 2, Appearance -> "Labeled"},
{{t, 0.544, "時刻"}, 0, 2*Pi/w, Appearance -> "Labeled"},
ControlPlacement -> {Top}
]
- 例 -- &new{2019-06-05 (水) 20:08:26};
V[x_, y_, z_] := -1/Sqrt[x^2 + y^2 + z^2] (* クーロン引...
m = {V[x, y, z],
D[V[x, y, z], x],
D[D[V[x, y, z], x], y],
D[D[D[V[x, y, z], x], y], z]} (* 3階微分までの結果を、...
mm = Simplify[m /. {y -> 0, z -> 0}, Assumptions -> {x >...
{mm[[2]], mm[[1]]} (* 確認のため∂xVとVを行列要素要素と...
mm[[2]]/mm[[1]] (* ∂xV / V の比 *)
- DateString[] で Fri 7 Jun 2019 12:15:56 などが出力され...
Date[+9] では {2019, 6, 7, 12, 9, 34.1648988} などのリス...
- MonomialList[式] 式の各項をリストにしたものを与える ...
- GridLines -> {Table[i, {i, -10, 40}], Table[i, {i, -3, ...
- https://reference.wolfram.com/language/ref/Plot.html?q=...
- ESC hb ESC でディラック定数入力できる(hbの他にもいろい...
- Magnify[ hoge, 1.5] とすると1.5倍に出来るが、印刷時は期...
- メニュー→パレット、でいろいろな記号を入力できる -- &ne...
- コンテキスト -- &new{2019-06-14 (金) 19:32:46};
$Context (*現在のコンテキスト(名前空間のようなもの)を表...
Global` (*デフォルトで使われているコンテキストらしい*)
変数等の正式名称は、 コンテキスト名`簡略名 である。現在...
- ( ..body.. )& は、純関数(名無し関数)であり、 ( ..bod...
- 前置記法 f@x は、f[x]の意味 -- &new{2019-06-14 (金) 19...
- 後置記法 x//f は、f[x]の意味 -- &new{2019-06-14 (金) 1...
- 入力の自動フォーマットなど -- &new{2019-06-14 (金) 19:...
-- AutoIndent = False がいい
-- ShowAutoStyle = False がいい
- 音を鳴らす -- &new{2019-08-01 (木) 17:49:19};
Manipulate[
Play[Sin[2*Pi*(440 + s)*t], {t, 0, 1}],
{{s, 0}, -100, 100, Appearance -> "Labeled"}]
- Plotで軸目盛を書かない: Ticks -> None -- &new{2019-08...
- Plotで軸を書かない: Axes -> False -- &new{2019-08-05 ...
- DSolve -- &new{2019-10-02 (水) 14:28:37};
DSolve[{y''[x] + \[Lambda]* y[x] == 0, y[0] == 0, y[\[Pi...
- Plotのオプションで、AspectRatio -> 1/4, ImageSize -> 64...
- LogLogPlot 両方の軸とも対数のプロットをする -- &new{2...
- Assuming[assump, Collect[aall /. {R0 -> xk - m*dx}, {dx...
- BernoulliB[2*n] 2nのベルヌーイ数 -- &new{2020-08-26...
- n! nの階乗 -- &new{2020-08-26 (水) 16:52:19};
- n!! nの二重階乗 -- &new{2020-08-26 (水) 16:52:49};
- Show[a,b] a=何かのプロット, b=何かのプロット(Plot,Pa...
- ParametricPlot, ParametricPlot3Dの例 -- &new{2020-08-2...
ParametricPlot[{
{Re[ArcTan[4*Exp[I*\[Theta]]]], Im[ArcTan[4*Exp[I*\[Th...
{Re[ArcTan[2*Exp[I*\[Theta]]]], Im[ArcTan[2*Exp[I*\[Th...
{Re[ArcTan[1*Exp[I*\[Theta]]]], Im[ArcTan[1*Exp[I*\[Th...
{Re[ArcTan[1/2*Exp[I*\[Theta]]]], Im[ArcTan[1/2*Exp[I*...
{Re[ArcTan[1/4*Exp[I*\[Theta]]]], Im[ArcTan[1/4*Exp[I*...
{Re[Exp[I*\[Theta]]], Im[Exp[I*\[Theta]]]}},
{\[Theta], 0, Pi*2}, PlotLegends -> "Expressions",
PlotRange -> {{-2, 2}, {-2, 2}}]
ParametricPlot3D[{Re[ArcTan[r*Exp[I*\[Theta]]]],
Im[ArcTan[r*Exp[I*\[Theta]]]],
Abs[ArcTan[r*Exp[I*\[Theta]]]]}, {\[Theta], 0, Pi*2}, ...
AxesLabel -> {"Re", "Im", "Abs"},
PlotRange -> {{-2, 2}, {-2, 2}, {0, 2}}, Mesh -> Automa...
Manipulate[
ParametricPlot[{{Re[ArcTan[r*Exp[I*\[Theta]]]],
Im[ArcTan[r*Exp[I*\[Theta]]]]}, {Re[r*Exp[I*\[Theta]...
Im[r*Exp[I*\[Theta]]]}}, {\[Theta], Pi/2, Pi*3/2},
PlotLegends -> {"ArcTan[r*Exp[I*\[Theta]]]", "r*Exp[I*...
PlotRange -> {{-2, 2}, {-2, 2}}], {{r, 0.5}, 0, 10,
Appearance -> "Labeled"}]
- ver.12からだと、ComplexPlot, ComplexPlot3Dなどが使える...
ver.11では次のように代替できそうである。
(* 複素関数のプロット 2021/12/13 *)
Options[ParametricPlot3DComplex] = {
"inc" -> 0, (* Arg[]の結果にincを足す。z^(1/n)などの...
"pRange" -> {Automatic, Automatic, {0, 5}}, (* プロッ...
"LogAbs" -> "LogAbs", (* プロットの縦軸を対数にするか...
"domainScale" -> 1(* 定義域をdomainScale倍に広げる *)
};
ParametricPlot3DComplex[funcz_, OptionsPattern[]] :=
Module[{myAbs, myAxesLabel},
Switch[ OptionValue["LogAbs"],
"LogLogAbs",{(* Log Log scale *) myAbs = Log[Log[Abs[...
"LogAbs", {(* Log scale *) myAbs = Log[Abs[func...
_, {(* Normal scale *) myAbs = Abs[funcz /....
];
ParametricPlot3D[{x, y, myAbs},
{x, -3*OptionValue["domainScale"], 3*OptionValue["dom...
{y, -3*OptionValue["domainScale"], 3*OptionValue["dom...
PlotRange -> OptionValue["pRange"], AxesLabel -> myAx...
ViewPoint -> {0, 0, Infinity} (*Above*),
ColorFunction -> Function[{px, py, pz}, Hue[(Arg[func...
ColorFunctionScaling -> False,
MeshFunctions -> {Function[{px, py, pz}, (Arg[funcz /...
Function[{px, py, pz}, pz]},
PlotStyle -> Opacity[1.0], Mesh -> 10, PlotPoints -> ...
Lighting -> {{"Ambient", RGBColor[.8, .8, .8]}}]]
(* 複素関数のプロットのカラーマップ *)
ParametricPlot3DComplexColormap[] := Module[{anglelist},
anglelist = {1, 1 + I, I, -1 + I, -1, -1 - I, -I, 1 - ...
MatrixForm[{
Table[Hue[N[Arg[e]/(2*Pi)]], {e, anglelist}],(*Hue[...
Table[N[Arg[e]/(2*Pi)], {e, anglelist}],
Table[Arg[e], {e, anglelist}]}]]
実行例
ParametricPlot3DComplexColormap[]
#ref(ParametricPlot3DComplexColormap.png,left,100%,nowrap)
ParametricPlot3DComplex[Log[z], "inc"->0, "pRange"->{Aut...
"LogAbs"->"Abs", "domain...
や
ParametricPlot3DComplex[Log[z]]
&ref(ParametricPlot3DComplex_Log_z.png,left,60%,nowrap);
&ref(ParametricPlot3DComplex_Log_z_2.png,left,60%,nowrap);
ParametricPlot3DComplex[Exp[z], "inc"->0, "pRange"->{Aut...
"LogAbs"->"Abs", "domain...
&ref(ParametricPlot3DComplex_Exp_z.png,left,60%,nowrap);
&ref(ParametricPlot3DComplex_Exp_z_2.png,left,60%,nowrap);
~(注)黒い波線は数値計算上の問題だろう
ParametricPlot3DComplex[z, "inc"->0, "pRange"->{Automati...
"LogAbs"->"Abs", "domainScale...
&ref(ParametricPlot3DComplex_z.png,left,60%,nowrap);
&ref(ParametricPlot3DComplex_z_2.png,left,60%,nowrap);
[c.f.] https://mathrelish.com/mathematics/singularity-in-...
- https://ja.wolframalpha.com/ -- &new{2020-08-27 (木) 1...
- 引数a,bから10a+bを計算する純関数(いわゆる名無し関数) ...
Function[{x, y}, 10*x + y][a, b]
または
(10*#1 + #2)&[a, b]
- 分数aの変形 Expand[Numerator[a]*b]/Expand[Denomirator[a...
- Filling -> {2 -> {0, Opacity[0.25, Blue]}, 3 -> {0, ...
- https://www.330k.info/essay/how-to-create-graphs-for-pa...
- Showで2つのプロットをひとつに(最初のプロットに)まと...
- Manipulateの中にFor文を使うと評価が永遠と続き暴走する(...
- Manipulateの中にグローバル変数を使ったListPlotを書いて...
- Total[ ( {4, 3} - {1, 2} )^2 ] #行列{...}の差のあと、各...
- f[a_] := a + {100, 200}; #関数定義の引数は行列でもよい...
#サイズの異なる演算はブロードキャストされる(pythonと同...
{1, 2} + 3*f[{1, 2}] #{1, 2} + 3*( {1, 2}+{100, 200} )...
4 + 3*f[4] #{4, 4} + 3*( {4, 4}+{100, 200} )...
- 上から、下からの極限 -- &new{2022-10-11 (火) 16:35:45};
Limit[Abs[x - Rx]/(x - Rx), x -> Rx]
Limit[Abs[x - Rx]/(x - Rx), x -> Rx, Direction -> "FromA...
Limit[Abs[x - Rx]/(x - Rx), x -> Rx, Direction -> "FromB...
- Plotで、Abs'[x]は描かれないが、RealAbs'[x]は描かれる。 ...
- DegreeはPi/180である。 Tan[45 Degree] は1になる -- &ne...
- 数式の置き換え( /. {rule} ) -- &new{2022-10-26 (水) ...
ある数式aがあるとして、Sqrt[X^2+y^2]をrに置き換えたいと...
a /. {Sqrt[x^2 + y^2] -> r, 1/Sqrt[x^2 + y^2] -> 1/r}
とする(a内に 1/Sqrt[X^2+y^2] があっても、ひとつめの規則...
- ManipulateとPlotの典型例 -- &new{2023-06-05 (月) 16:31...
psi[x0_, px0_, w_, x_, t_] := 1/((I*t/w + 2*w)^2*Pi/2)^(...
* Exp[(t/(2*w^2) + I)/(t^2/w^2 + 4*w^2)*I*(x - x0 - p...
rho[x0_, px0_, w_, x_, t_] := 1/Sqrt[Pi/2*t^2/w^2 + 2*Pi...
Manipulate[
Plot[
{ rho[2, px0, w, x, t],
Re[psi[2, px0, w, x, t]],
Im[psi[2, px0, w, x, t]] },
{x, 0 - 1, 15 + 1},
ImageSize -> 700, GridLines -> Automatic, PlotLegend...
PlotRange -> {-0.8, 0.8}
],
{ {px0, 2.1602464}, 0, 5, Appearance -> "Labeled"},
{ {w, 0.5}, 0, 1.5, Appearance -> "Labeled"},
{ {t, 0}, 0, 5, Appearance -> "Labeled"}
]
- Plotでタイトルを付けるには、PlotLabel->"hogehoge" -- &...
- GraphicsGridを使って、Plotをそろえる、かつ余分な空白を...
- 波の重ね合わせ -- &new{2023-06-22 (木) 12:51:58};
wd[k_] := k^2/2
(*wd[k_]:=k*)
wav1[k_, w_, x_, t_, e_] := Im[Exp[I*(k*x - w*t + e)]]
wav2[k_, w_, x_, t_, e_] := Im[Exp[I*(k*x - w*t + e)]]
Manipulate[
Plot[{
wav1[k1, wd[k1], x, t, 0],
wav2[k2, wd[k2], x, t, e2],
wav1[k1, wd[k1], x, t, 0] + wav2[k2, wd[k2], x, t, e2]
},
{x, -50, 50}, PlotRange -> {-5, 5}, ImageSize -> 600,
PlotStyle -> {{Red, Thickness[0.0003]}, {Blue, Thickne...
PlotLegends -> {"wav1", "wav2", "wav1+wav2"}],
{{k1, 1.0}, -5, 5, Appearance -> "Labeled"},
{{k2, 0.8}, -5, 5, Appearance -> "Labeled"},
{{e2, 0.0}, -Pi, Pi, Appearance -> "Labeled"},
{{t, 0}, 0, 100, Appearance -> "Labeled"}
]
- FindRoot[f, {x, x0}] #x=x0から始めてfの数値根を求める...
- リストxにある座標をx軸上にプロットする -- &new{2023-11...
MAX = 5;
MAXIM = 5;
x = {}; (*空リスト*)
a = 1;
x = Append[x, a];
For[i = 0, i < MAXIM, i++,
(*Print[Sort[x]];*)
y = x;
For[j = 1, j <= Length[x], j++,
a = x[[j]];
y = Append[y, (1/2)*a];
y = Append[y, (21/10)*a];
y = Append[y, (3/10)*a];
];
x = DeleteDuplicates[y];
](*プロットする座標作成*)
(*
For[l=0,l<MAX,l++,
For[m=0,m<MAX,m++,
For[n=0,n<MAX,n++,
x=Append[x,(1/2)^l*(21/10)^m*(3/10)^n*a]; (*プロッ...
];
];
];
*)
(*N[x]*)
N[{Min[x], Max[x]}]
ListPlot[
Transpose[{x, ConstantArray[0, Length[x]]}], (* (x,0)...
GridLines -> {x, {}}, GridLinesStyle -> Directive[Blue],
PlotStyle -> PointSize[Medium],
AspectRatio -> 1/10, AxesOrigin -> {-0.5, 0},
AxesStyle -> Directive[Black, 12],
Ticks -> {Automatic, None},
PlotRange -> {{-1, Min[{20, Ceiling[Max[x]]}]}, Automa...
ImageSize -> Full
]
selectedList = Select[x, 9 <= # <= 11 &];
selectedList
&ref(ListPlot_data_on_x_axis.png,left,25%,nowrap);
- コメントの (* *) は入れ子が可能のようだ。 -- &new{2023...
- 連立方程式を解く x=LinearSolve[ A, b ] (* Aは係数行...
- 固有値、固有ベクトル、行列式、行列のランク、単位行列
-- 固有値、固有ベクトルを求める Eigenvalues[A] , Eigenvec...
-- 一般化固有値方程式の場合は、重なり行列をSとして Eigenv...
-- 行列式を求める Det[A]
-- 行列のランクを求める MatrixRank[A]
-- 4x4の単位行列を作る IdentityMatrix[4]
例)
A = { {2, 0, 1, 0},
{0, 2, 0, 1},
{1, 0, 2, 0},
{0, 1, 0, 2} };
Eigenvalues[A] (* A c = c w *)
Eigenvectors[A] (* c *)
w=1 (* w, Aのひとつの固有値 *)
Det[ A - w*IdentityMatrix[4] ] (* 永年行列式にw=...
MatrixRank[ A - w*IdentityMatrix[4] ] (* 〃の行列のラン...
例)
B = {g, h, i, j};
A = {{c + 2, -1, 0, -1},
{-1, c + 2, -1, 0},
{0, -1, c + 2, -1},
{-1, 0, -1, c + 2}}; (* 周期境界条件での差分化した...
A // MatrixForm
Det[A] (* c=0など、いくつかのcの値で行列...
Solve[Det[A] == 0, c]
LinearSolve[A, B]
B = {g, h, i, j};
A = {{c + 2, -1, 0, 0},
{-1, c + 2, -1, 0},
{0, -1, c + 2, -1},
{0, 0, -1, c + 2}}; (* 固定端境界条件での差分化し...
A // MatrixForm
Det[A] (* いくつかのcの値で行列式はゼロ *)
Solve[Det[A] == 0, c]
LinearSolve[A, B]
- Solveで桁を増やす -- &new{2023-12-16 (土) 12:50:56};
a=Solve[x^2+x-1.0==10*^-4]
(* {{x->-1.61848},{x->0.61848}} と表示 *)
(* N[a,16]では桁は増えない、SetPrecision[a,16]として精...
SetPrecision[Solve[x^2+x-1.0==10*^-4],16]
(* {{x->-1.618481112938435},{x->0.618481112938434885}}...
x/.SetPrecision[Solve[x^2+x-1.0==10*^-4],16][[1]]
(* -1.618481112938435 と、ひとつ目の値だけ取り出す *)
- Reduceで不等式を解く -- &new{2023-12-16 (土) 13:01:23};
SetPrecision[Reduce[x^2+x-1.0<0*^-4] ,16]
- プラスマイナスは \[PlusMinus] で入力できる。 -- &new{2...
- ScientificForm[Pi*1000.0] (** 3.14x10^3 のように出力す...
- Inputの 10のべき乗は 3*^2 の形(これで3x10^2) -- &new...
- https://github.com/NCAlgebra/NC (パクレットで非可換代...
#comment
//-------------------------------------------------------...
* マニュアル・リンクなど [#o2077cba]
- Mathematicaリソース http://www.wolfram.com/support/learn/
-- Wolframドキュメント http://reference.wolfram.com/
-- Hands-on Start to Mathematica http://www.wolfram.com/b...
-- 短いチュートリアル http://www.wolfram.com/language/fa...
- Mathematica Online https://mathematica.wolframcloud.com/
- 分岐切断(branch cut)と主値(principal value) https://ref...
-- 関数はここに記載の分岐切断をされて主値を与える、ようだ。
- 1/xの積分はLog[x]となる(xは複素数として積分されるため ...
- 指数の表現は eなどでは無くて *^である。 例) 2.9209*^-01
-- Fortranなど的なカスタム表示もできるようだ https://refe...
//-------------------------------------------------------...
* いろいろなこと [#s5b89cec]
** フォントサイズを大きくする [#wdfbf72e]
編集メニュー→環境設定→詳細→オプションインスペクタを開く→...
→フォント設→FontSize、デフォルトの12を14などに変更→適用
or
Ctrl+マウス中ボタンを回して、拡大・縮小できる
** 適度な印刷方法 [#ed40dd81]
「一般的な場合」
ファイル→印刷設定→印刷オプションで、
セルのブラケットを印刷と、領域マークを印刷のチェック...
マージン設定で上下左右の余白を5mmにする(左右の余白...
→A3でpdfとして印刷
→AcrobatでA4に縮小印刷
「長い数式を印刷する場合」
ファイル→印刷設定→印刷用環境
→Condensedを選ぶ(表示画面と似た感じで、やや小さめのカ...
(Printoutだと白黒で行間がもう少し狭めになる)
ファイル→印刷設定→印刷オプション
→マージンを 20mmに小さくする。
A2サイズ横で、pdf出力してから、pdfをA4サイズに縮小して印...
** 定数 [#mba942b8]
虚数単位 I
ネイピア数 E
円周率 Pi
無限大 Infinity
** 関数 [#i45ed993]
Exp, Log
Sqrt
Abs, Arg
Sign
Sin, Cos, Tan
** ギリシャ文字の入力 [#d1783f34]
\[Alpha] で α になる
\[Theta] で θ
** 下付き、上付き、二次元式 [#d0126abe]
下付き文字をつけたい文字を選択か文字の直後で、Ctrl+マイ...
があらわれる
上付き文字をつけたい文字(べき乗になる)を選択し、Ctrl+^...
分子の入力後、Ctrl+/ で分数の分母を二次元式で入力できる...
Ctrl-Enter で列ベクトルの次の行の入力ができる
** 表示形式 [#s8f35600]
InputForm["hogehoge"] # 数式hogehogeを、一次元の形式...
OutputForm["hogehoge"] # 通常の画面に出る形式で表示
StandardForm["hogehoge"] # see manual(たぶん通常はOutpu...
FullForm["hogehoge"] # see manual(たぶん使うことは...
Style[ hogehoge, Smaller ] やや小さいフォントで出力する
** 近似値、四捨五入など [#fd3aa66b]
N[ hogehoge, [桁数] ]//InputForm
# hogehogeを数値として表示する。
# //InputFormを付けると一次元の入力形式で得られるが、
# 指定した桁数以上(25~50桁など)が出力される。
# 10のべき乗部分は、`桁数*^10 となる。
Round[...] #数値で、四捨五入して出力
Floor[...] #数値で、切り捨てして出力
Ceiling[...] #数値で、切上げして出力
** 極限 [#h313c46a]
Limit[expr, x->a] #exprのx->aの極限を計算する
** テーラー展開 [#ud7d3536]
Series[ expr, {x,x0,n} ] #x=x0でn次までexpr...
Normal[ Series[ expr, {x,x0,n} ] ] #余剰項を除く形を得る
** 微分、積分 [#e79bdf99]
D[] 微分。高階微分はmanualをみよ
Integrate[ ] 積分。重積分はmanualをみよ
仮定付き積分の例) Integrate[s*Exp[-s^2/2], {s, 0, x}, A...
** 方程式を解く [#kf85a897]
Solve[ 式, 解く変数 ]
x /. Solve[ 式, x ] (*xの解のみのリスト出力する
(Solveは変換規則のリストとして解...
例)
Part[z /. Solve[1 - 3*z^2 + 2*z^3 == x, z], 1 ;; 3] (*...
** シンボルの説明やオプションを表示する [#t12a4b66]
?hoge # hogeの説明を表示
?*hoge # *hogeの関数名一覧を表示(ワイルドカード...
Options[hoge] # hoge関数で利用できるオプションの一覧表示
** 結果を出力しない [#tf8d87f8]
hoge; #式hogeの末尾に、セミコロンを付ける
** 置換表示、変換規則 [#wa6c5c87]
/. 置換表示
-> 変数規則
例) x^2 /. x -> 2
//-------------------------------------------------------...
* 仮定 [#h8dc31d9]
** 仮定の作り方 [#e3bf93eb]
assump = Assumptions -> {x0 ∈ Reals && px0 ∈ Reals &&
t >= 0 && w > 0 && x ∈ Reals &&...
などする。そして、
Integrate[ func[x], {x,-Infinity,Infinity}, assump ]
Simplify[ func[x], assump ]
で利用する。
- 仮定と領域 http://reference.wolfram.com/language/guide/...
- Solveに Assumptionsが利用できるのは ver 12.2から。
** 大域的な仮定の設定 [#n7fc0609]
Simplify, Refine Integrate等で使われる。
$Assumptions この値がTrueのとき大域的な仮定は無い。
設定例)
$Assumptions = {x \[Element] Reals && y \[Element] Reals...
z \[Element] Reals && Rx \[Element] Reals && Ry \[Elem...
Rz \[Element] Reals && A > 0 && a > 0 && b > 0 && r >=...
$Assumptions = True
で設定を無くす
//-------------------------------------------------------...
* 初期化やクリア [#bfa89c35]
ClearAll["Global`*"] #何もかもをクリアする
ClearAll[x] #変数xの何もかもをクリアする
詳しくはmanualをみよ。
Clear[ hoge ] 値、定義をクリア
Clear["Global`*"] 現行のセッションで作成された値、定義...
ClearAll[ hoge ] 記号の値、定義、属性、メッセージ、デ...
Remove[ hoge ] シンボルの名前が認識されないように、...
<< Utilities`CleanSlate` #この2行で、Clear["Global`*"]...
CleanSlate[] #開放メモリ量のレポートも出す...
?Utilities`CleanSlate`* #詳細はこちら
//-------------------------------------------------------...
* 行列 [#fb11c55b]
** 行列を作る [#vff7b596]
m={
{1,2,3},
{4,5,6}
}
Table[ x^i*y^j, {i, 1, 3}, {j, 1, 2}]
m=DiagonalMatrix[{1,2,3,4}] (* 対角行列 *)
** 行列要素を取り出す [#h9cd11d3]
m[[1,All]] (* mの1行目だけ取り出す。mは2次元配列より大...
Part[m,1,All] (* 〃 *)
m[[1;;1, 1;;2]] (* 1-1行目x1-2列目からなる部分行列 *)
** 行列表記やテーブルで表示 [#c3913a3c]
m // MatrixForm (* 行列表記で出力 *)
m // TableForm (* テーブルで出力,要素を並べる *)
または
MatrixForm[m]
TableForm[m]
なお、//MatrixForm をつけた形で行列を、変数に代入すると、
その後の行列積などが計算できない。
** 行列の積、転置、逆行列 [#x4e0125b]
A.B (* 積 *)
Transpose[A] (* 転置 *)
Inverse[A] (* 逆行列 *)
MatrixPower[A,n] (* 行列Aの n乗 *)
A*B (* 行列A,Bの各要素をお互いに掛ける *)
A^n (* 行列Aの各要素を n乗する *)
** ベクトル [#zf206c7d]
ベクトルは、1行または1列の行列として扱う。
** ノルム [#m7e16dfe]
Norm[v] ベクトルのノルム、行列のノルム(詳細は調べよ)
//-------------------------------------------------------...
* 直積(テンソル積)の例 [#ged94ed2]
AB = {
{a11 b11, a11 b12, a12 b11, a12 b12},
{a11 b21, a11 b22, a12 b21, a12 b22},
{a21 b11, a21 b12, a22 b11, a22 b12},
{a21 b21, a21 b22, a22 b21, a22 b22}
};
CC = Transpose[{{C0' C0'', C0' C1'', C1' C0'', C1' C1''}...
A = {
{a11, a12},
{a21, a22}
};
B = {
{b11, b12},
{b21, b22}
};
C' = Transpose[{{C0', C1'}}];
C'' = Transpose[{{C0'', C1''}}];
AB // MatrixForm
CC // MatrixForm
A // MatrixForm
B // MatrixForm
C' // MatrixForm
C'' // MatrixForm
(*A \[TensorProduct] B //MatrixForm*) (* \[ TensorProduc...
(* TensorProduct[A,B] //MatrixForm *)
KroneckerProduct[A, B] // MatrixForm (*直積*)
lhs = KroneckerProduct[A, B].CC;
lhs // MatrixForm
rhs = Expand[KroneckerProduct[(A.C'), (B.C'')]];
rhs // MatrixForm
lhs - rhs // MatrixForm
(*他*)
Dimensions[A]
Dimensions[A // MatrixForm]
//-------------------------------------------------------...
* グラフ描画 [#s058a1d4]
** Plot [#v56d1964]
(*例1*)
Plot[{
b*(Exp[k*(b - a)*t] - 1)/(b/a*Exp[k*(b - a)*t] - 1) /....
b*(Exp[k*(b - a)*t] - 1)/(b/a*Exp[k*(b - a)*t] - 1) /....
a*a*k*t/(a*k*t + 1) /. { a -> 1, k -> 1}
},
{t, 0, 10} ]
(*例2*)
omega1 = 0.00288;
E01 = 7.76; (*V/Ang*)
Eenv[t_] := Which[
t < 2 Pi / omega1, omega1*t/2/Pi,
t < 4 Pi / omega1, 2 - omega1*t/2/Pi,
True, 0]
Elaser1[t_] := Eenv[t]*(E01*Sin[omega1*t])
Plot[{Elaser1[t], Eenv[t], E01*Sin[omega1*t]}, {t, 0, 25...
PlotLegends -> "Expressions",
PlotRange -> {-10, 10},
GridLines -> Automatic,
AxesLabel -> {"au(time)", "V/Ang"},
PlotStyle -> {Thickness[0.01], Thickness[0.01], {Dashed...
(*例3*)
omega2 = 0.00144;
E02 = 2.74 ;(*V/Ang*)
Elaser2[t_] := (Sin[omega2*t/16])^2*(E02*Cos[omega2*t])
Plot[{Elaser2[t], (Sin[omega2*t/16])^2, E02*Cos[omega2*t...
PlotLegends -> "Expressions",
PlotRange -> {-3, 3},
GridLines -> Automatic,
AxesLabel -> {"au(time)", "V/Ang"},
PlotStyle -> {Thickness[0.01], Thickness[0.01], {Dashed...
*** 線の太さ指定 [#bce37b2c]
PlotStyle -> { Thickness[0.005] } #0.005がデフォルト...
*** 凡例の表示 [#s8369c9e]
PlotLegends -> "Expressions"
*** 線を太くして破線にする [#n7c2d66b]
PlotStyle -> { Thickness[0.01],
Thickness[0.01],
{Dashed, Thickness[0.005]},
{Dashed, Thickness[0.005]} } #4本分指定
*** 線の色の指定 [#y9e0d454]
PlotStyle -> { {Blue, Thickness[0.01]},
{Orange, Thickness[0.01]},
{Blue, Dashed, Thickness[0.005]},
{Orange, Dashed, Thickness[0.005]}}
*** 縦横のスケールを同じにしてグラフを描きたい [#z3649b8d]
例えば、
Plot[ {0.3*Sin[x],x},
{x, -3, 12}, PlotRange -> {-0.74, 0.74}, AspectRat...
ImageSize -> Full ]
# 横軸幅 15、縦軸幅 1.5、縦横比が 1.5/15=1/10なので、...
# ImageSize->Fullを付けるとウィンドウ幅に合わせて拡大...
** Plot3D [#bec89b7b]
(* z^(1/3)=Exp[1/3 Log[Abs[z]] + I/3 Arg[z]+I/3* 2 m Pi
where -Pi<=Arg[z]<Pi and m=0,1,2 のリーマン面を描く *)
Plot3D[ {
Arg[( x + I*y)^(1/3)] + 0* 2 Pi /3, (*m=0,mathematic...
Arg[( x + I*y)^(1/3)] + 1* 2 Pi /3, (*m=1*)
Arg[( x + I*y)^(1/3)] + 2* 2 Pi /3 (*m=2*)
},
{x, -2, 2}, {y, -2, 2},
AxesLabel -> Automatic, (*軸ラベルを表示*)
PlotLegends -> "Expressions" (*凡例表示。ひとつだと出...
LabelStyle -> Directive[Bold, Medium], (*軸ラベルを太く...
Mesh -> 3,
PlotStyle -> {Opacity[0.8]}, (*透過度。色も可*)
ExclusionsStyle -> {None, Red}, (*値が飛ぶ所を描かない...
Ticks -> {Automatic, Automatic, {-Pi, -Pi/2, 0, Pi/2, P...
ViewPoint -> {-5, -3.4, 3}*1000
]
//-------------------------------------------------------...
* 関数の定義 [#vc80cc13]
z[r_, t_] := r Exp[ I t ]
S[n_, x_] := Which[ n == 0, Which[ x < -1, 0,
x < 0, 1 - 3*x^2 - 2*...
x < 1, 1 - 3*x^2 + 2*...
True, 0],
n == 1, Which[ x < -1, 0,
x < 0, x + 2*x^2 + x^3,
x < 1, x - 2*x^2 + x^...
True, 0]]
- なお、:= は遅延型の割り当てであり要求されるときに毎回評...
:= ではなく = を使う(即時型の割り当て)と定義時に1度だ...
https://reference.wolfram.com/language/tutorial/Immediate...
- 上のS[n,x]の微分をプロットしたい場合は(:=と=のいずれの...
Plot[ {S[0,x], D[S[0, t], t] /. {t -> x}}, {x, -2, 2}]
とする。
myarg[ a_ ] := Module[ {rcd = a}, (* ローカル変数を定義...
While[rcd >= Pi, rcd = rcd - 2 Pi];
While[rcd < - Pi, rcd = rcd + 2 Pi];
rcd];
//-------------------------------------------------------...
* 式展開やまとめ [#l58116d0]
** 基本 [#y23cb981]
Expand # 展開
Factor # 因数分解
Cancel # 約分
Simplify[ hoge, [assump]] # 式hogeを簡単にする。ass...
FullSimplify[ hoge, [assump]] # 初等関数と特殊関数を含...
** いろいろな展開・簡約のシンボル [#u5ebdba6]
Expand[expr] 式の積とベキ乗の項を展開
ExpandAll[expr] すべての項にExpandを適用
Factor[expr] 因子の積の形に変換
Together[expr] 通分し単一分数にまとめる
Apart[expr] 簡単な形の分母を持った複数の分数項に...
Cancel[expr] 分母と分子の共通因子を約分する
Simplify[expr] 式 exprに代数変形を試し,最も短い式...
{Numerator[expr], Denominator[expr]} 式 exprの分子と...
Collect[expr,x] xの同じ次数の項をまとめる
FactorTerms[expr,x] xに依存しない因子を取り出す
TrigExpand[expr] 三角関数の式を項の和の形に展開
TrigFactor[expr] 三角関数の式を項の積の形に分解
TrigReduce[expr] 整数倍の角度を用いて三角関数を簡約
TrigToExp[expr] 三角関数を指数関数に変形
ExpToTrig[expr] 指数関数を三角関数に変形
FunctionExpand[expr] 特殊関数やその他の関数を展開
ComplexExpand[expr] すべての変数が実数からなるとした上...
PowerExpand[expr] 例えば(xy)^p を x^p y^p に展開する
- 詳細は
https://reference.wolfram.com/language/tutorial/PuttingEx...
を見よ。
//-------------------------------------------------------...
* For文 [#x3304d9f]
(例)
NN = 10;
For[j = 0, j < NN, j++,
a = 1 - ((j - 1/2*(NN - 1))/(1/2*(NN + 1)))^2;
Print["j=", j, " a=", N[a, 3]];
];
//-------------------------------------------------------...
終了行:
#menu(howto/MenuBar)
* howto/mathematica [#a5270ac0]
#contents
** 一行メモ [#t5afd3b8]
- プロットした図を選択した状態で印刷すると、図だけを印刷...
- 会計用表記の出力:AccountingForm -- &new{2019-04-15 (...
- スライダーで値を変化させてグラフを見る: -- &new{2019-...
Manipulate[
Plot[a*Sin[n*x], {x, 0, 2*Pi}],
{{n, 1}, 1, 20, Appearance -> "Labeled"},
{{a, 1}, -10, 10, Appearance -> "Labeled"} ]
(* ちょっと複雑な例 *)
inSin[A_, w_, k_, t_, x_] := A*Sin[w*t + k*x]
outSin[A_, w_, k_, t_, x_] := A*Sin[w*t - k*x + Pi]
cwInSin[\[Rho]0_, A_, w_, k_, t_, x_] := \[Rho]0/(1 + k*...
cwOutSin[\[Rho]0_, A_, w_, k_, t_, x_] := \[Rho]0/(1 - k...
cwInSinPlusOutSin[\[Rho]0_, A_, w_, k_, t_, x_] := \[Rho...
Manipulate[
Plot[{
inSin[A, w, k, t, x], outSin[A, w, k, t, x],
inSin[A, w, k, t, x] + outSin[A, w, k, t, x], x,
(cwInSin[\[Rho]0, A, w, k, t, x] - \[Rho]0), (cwOutS...
},
{x, -3, 12}, PlotRange -> {-0.74*range, 0.74*range},
AspectRatio -> ratio, ImageSize -> 600,
PlotStyle -> {
{Red, Thickness[0.0003]}, {Green, Thickness[0.0003]}...
{Magenta, Dashed, Thickness[0.002]}, {RGBColor[0, 0....
},
PlotLegends -> {
"inSin 入射波", "outSin 反射波", "inSin+outSin 合成...
"cw InSin 入射波の密度変化", "cw OutSin 反射波の密...
}],
{{ratio, 0.5, "ranito(縦横比を変更)"}, 1/10, 1, Appearan...
{{\[Rho]0, 3, "媒質の密度"}, 0, 5, Appearance -> "Labele...
{{range, 5, "range(縦軸幅を変更)"}, 1, 20, Appearance ->...
{{A, 0.45, "振幅(入射波,反射波)"}, 0, 1/(2*k), Appearanc...
{{w, 1, "角振動数"}, 0, 10, Appearance -> "Labeled"},
{{k, 1, "波数"}, 0, 2, Appearance -> "Labeled"},
{{t, 0.544, "時刻"}, 0, 2*Pi/w, Appearance -> "Labeled"},
ControlPlacement -> {Top}
]
- 例 -- &new{2019-06-05 (水) 20:08:26};
V[x_, y_, z_] := -1/Sqrt[x^2 + y^2 + z^2] (* クーロン引...
m = {V[x, y, z],
D[V[x, y, z], x],
D[D[V[x, y, z], x], y],
D[D[D[V[x, y, z], x], y], z]} (* 3階微分までの結果を、...
mm = Simplify[m /. {y -> 0, z -> 0}, Assumptions -> {x >...
{mm[[2]], mm[[1]]} (* 確認のため∂xVとVを行列要素要素と...
mm[[2]]/mm[[1]] (* ∂xV / V の比 *)
- DateString[] で Fri 7 Jun 2019 12:15:56 などが出力され...
Date[+9] では {2019, 6, 7, 12, 9, 34.1648988} などのリス...
- MonomialList[式] 式の各項をリストにしたものを与える ...
- GridLines -> {Table[i, {i, -10, 40}], Table[i, {i, -3, ...
- https://reference.wolfram.com/language/ref/Plot.html?q=...
- ESC hb ESC でディラック定数入力できる(hbの他にもいろい...
- Magnify[ hoge, 1.5] とすると1.5倍に出来るが、印刷時は期...
- メニュー→パレット、でいろいろな記号を入力できる -- &ne...
- コンテキスト -- &new{2019-06-14 (金) 19:32:46};
$Context (*現在のコンテキスト(名前空間のようなもの)を表...
Global` (*デフォルトで使われているコンテキストらしい*)
変数等の正式名称は、 コンテキスト名`簡略名 である。現在...
- ( ..body.. )& は、純関数(名無し関数)であり、 ( ..bod...
- 前置記法 f@x は、f[x]の意味 -- &new{2019-06-14 (金) 19...
- 後置記法 x//f は、f[x]の意味 -- &new{2019-06-14 (金) 1...
- 入力の自動フォーマットなど -- &new{2019-06-14 (金) 19:...
-- AutoIndent = False がいい
-- ShowAutoStyle = False がいい
- 音を鳴らす -- &new{2019-08-01 (木) 17:49:19};
Manipulate[
Play[Sin[2*Pi*(440 + s)*t], {t, 0, 1}],
{{s, 0}, -100, 100, Appearance -> "Labeled"}]
- Plotで軸目盛を書かない: Ticks -> None -- &new{2019-08...
- Plotで軸を書かない: Axes -> False -- &new{2019-08-05 ...
- DSolve -- &new{2019-10-02 (水) 14:28:37};
DSolve[{y''[x] + \[Lambda]* y[x] == 0, y[0] == 0, y[\[Pi...
- Plotのオプションで、AspectRatio -> 1/4, ImageSize -> 64...
- LogLogPlot 両方の軸とも対数のプロットをする -- &new{2...
- Assuming[assump, Collect[aall /. {R0 -> xk - m*dx}, {dx...
- BernoulliB[2*n] 2nのベルヌーイ数 -- &new{2020-08-26...
- n! nの階乗 -- &new{2020-08-26 (水) 16:52:19};
- n!! nの二重階乗 -- &new{2020-08-26 (水) 16:52:49};
- Show[a,b] a=何かのプロット, b=何かのプロット(Plot,Pa...
- ParametricPlot, ParametricPlot3Dの例 -- &new{2020-08-2...
ParametricPlot[{
{Re[ArcTan[4*Exp[I*\[Theta]]]], Im[ArcTan[4*Exp[I*\[Th...
{Re[ArcTan[2*Exp[I*\[Theta]]]], Im[ArcTan[2*Exp[I*\[Th...
{Re[ArcTan[1*Exp[I*\[Theta]]]], Im[ArcTan[1*Exp[I*\[Th...
{Re[ArcTan[1/2*Exp[I*\[Theta]]]], Im[ArcTan[1/2*Exp[I*...
{Re[ArcTan[1/4*Exp[I*\[Theta]]]], Im[ArcTan[1/4*Exp[I*...
{Re[Exp[I*\[Theta]]], Im[Exp[I*\[Theta]]]}},
{\[Theta], 0, Pi*2}, PlotLegends -> "Expressions",
PlotRange -> {{-2, 2}, {-2, 2}}]
ParametricPlot3D[{Re[ArcTan[r*Exp[I*\[Theta]]]],
Im[ArcTan[r*Exp[I*\[Theta]]]],
Abs[ArcTan[r*Exp[I*\[Theta]]]]}, {\[Theta], 0, Pi*2}, ...
AxesLabel -> {"Re", "Im", "Abs"},
PlotRange -> {{-2, 2}, {-2, 2}, {0, 2}}, Mesh -> Automa...
Manipulate[
ParametricPlot[{{Re[ArcTan[r*Exp[I*\[Theta]]]],
Im[ArcTan[r*Exp[I*\[Theta]]]]}, {Re[r*Exp[I*\[Theta]...
Im[r*Exp[I*\[Theta]]]}}, {\[Theta], Pi/2, Pi*3/2},
PlotLegends -> {"ArcTan[r*Exp[I*\[Theta]]]", "r*Exp[I*...
PlotRange -> {{-2, 2}, {-2, 2}}], {{r, 0.5}, 0, 10,
Appearance -> "Labeled"}]
- ver.12からだと、ComplexPlot, ComplexPlot3Dなどが使える...
ver.11では次のように代替できそうである。
(* 複素関数のプロット 2021/12/13 *)
Options[ParametricPlot3DComplex] = {
"inc" -> 0, (* Arg[]の結果にincを足す。z^(1/n)などの...
"pRange" -> {Automatic, Automatic, {0, 5}}, (* プロッ...
"LogAbs" -> "LogAbs", (* プロットの縦軸を対数にするか...
"domainScale" -> 1(* 定義域をdomainScale倍に広げる *)
};
ParametricPlot3DComplex[funcz_, OptionsPattern[]] :=
Module[{myAbs, myAxesLabel},
Switch[ OptionValue["LogAbs"],
"LogLogAbs",{(* Log Log scale *) myAbs = Log[Log[Abs[...
"LogAbs", {(* Log scale *) myAbs = Log[Abs[func...
_, {(* Normal scale *) myAbs = Abs[funcz /....
];
ParametricPlot3D[{x, y, myAbs},
{x, -3*OptionValue["domainScale"], 3*OptionValue["dom...
{y, -3*OptionValue["domainScale"], 3*OptionValue["dom...
PlotRange -> OptionValue["pRange"], AxesLabel -> myAx...
ViewPoint -> {0, 0, Infinity} (*Above*),
ColorFunction -> Function[{px, py, pz}, Hue[(Arg[func...
ColorFunctionScaling -> False,
MeshFunctions -> {Function[{px, py, pz}, (Arg[funcz /...
Function[{px, py, pz}, pz]},
PlotStyle -> Opacity[1.0], Mesh -> 10, PlotPoints -> ...
Lighting -> {{"Ambient", RGBColor[.8, .8, .8]}}]]
(* 複素関数のプロットのカラーマップ *)
ParametricPlot3DComplexColormap[] := Module[{anglelist},
anglelist = {1, 1 + I, I, -1 + I, -1, -1 - I, -I, 1 - ...
MatrixForm[{
Table[Hue[N[Arg[e]/(2*Pi)]], {e, anglelist}],(*Hue[...
Table[N[Arg[e]/(2*Pi)], {e, anglelist}],
Table[Arg[e], {e, anglelist}]}]]
実行例
ParametricPlot3DComplexColormap[]
#ref(ParametricPlot3DComplexColormap.png,left,100%,nowrap)
ParametricPlot3DComplex[Log[z], "inc"->0, "pRange"->{Aut...
"LogAbs"->"Abs", "domain...
や
ParametricPlot3DComplex[Log[z]]
&ref(ParametricPlot3DComplex_Log_z.png,left,60%,nowrap);
&ref(ParametricPlot3DComplex_Log_z_2.png,left,60%,nowrap);
ParametricPlot3DComplex[Exp[z], "inc"->0, "pRange"->{Aut...
"LogAbs"->"Abs", "domain...
&ref(ParametricPlot3DComplex_Exp_z.png,left,60%,nowrap);
&ref(ParametricPlot3DComplex_Exp_z_2.png,left,60%,nowrap);
~(注)黒い波線は数値計算上の問題だろう
ParametricPlot3DComplex[z, "inc"->0, "pRange"->{Automati...
"LogAbs"->"Abs", "domainScale...
&ref(ParametricPlot3DComplex_z.png,left,60%,nowrap);
&ref(ParametricPlot3DComplex_z_2.png,left,60%,nowrap);
[c.f.] https://mathrelish.com/mathematics/singularity-in-...
- https://ja.wolframalpha.com/ -- &new{2020-08-27 (木) 1...
- 引数a,bから10a+bを計算する純関数(いわゆる名無し関数) ...
Function[{x, y}, 10*x + y][a, b]
または
(10*#1 + #2)&[a, b]
- 分数aの変形 Expand[Numerator[a]*b]/Expand[Denomirator[a...
- Filling -> {2 -> {0, Opacity[0.25, Blue]}, 3 -> {0, ...
- https://www.330k.info/essay/how-to-create-graphs-for-pa...
- Showで2つのプロットをひとつに(最初のプロットに)まと...
- Manipulateの中にFor文を使うと評価が永遠と続き暴走する(...
- Manipulateの中にグローバル変数を使ったListPlotを書いて...
- Total[ ( {4, 3} - {1, 2} )^2 ] #行列{...}の差のあと、各...
- f[a_] := a + {100, 200}; #関数定義の引数は行列でもよい...
#サイズの異なる演算はブロードキャストされる(pythonと同...
{1, 2} + 3*f[{1, 2}] #{1, 2} + 3*( {1, 2}+{100, 200} )...
4 + 3*f[4] #{4, 4} + 3*( {4, 4}+{100, 200} )...
- 上から、下からの極限 -- &new{2022-10-11 (火) 16:35:45};
Limit[Abs[x - Rx]/(x - Rx), x -> Rx]
Limit[Abs[x - Rx]/(x - Rx), x -> Rx, Direction -> "FromA...
Limit[Abs[x - Rx]/(x - Rx), x -> Rx, Direction -> "FromB...
- Plotで、Abs'[x]は描かれないが、RealAbs'[x]は描かれる。 ...
- DegreeはPi/180である。 Tan[45 Degree] は1になる -- &ne...
- 数式の置き換え( /. {rule} ) -- &new{2022-10-26 (水) ...
ある数式aがあるとして、Sqrt[X^2+y^2]をrに置き換えたいと...
a /. {Sqrt[x^2 + y^2] -> r, 1/Sqrt[x^2 + y^2] -> 1/r}
とする(a内に 1/Sqrt[X^2+y^2] があっても、ひとつめの規則...
- ManipulateとPlotの典型例 -- &new{2023-06-05 (月) 16:31...
psi[x0_, px0_, w_, x_, t_] := 1/((I*t/w + 2*w)^2*Pi/2)^(...
* Exp[(t/(2*w^2) + I)/(t^2/w^2 + 4*w^2)*I*(x - x0 - p...
rho[x0_, px0_, w_, x_, t_] := 1/Sqrt[Pi/2*t^2/w^2 + 2*Pi...
Manipulate[
Plot[
{ rho[2, px0, w, x, t],
Re[psi[2, px0, w, x, t]],
Im[psi[2, px0, w, x, t]] },
{x, 0 - 1, 15 + 1},
ImageSize -> 700, GridLines -> Automatic, PlotLegend...
PlotRange -> {-0.8, 0.8}
],
{ {px0, 2.1602464}, 0, 5, Appearance -> "Labeled"},
{ {w, 0.5}, 0, 1.5, Appearance -> "Labeled"},
{ {t, 0}, 0, 5, Appearance -> "Labeled"}
]
- Plotでタイトルを付けるには、PlotLabel->"hogehoge" -- &...
- GraphicsGridを使って、Plotをそろえる、かつ余分な空白を...
- 波の重ね合わせ -- &new{2023-06-22 (木) 12:51:58};
wd[k_] := k^2/2
(*wd[k_]:=k*)
wav1[k_, w_, x_, t_, e_] := Im[Exp[I*(k*x - w*t + e)]]
wav2[k_, w_, x_, t_, e_] := Im[Exp[I*(k*x - w*t + e)]]
Manipulate[
Plot[{
wav1[k1, wd[k1], x, t, 0],
wav2[k2, wd[k2], x, t, e2],
wav1[k1, wd[k1], x, t, 0] + wav2[k2, wd[k2], x, t, e2]
},
{x, -50, 50}, PlotRange -> {-5, 5}, ImageSize -> 600,
PlotStyle -> {{Red, Thickness[0.0003]}, {Blue, Thickne...
PlotLegends -> {"wav1", "wav2", "wav1+wav2"}],
{{k1, 1.0}, -5, 5, Appearance -> "Labeled"},
{{k2, 0.8}, -5, 5, Appearance -> "Labeled"},
{{e2, 0.0}, -Pi, Pi, Appearance -> "Labeled"},
{{t, 0}, 0, 100, Appearance -> "Labeled"}
]
- FindRoot[f, {x, x0}] #x=x0から始めてfの数値根を求める...
- リストxにある座標をx軸上にプロットする -- &new{2023-11...
MAX = 5;
MAXIM = 5;
x = {}; (*空リスト*)
a = 1;
x = Append[x, a];
For[i = 0, i < MAXIM, i++,
(*Print[Sort[x]];*)
y = x;
For[j = 1, j <= Length[x], j++,
a = x[[j]];
y = Append[y, (1/2)*a];
y = Append[y, (21/10)*a];
y = Append[y, (3/10)*a];
];
x = DeleteDuplicates[y];
](*プロットする座標作成*)
(*
For[l=0,l<MAX,l++,
For[m=0,m<MAX,m++,
For[n=0,n<MAX,n++,
x=Append[x,(1/2)^l*(21/10)^m*(3/10)^n*a]; (*プロッ...
];
];
];
*)
(*N[x]*)
N[{Min[x], Max[x]}]
ListPlot[
Transpose[{x, ConstantArray[0, Length[x]]}], (* (x,0)...
GridLines -> {x, {}}, GridLinesStyle -> Directive[Blue],
PlotStyle -> PointSize[Medium],
AspectRatio -> 1/10, AxesOrigin -> {-0.5, 0},
AxesStyle -> Directive[Black, 12],
Ticks -> {Automatic, None},
PlotRange -> {{-1, Min[{20, Ceiling[Max[x]]}]}, Automa...
ImageSize -> Full
]
selectedList = Select[x, 9 <= # <= 11 &];
selectedList
&ref(ListPlot_data_on_x_axis.png,left,25%,nowrap);
- コメントの (* *) は入れ子が可能のようだ。 -- &new{2023...
- 連立方程式を解く x=LinearSolve[ A, b ] (* Aは係数行...
- 固有値、固有ベクトル、行列式、行列のランク、単位行列
-- 固有値、固有ベクトルを求める Eigenvalues[A] , Eigenvec...
-- 一般化固有値方程式の場合は、重なり行列をSとして Eigenv...
-- 行列式を求める Det[A]
-- 行列のランクを求める MatrixRank[A]
-- 4x4の単位行列を作る IdentityMatrix[4]
例)
A = { {2, 0, 1, 0},
{0, 2, 0, 1},
{1, 0, 2, 0},
{0, 1, 0, 2} };
Eigenvalues[A] (* A c = c w *)
Eigenvectors[A] (* c *)
w=1 (* w, Aのひとつの固有値 *)
Det[ A - w*IdentityMatrix[4] ] (* 永年行列式にw=...
MatrixRank[ A - w*IdentityMatrix[4] ] (* 〃の行列のラン...
例)
B = {g, h, i, j};
A = {{c + 2, -1, 0, -1},
{-1, c + 2, -1, 0},
{0, -1, c + 2, -1},
{-1, 0, -1, c + 2}}; (* 周期境界条件での差分化した...
A // MatrixForm
Det[A] (* c=0など、いくつかのcの値で行列...
Solve[Det[A] == 0, c]
LinearSolve[A, B]
B = {g, h, i, j};
A = {{c + 2, -1, 0, 0},
{-1, c + 2, -1, 0},
{0, -1, c + 2, -1},
{0, 0, -1, c + 2}}; (* 固定端境界条件での差分化し...
A // MatrixForm
Det[A] (* いくつかのcの値で行列式はゼロ *)
Solve[Det[A] == 0, c]
LinearSolve[A, B]
- Solveで桁を増やす -- &new{2023-12-16 (土) 12:50:56};
a=Solve[x^2+x-1.0==10*^-4]
(* {{x->-1.61848},{x->0.61848}} と表示 *)
(* N[a,16]では桁は増えない、SetPrecision[a,16]として精...
SetPrecision[Solve[x^2+x-1.0==10*^-4],16]
(* {{x->-1.618481112938435},{x->0.618481112938434885}}...
x/.SetPrecision[Solve[x^2+x-1.0==10*^-4],16][[1]]
(* -1.618481112938435 と、ひとつ目の値だけ取り出す *)
- Reduceで不等式を解く -- &new{2023-12-16 (土) 13:01:23};
SetPrecision[Reduce[x^2+x-1.0<0*^-4] ,16]
- プラスマイナスは \[PlusMinus] で入力できる。 -- &new{2...
- ScientificForm[Pi*1000.0] (** 3.14x10^3 のように出力す...
- Inputの 10のべき乗は 3*^2 の形(これで3x10^2) -- &new...
- https://github.com/NCAlgebra/NC (パクレットで非可換代...
#comment
//-------------------------------------------------------...
* マニュアル・リンクなど [#o2077cba]
- Mathematicaリソース http://www.wolfram.com/support/learn/
-- Wolframドキュメント http://reference.wolfram.com/
-- Hands-on Start to Mathematica http://www.wolfram.com/b...
-- 短いチュートリアル http://www.wolfram.com/language/fa...
- Mathematica Online https://mathematica.wolframcloud.com/
- 分岐切断(branch cut)と主値(principal value) https://ref...
-- 関数はここに記載の分岐切断をされて主値を与える、ようだ。
- 1/xの積分はLog[x]となる(xは複素数として積分されるため ...
- 指数の表現は eなどでは無くて *^である。 例) 2.9209*^-01
-- Fortranなど的なカスタム表示もできるようだ https://refe...
//-------------------------------------------------------...
* いろいろなこと [#s5b89cec]
** フォントサイズを大きくする [#wdfbf72e]
編集メニュー→環境設定→詳細→オプションインスペクタを開く→...
→フォント設→FontSize、デフォルトの12を14などに変更→適用
or
Ctrl+マウス中ボタンを回して、拡大・縮小できる
** 適度な印刷方法 [#ed40dd81]
「一般的な場合」
ファイル→印刷設定→印刷オプションで、
セルのブラケットを印刷と、領域マークを印刷のチェック...
マージン設定で上下左右の余白を5mmにする(左右の余白...
→A3でpdfとして印刷
→AcrobatでA4に縮小印刷
「長い数式を印刷する場合」
ファイル→印刷設定→印刷用環境
→Condensedを選ぶ(表示画面と似た感じで、やや小さめのカ...
(Printoutだと白黒で行間がもう少し狭めになる)
ファイル→印刷設定→印刷オプション
→マージンを 20mmに小さくする。
A2サイズ横で、pdf出力してから、pdfをA4サイズに縮小して印...
** 定数 [#mba942b8]
虚数単位 I
ネイピア数 E
円周率 Pi
無限大 Infinity
** 関数 [#i45ed993]
Exp, Log
Sqrt
Abs, Arg
Sign
Sin, Cos, Tan
** ギリシャ文字の入力 [#d1783f34]
\[Alpha] で α になる
\[Theta] で θ
** 下付き、上付き、二次元式 [#d0126abe]
下付き文字をつけたい文字を選択か文字の直後で、Ctrl+マイ...
があらわれる
上付き文字をつけたい文字(べき乗になる)を選択し、Ctrl+^...
分子の入力後、Ctrl+/ で分数の分母を二次元式で入力できる...
Ctrl-Enter で列ベクトルの次の行の入力ができる
** 表示形式 [#s8f35600]
InputForm["hogehoge"] # 数式hogehogeを、一次元の形式...
OutputForm["hogehoge"] # 通常の画面に出る形式で表示
StandardForm["hogehoge"] # see manual(たぶん通常はOutpu...
FullForm["hogehoge"] # see manual(たぶん使うことは...
Style[ hogehoge, Smaller ] やや小さいフォントで出力する
** 近似値、四捨五入など [#fd3aa66b]
N[ hogehoge, [桁数] ]//InputForm
# hogehogeを数値として表示する。
# //InputFormを付けると一次元の入力形式で得られるが、
# 指定した桁数以上(25~50桁など)が出力される。
# 10のべき乗部分は、`桁数*^10 となる。
Round[...] #数値で、四捨五入して出力
Floor[...] #数値で、切り捨てして出力
Ceiling[...] #数値で、切上げして出力
** 極限 [#h313c46a]
Limit[expr, x->a] #exprのx->aの極限を計算する
** テーラー展開 [#ud7d3536]
Series[ expr, {x,x0,n} ] #x=x0でn次までexpr...
Normal[ Series[ expr, {x,x0,n} ] ] #余剰項を除く形を得る
** 微分、積分 [#e79bdf99]
D[] 微分。高階微分はmanualをみよ
Integrate[ ] 積分。重積分はmanualをみよ
仮定付き積分の例) Integrate[s*Exp[-s^2/2], {s, 0, x}, A...
** 方程式を解く [#kf85a897]
Solve[ 式, 解く変数 ]
x /. Solve[ 式, x ] (*xの解のみのリスト出力する
(Solveは変換規則のリストとして解...
例)
Part[z /. Solve[1 - 3*z^2 + 2*z^3 == x, z], 1 ;; 3] (*...
** シンボルの説明やオプションを表示する [#t12a4b66]
?hoge # hogeの説明を表示
?*hoge # *hogeの関数名一覧を表示(ワイルドカード...
Options[hoge] # hoge関数で利用できるオプションの一覧表示
** 結果を出力しない [#tf8d87f8]
hoge; #式hogeの末尾に、セミコロンを付ける
** 置換表示、変換規則 [#wa6c5c87]
/. 置換表示
-> 変数規則
例) x^2 /. x -> 2
//-------------------------------------------------------...
* 仮定 [#h8dc31d9]
** 仮定の作り方 [#e3bf93eb]
assump = Assumptions -> {x0 ∈ Reals && px0 ∈ Reals &&
t >= 0 && w > 0 && x ∈ Reals &&...
などする。そして、
Integrate[ func[x], {x,-Infinity,Infinity}, assump ]
Simplify[ func[x], assump ]
で利用する。
- 仮定と領域 http://reference.wolfram.com/language/guide/...
- Solveに Assumptionsが利用できるのは ver 12.2から。
** 大域的な仮定の設定 [#n7fc0609]
Simplify, Refine Integrate等で使われる。
$Assumptions この値がTrueのとき大域的な仮定は無い。
設定例)
$Assumptions = {x \[Element] Reals && y \[Element] Reals...
z \[Element] Reals && Rx \[Element] Reals && Ry \[Elem...
Rz \[Element] Reals && A > 0 && a > 0 && b > 0 && r >=...
$Assumptions = True
で設定を無くす
//-------------------------------------------------------...
* 初期化やクリア [#bfa89c35]
ClearAll["Global`*"] #何もかもをクリアする
ClearAll[x] #変数xの何もかもをクリアする
詳しくはmanualをみよ。
Clear[ hoge ] 値、定義をクリア
Clear["Global`*"] 現行のセッションで作成された値、定義...
ClearAll[ hoge ] 記号の値、定義、属性、メッセージ、デ...
Remove[ hoge ] シンボルの名前が認識されないように、...
<< Utilities`CleanSlate` #この2行で、Clear["Global`*"]...
CleanSlate[] #開放メモリ量のレポートも出す...
?Utilities`CleanSlate`* #詳細はこちら
//-------------------------------------------------------...
* 行列 [#fb11c55b]
** 行列を作る [#vff7b596]
m={
{1,2,3},
{4,5,6}
}
Table[ x^i*y^j, {i, 1, 3}, {j, 1, 2}]
m=DiagonalMatrix[{1,2,3,4}] (* 対角行列 *)
** 行列要素を取り出す [#h9cd11d3]
m[[1,All]] (* mの1行目だけ取り出す。mは2次元配列より大...
Part[m,1,All] (* 〃 *)
m[[1;;1, 1;;2]] (* 1-1行目x1-2列目からなる部分行列 *)
** 行列表記やテーブルで表示 [#c3913a3c]
m // MatrixForm (* 行列表記で出力 *)
m // TableForm (* テーブルで出力,要素を並べる *)
または
MatrixForm[m]
TableForm[m]
なお、//MatrixForm をつけた形で行列を、変数に代入すると、
その後の行列積などが計算できない。
** 行列の積、転置、逆行列 [#x4e0125b]
A.B (* 積 *)
Transpose[A] (* 転置 *)
Inverse[A] (* 逆行列 *)
MatrixPower[A,n] (* 行列Aの n乗 *)
A*B (* 行列A,Bの各要素をお互いに掛ける *)
A^n (* 行列Aの各要素を n乗する *)
** ベクトル [#zf206c7d]
ベクトルは、1行または1列の行列として扱う。
** ノルム [#m7e16dfe]
Norm[v] ベクトルのノルム、行列のノルム(詳細は調べよ)
//-------------------------------------------------------...
* 直積(テンソル積)の例 [#ged94ed2]
AB = {
{a11 b11, a11 b12, a12 b11, a12 b12},
{a11 b21, a11 b22, a12 b21, a12 b22},
{a21 b11, a21 b12, a22 b11, a22 b12},
{a21 b21, a21 b22, a22 b21, a22 b22}
};
CC = Transpose[{{C0' C0'', C0' C1'', C1' C0'', C1' C1''}...
A = {
{a11, a12},
{a21, a22}
};
B = {
{b11, b12},
{b21, b22}
};
C' = Transpose[{{C0', C1'}}];
C'' = Transpose[{{C0'', C1''}}];
AB // MatrixForm
CC // MatrixForm
A // MatrixForm
B // MatrixForm
C' // MatrixForm
C'' // MatrixForm
(*A \[TensorProduct] B //MatrixForm*) (* \[ TensorProduc...
(* TensorProduct[A,B] //MatrixForm *)
KroneckerProduct[A, B] // MatrixForm (*直積*)
lhs = KroneckerProduct[A, B].CC;
lhs // MatrixForm
rhs = Expand[KroneckerProduct[(A.C'), (B.C'')]];
rhs // MatrixForm
lhs - rhs // MatrixForm
(*他*)
Dimensions[A]
Dimensions[A // MatrixForm]
//-------------------------------------------------------...
* グラフ描画 [#s058a1d4]
** Plot [#v56d1964]
(*例1*)
Plot[{
b*(Exp[k*(b - a)*t] - 1)/(b/a*Exp[k*(b - a)*t] - 1) /....
b*(Exp[k*(b - a)*t] - 1)/(b/a*Exp[k*(b - a)*t] - 1) /....
a*a*k*t/(a*k*t + 1) /. { a -> 1, k -> 1}
},
{t, 0, 10} ]
(*例2*)
omega1 = 0.00288;
E01 = 7.76; (*V/Ang*)
Eenv[t_] := Which[
t < 2 Pi / omega1, omega1*t/2/Pi,
t < 4 Pi / omega1, 2 - omega1*t/2/Pi,
True, 0]
Elaser1[t_] := Eenv[t]*(E01*Sin[omega1*t])
Plot[{Elaser1[t], Eenv[t], E01*Sin[omega1*t]}, {t, 0, 25...
PlotLegends -> "Expressions",
PlotRange -> {-10, 10},
GridLines -> Automatic,
AxesLabel -> {"au(time)", "V/Ang"},
PlotStyle -> {Thickness[0.01], Thickness[0.01], {Dashed...
(*例3*)
omega2 = 0.00144;
E02 = 2.74 ;(*V/Ang*)
Elaser2[t_] := (Sin[omega2*t/16])^2*(E02*Cos[omega2*t])
Plot[{Elaser2[t], (Sin[omega2*t/16])^2, E02*Cos[omega2*t...
PlotLegends -> "Expressions",
PlotRange -> {-3, 3},
GridLines -> Automatic,
AxesLabel -> {"au(time)", "V/Ang"},
PlotStyle -> {Thickness[0.01], Thickness[0.01], {Dashed...
*** 線の太さ指定 [#bce37b2c]
PlotStyle -> { Thickness[0.005] } #0.005がデフォルト...
*** 凡例の表示 [#s8369c9e]
PlotLegends -> "Expressions"
*** 線を太くして破線にする [#n7c2d66b]
PlotStyle -> { Thickness[0.01],
Thickness[0.01],
{Dashed, Thickness[0.005]},
{Dashed, Thickness[0.005]} } #4本分指定
*** 線の色の指定 [#y9e0d454]
PlotStyle -> { {Blue, Thickness[0.01]},
{Orange, Thickness[0.01]},
{Blue, Dashed, Thickness[0.005]},
{Orange, Dashed, Thickness[0.005]}}
*** 縦横のスケールを同じにしてグラフを描きたい [#z3649b8d]
例えば、
Plot[ {0.3*Sin[x],x},
{x, -3, 12}, PlotRange -> {-0.74, 0.74}, AspectRat...
ImageSize -> Full ]
# 横軸幅 15、縦軸幅 1.5、縦横比が 1.5/15=1/10なので、...
# ImageSize->Fullを付けるとウィンドウ幅に合わせて拡大...
** Plot3D [#bec89b7b]
(* z^(1/3)=Exp[1/3 Log[Abs[z]] + I/3 Arg[z]+I/3* 2 m Pi
where -Pi<=Arg[z]<Pi and m=0,1,2 のリーマン面を描く *)
Plot3D[ {
Arg[( x + I*y)^(1/3)] + 0* 2 Pi /3, (*m=0,mathematic...
Arg[( x + I*y)^(1/3)] + 1* 2 Pi /3, (*m=1*)
Arg[( x + I*y)^(1/3)] + 2* 2 Pi /3 (*m=2*)
},
{x, -2, 2}, {y, -2, 2},
AxesLabel -> Automatic, (*軸ラベルを表示*)
PlotLegends -> "Expressions" (*凡例表示。ひとつだと出...
LabelStyle -> Directive[Bold, Medium], (*軸ラベルを太く...
Mesh -> 3,
PlotStyle -> {Opacity[0.8]}, (*透過度。色も可*)
ExclusionsStyle -> {None, Red}, (*値が飛ぶ所を描かない...
Ticks -> {Automatic, Automatic, {-Pi, -Pi/2, 0, Pi/2, P...
ViewPoint -> {-5, -3.4, 3}*1000
]
//-------------------------------------------------------...
* 関数の定義 [#vc80cc13]
z[r_, t_] := r Exp[ I t ]
S[n_, x_] := Which[ n == 0, Which[ x < -1, 0,
x < 0, 1 - 3*x^2 - 2*...
x < 1, 1 - 3*x^2 + 2*...
True, 0],
n == 1, Which[ x < -1, 0,
x < 0, x + 2*x^2 + x^3,
x < 1, x - 2*x^2 + x^...
True, 0]]
- なお、:= は遅延型の割り当てであり要求されるときに毎回評...
:= ではなく = を使う(即時型の割り当て)と定義時に1度だ...
https://reference.wolfram.com/language/tutorial/Immediate...
- 上のS[n,x]の微分をプロットしたい場合は(:=と=のいずれの...
Plot[ {S[0,x], D[S[0, t], t] /. {t -> x}}, {x, -2, 2}]
とする。
myarg[ a_ ] := Module[ {rcd = a}, (* ローカル変数を定義...
While[rcd >= Pi, rcd = rcd - 2 Pi];
While[rcd < - Pi, rcd = rcd + 2 Pi];
rcd];
//-------------------------------------------------------...
* 式展開やまとめ [#l58116d0]
** 基本 [#y23cb981]
Expand # 展開
Factor # 因数分解
Cancel # 約分
Simplify[ hoge, [assump]] # 式hogeを簡単にする。ass...
FullSimplify[ hoge, [assump]] # 初等関数と特殊関数を含...
** いろいろな展開・簡約のシンボル [#u5ebdba6]
Expand[expr] 式の積とベキ乗の項を展開
ExpandAll[expr] すべての項にExpandを適用
Factor[expr] 因子の積の形に変換
Together[expr] 通分し単一分数にまとめる
Apart[expr] 簡単な形の分母を持った複数の分数項に...
Cancel[expr] 分母と分子の共通因子を約分する
Simplify[expr] 式 exprに代数変形を試し,最も短い式...
{Numerator[expr], Denominator[expr]} 式 exprの分子と...
Collect[expr,x] xの同じ次数の項をまとめる
FactorTerms[expr,x] xに依存しない因子を取り出す
TrigExpand[expr] 三角関数の式を項の和の形に展開
TrigFactor[expr] 三角関数の式を項の積の形に分解
TrigReduce[expr] 整数倍の角度を用いて三角関数を簡約
TrigToExp[expr] 三角関数を指数関数に変形
ExpToTrig[expr] 指数関数を三角関数に変形
FunctionExpand[expr] 特殊関数やその他の関数を展開
ComplexExpand[expr] すべての変数が実数からなるとした上...
PowerExpand[expr] 例えば(xy)^p を x^p y^p に展開する
- 詳細は
https://reference.wolfram.com/language/tutorial/PuttingEx...
を見よ。
//-------------------------------------------------------...
* For文 [#x3304d9f]
(例)
NN = 10;
For[j = 0, j < NN, j++,
a = 1 - ((j - 1/2*(NN - 1))/(1/2*(NN + 1)))^2;
Print["j=", j, " a=", N[a, 3]];
];
//-------------------------------------------------------...
ページ名: