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

尝试使用数学语法。即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 回答