关于MATLAB符号运算的问题

2025-03-04 03:29:02
推荐回答(3个)
回答1:

1、MATLAB的符号运算是借助于其它符号运算内核完成的,2008a之前是用Maple,2008b之后用MuPad,不同版本对符号运算的具体支持可能存在差别,例如,你说的第一个问题,我在6.5和2007b、2013a等几种版本下测试,用这两种写法都可以得到相同的结果:

[x y]=solve(eq1,eq2,x,y)
[x y]=solve(eq1,eq2)

所以,谈到符号运算的问题时,最好说明自己使用的版本,以便有针对性地解决。

 

至于说两种写法的区别,前面一种指定把哪个变量作为未知数,后一种写法由符号运算内核自动确定,对于x、y、a、b这样的四个变量而言,两种写法没有区别。

 

2、subseval这两个函数的最主要区别是,subs适用于结果中仍然存在符号量的情况,得到的结果一般是解析表达式,而eval则适用于结果是具体的数值的情况,不能再含有未知量。

 

就实际测试的结果看,几种版本用eval都可以得到相同的结果,但用subs的情况则有差别:6.5和2007b会导致出错,而2013a不报错,但得到的结果中仍然有a(1)等符号。这一点也许正意味着,MATLAB可能真的将a(1)这样的元素当成了一个新变量的名字。

 

3、其实用符号运算解方程,比较合理的做法是先定义符号变量,然后用符号变量(而不是用字符串)写方程:

a=[2 1]; b=[1 1];
syms x y;
eq1=a(1)*x+a(2)*y-4;
eq2=b(1)*x+b(2)*y-3;
[x, y]=solve(eq1,eq2,x,y)

这段代码在各种版本下都能正确运行,而且得到的结果无论用subs(x)double(x)还是eval(x)都可以转换为数值。

回答2:

符号解方程,直接写方程式

回答3:

直接查帮助文档,很详细的