Mathematica - 绘制直接从solve创建的函数的输出

时间:2012-11-02 05:39:22

标签: plot wolfram-mathematica

我有一些相当长的矩阵代数,我试图绘制结果。轴上似乎没有任何东西出现,我无法确定问题出在哪里。我使用这里的提示从解决输出成功创建了一个函数: How to create a function directly from the output of 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中转录了这个函数,它绘制得很好,所以我知道解决方案是合理的。我必须为几个矩阵解决这个问题,这个矩阵只是变得更加毛茸茸,所以转录到Matlab并不理想。我想在Mathematica中绘图。

有什么想法吗?

1 个答案:

答案 0 :(得分: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 &}]

应该运作良好。