声明。我熟悉Mathematica但不熟悉Matlab,所以如果这是一个新手问题,我很抱歉。
我在Matlab上使用Matlab的solve命令得到了一个奇怪的错误:
solve(0.2 = (1.4+1/2)^((1.4+1)/(2*(1.4-1)))*(M)/((1+(1.4-1)/2*M^2))^((1.4+1)/(2*(1.4-1))), M)
错误是:
Error: The expression to the left of the equals sign is not a valid target for an assignment.
Mathematica中的等效Solve命令(使用相同的表达式)工作正常,因此我认为我的表达式本身无效。 此外,当我尝试使用doc网站上的示例时,我收到了同样的错误:http://www.mathworks.com/help/symbolic/mupad_ref/solve.html
这是一个配置问题,还是我错误解释命令的语法?
编辑:我也试过==而不是=,我得到一个不同的错误:
Undefined function or variable 'M'.
另外,作为一个注释,我正在运行Matlab R2011b(7.13.0.564)64位(glnxa64)。
Edit2:我尝试了第一个使用syms建议的解决方案:
>> syms M
>> solve(0.2 == (1.4+1/2)^((1.4+1)/(2*(1.4-1)))*(M)/((1+(1.4-1)/2*M^2))^((1.4+1)/(2*(1.4-1))), M)
Error using char
Conversion to char from logical is not possible.
Error in solve>getEqns (line 245)
vc = char(v);
Error in solve (line 141)
[eqns,vars,options] = getEqns(varargin{:});
Edit3:即使是最简单的方程,我也能够重现这个问题
>> syms x
>> solve(x^2 -4 == 0, x)
Error using char
Conversion to char from logical is not possible.
Error in solve>getEqns (line 245)
vc = char(v);
Error in solve (line 141)
[eqns,vars,options] = getEqns(varargin{:});
此外,我也尝试了此处建议的解决方案:MATLAB examples are failing
答案 0 :(得分:4)
Matlab的fsolve命令假定表达式设置为零。如果以数字方式解决,你就不会这样做:
x=solve(2=x+1,x)
而是:
x=fsolve(@(x) x+1-2,0)
当等式已经设置为零时,@(x)就是你要解决的问题,0是初始猜测。你必须包括哪些。
象征性地使用解决方案,它看起来像这样:
syms x
val=solve(x+1-2)
或者对于您的系统:
syms M
solve(-0.2+ (1.4+1/2)^((1.4+1)/(2*(1.4-1)))*(M)/((1+(1.4-1)/2*M^2))^((1.4+1)/(2*(1.4-1))))
ans =
4.7161724968093348297842999805458
0.029173662296926424763929809009225
- 3.8716404782846254923900841980317 - 3.4984412176176158766571497649425*i
1.4989673987314948651159693032542 + 5.5784387926679222829321168661041*i
1.4989673987314948651159693032542 - 5.5784387926679222829321168661041*i
- 3.8716404782846254923900841980317 + 3.4984412176176158766571497649425*i
答案 1 :(得分:2)
您应将M定义为sym
,并使用==
代替=
syms M
solve(0.2 == (1.4+1/2)^((1.4+1)/(2*(1.4-1)))*(M)/((1+(1.4-1)/2*M^2))^((1.4+1)/(2*(1.4-1))), M)
ans =
4.7161724968093348297842999805458
0.029173662296926424763929809009225
- 3.8716404782846254923900841980317 - 3.4984412176176158766571497649425*i
1.4989673987314948651159693032542 + 5.5784387926679222829321168661041*i
1.4989673987314948651159693032542 - 5.5784387926679222829321168661041*i
- 3.8716404782846254923900841980317 + 3.4984412176176158766571497649425*i