2

結果をプロットしようとしているかなり長い行列代数があります。軸には何も表示されていないようで、問題がどこにあるのかよくわかりません。ここでのヒントを使用して、solveの出力から関数を正常に作成しました 。Solveの出力から直接関数を作成する方法 しかし、プロットされません。

ここに(簡単に)コードがあります:

eqn = m.{1, r} == {t, 0}

sols1 = Solve[eqn, {t, r}]

mは複素行列です

出力は次のとおりです。

{{t -> -((-1. cos[9.62458 s]^2 - (1. + 0. I) sin[9.62458 s]^2)/( cos[9.62458 s] - (0. + 2.4087 I) sin[9.62458 s])), r -> ((0. + 2.1913 I) sin[9.62458 s])/( cos[9.62458 s] - (0. + 2.4087 I) sin[9.62458 s])}}

これまでのところ良いです(Mathematicaがcos ^ 2 + sin ^ 2 = 1全体に問題があるように見えることを除いて)。

次に、tの実数部をsの関数としてプロットしようとします。

Plot[Re[t /. sols1], {s, 0, 0.4}]

そして、私はただ空の軸を取得します。

出力を関数に割り当てて、そのようにプロットしてみます

f[s_] = t /. sols1[[1, 1]]

Plot[Re[f[s]], {s, 0, 0.4}]

そして、私はまだ空の軸を取得します。Matlabで関数を転記したところ、うまくプロットされたので、解決策は適切であることがわかりました。ますます毛むくじゃらになるいくつかの行列mについてこれを解決する必要があるため、Matlabに転記することは理想的ではありません。Mathematicaで正しくプロットしたい。

何か案は?

4

1 に答える 1

0

Mathematica 構文を使用してみてください。すなわち;Sinの代わりに sinについても同じcos

In[1]:= sols1={
{t->-((-1. cos[9.62458 s]^2-(1.+0. I) sin[9.62458 s]^2)/(cos[9.62458 s]-(0.+2.4087 I) sin[9.62458 s]))
,r->((0.+2.1913 I) sin[9.62458 s])/(cos[9.62458 s]-(0.+2.4087 I) sin[9.62458 s])}
}/.{cos->Cos,sin->Sin}//FullSimplify//Chop
Out[1]= {{t->1./(Cos[9.62458 s]-(0. +2.4087 I) Sin[9.62458 s]),r->1/(-1.09921-(0. +0.45635 I) Cot[9.62458 s])}}

それから例えば

GraphicsColumn[Plot[t /. sols1 // #, {s, 0, .4}, PlotLabel -> #[t], Frame -> True] & /@ {Re, Im, Abs[#]^2 &}]

うまくいくはずです。

于 2012-11-05T12:02:57.613 に答える