matlab中,如何在一个符号表达式中赋值求解

例如:
syms a b
r=a+b
我想对a和b赋值来求解出r,但是不知道怎么弄,麻烦知道的人回答,谢谢。

第1个回答  2011-04-20
利用命令 help subs,查看subs的作用.
Matlab中的实例为:
实例1: Single input:
Suppose a = 980 and C1 = 3 exist in the workspace.
The statement
y = dsolve('Dy = -a*y')
produces
y = exp(-a*t)*C1
Then the statement
subs(y)
produces
ans = 3*exp(-980*t)
实例2: Single Substitution:
subs(a+b,a,4) returns
4+b.

实例3: Multiple Substitutions:
subs(cos(a)+sin(b),{a,b},{sym('alpha'),2}) returns
cos(alpha)+sin(2)

实例4: Scalar Expansion Case:
subs(exp(a*t),'a',-magic(2)) returns

[ exp(-t), exp(-3*t)]
[ exp(-4*t), exp(-2*t)]

实例5: Multiple Scalar Expansion:
subs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]}) returns
[ 0, -1]
[ 2, 0]
另外,可参考subexpr

参考资料:http://hi.baidu.com/dongodng20081/blog/item/19e53b100a8b660b213f2ecd.html

第2个回答  推荐于2018-11-09
比如要赋值a=1 b=2
那么用subs(r,[a b],[1 2]);
语法是subs(s,old,new);
假如只有一个符号变量,可以为subs(s,new);本回答被网友采纳
第3个回答  推荐于2017-11-24
syms a b
r=a+b
subs(subs(r,a,1),b,2)
%上面就是将a=1,b=2代入。

%当然也可以用这样弄
syms a b
r=a+b
a=1
b=2
subs(r)追问

谢谢,不过这样只能赋值一次。第二次赋值后出现的结果还是第一次赋值后的结构,而且像这样在命令窗口中赋值,a和b的数据类型已经发生改变。那么有没有办法可以不改变a和b的数据类型,那这样就可以多次赋值使用?谢谢

追答

如果这样,那只建议你用第一种。

追问

这个问题已经解决了,谢谢啊。我现在还有另外一个问题,麻烦解答,谢谢。
问题是这样的:在一个很长的符号表达式中,我想将这个表达式按某一个表达式来归并。这个该怎么操作呢?
例如:D=x1*y2 - x2*y1 - 6*L1*x1*y2 + 6*L1*x2*y1 - 6*L2*x1*y2 + 6*L2*x2*y1 - 2*L3*x1*y1 - 2*L3*x1*y2 + 2*L3*x2*y1 - 2*L3*x1*y3 + 2*L3*x2*y2
A=(x1*y2)/2 - (x2*y1)/2 - (x1*y3)/2 + (x3*y1)/2 + (x2*y3)/2 - (x3*y2)/2
我想将D按A来归并

追答

估计很难实现。
而且只能说,按A中的项进行合并。

按你那样讲的话,
你直接D/A就弄出来了。

本回答被提问者采纳
相似回答