(Matlab)符号工具箱:函数文件

时间:2015-04-22 10:45:07

标签: matlab symbolic-math

我有机会获得以下代码作为我之前问题的答案。

function [] = calc_third(varname_1, var_value_1, varname_2, var_value_2)

    gamma = sym('gamma');
    M1 = sym('M1');
    TR = sym('TR');

    eq = TR ==(((gamma - 1)*M1^2 + 2)*(2*gamma*M1^2 - gamma + 1))/(M1^2*(gamma + 1)^2);

    subs_eq = (subs(eq,[sym(varname_1), sym(varname_2)],[var_value_1,var_value_2]));

    missing_var = symvar(subs_eq)

    solve(subs_eq,missing_var)

end

它应该在控制台中给出一个输出:

>>calc_third('gamma', 0.5, 'TR', 100)

missing_var =

M1

ans =

(2*2^(1/2))/(3*88609^(1/2) + 893)^(1/2)

相反,Matlab给了我以下错误:

>> calc_third('gamma',1.4,'TR',100)

missing_var = 

   Empty cell array: 0-by-1

Warning: List of equations is empty. 
> In solve at 70
  In calc_third at 13

ans =

[ empty sym ]

我在Matlab 7.12.0(R2011a)上,带有符号工具箱。我错过了什么?

1 个答案:

答案 0 :(得分:0)

从其他用户的评论来看,symvar看起来无法识别R2011a中的剩余变量。这对于较新的Matlab来说不是问题,至少从R2013a开始,使用符号数学工具箱v5.10开始。