评估Matlab的符号功能

时间:2013-11-17 15:25:39

标签: matlab symbolic-math

我的符号功能有问题。我正在创建自己的函数,其第一个参数是一个字符串。然后我将该字符串转换为符号函数:

f =  syms(func)

让我们说我的字符串是sin(x)。所以现在我想用subs来计算它。

a = subs(f, 1)

结果是sin(1)而不是数字。

对于0,它可以正常工作和计算。我应该怎么做才能获得实际结果,不仅仅是sin(1)sin(2)等?

3 个答案:

答案 0 :(得分:7)

您也可以使用eval()评估subs()功能获得的功能

f=sin(x);
a=eval(subs(f,1));
disp(a);
a =

    0.8415

答案 1 :(得分:4)

syms x
f = sin(x) ;

然后,如果您要为x分配值,例如pi/2您可以执行以下操作:

subs(f,x,pi/2)
ans =

1

答案 2 :(得分:2)

您可以使用matlabFunction有效地评估函数。 syms s t x = [2-5 * t - 2 * s,9 * s + 12 * t - 5,7 * s + 2 * t - 1]; X = matlabFunction(X); 然后您可以在命令窗口中键入x并确保显示以下内容:

  
    

X

  

x =

@(s,t)[s.*-2.0-t.*5.0+2.0,s.*9.0+t.*1.2e1-5.0,s.*7.0+t.*2.0-1.0]

你可以看到你的函数现在由s和t定义。您可以通过写入x(1,2)来调用此函数,其中s = 1且t = 1。它应该为你生成一个值。

以下是需要考虑的一些事项:我不知道这种方法与潜艇之间哪个更准确。不同方法的精度可以变化。如果你试图产生巨大的矩阵,我不知道哪个会运行得更快。如果你没有进行认真的研究或编码速度,那么这些事情可能并不重要。