MATLAB求解方程,为什么赋值后得到的结果还是字母

clear all;
syms X1 X2 M1 M2 M3;
E1=8;
f1=sym('E1*X1+5-M1==0');
f2=sym('E1*X2+6+X1-M2==0');
f3=sym('E1*X2+2-M3==0');
f4=sym('M1==2*M2==3*M3');
[X1,X2,M1,M2,M3]=solve([f1,f2,f3,f4])

代码如上,为什么结果里还是有E1 而不是一个数字?

问题主要出在sym(字符串)这个操作不会引用数值变量,所以你前面的E1=8是无效的

如果要实现你的功能,那么要做两件事:

    syms E1,即把E1注册为符号变量

    subs(f1,E1,8),用符号变量的赋值函数赋值(f2f3f4同理)

追问

clear all;
syms X1 X2 M1 M2 M3 E1 ;
f1=sym('E1*X1+5-M1=0');
f2=sym('E1*X2+6+X1-M2=0');
f3=sym('E1*X2+2-M3=0');
f4=sym('M1=2*M2=3*M3');
subs(f1,E1,8);
subs(f2,E1,8);
subs(f3,E1,8);
[X1,X2,M1,M2,M3]=solve([f1,f2,f3,f4])
请问是这么用吗,怎么没效果

追答

f1=subs(f1,E1,8)
f2=subs(f2,E1,8)
f3=subs(f3,E1,8)
应该就行了,试试看
因为subs是返回新的符号变量,不对传入参数改动

追问

解决了,多谢

追答

没关系,举手之劳

温馨提示:答案为网友推荐,仅供参考
相似回答