我想要解决的等式是
syms w v;
rho_air = 1.25;
equ = w == 0.5 * rho_air * v^2
问题在于,有时,我想从v解决w,有时从v到w。
我该怎么做?
我只知道这样做(现在不行,我不知道为什么):
syms v;
rho_air = 1.25;
w = 1;
equ = w == 0.5 * rho_air * v^2;
但是我必须改变它来解决v,比如
syms w;
rho_air = 1.25;
v = 1;
equ = w == 0.5 * rho_air * v^2;
这是非常重复的。无论如何更优雅地解决它?
答案 0 :(得分:1)
这是一种使用函数的方法,其中输入是要求(作为字符串)和rho_air的变量。这是不言自明的。而且我不知道为什么你的上述代码不起作用;你只是错过了解决的电话,你很高兴去了:)。
function [ out ] = SolveFor(Var2Solve,rho_air)
if strcmp(Var2Solve,'v')
syms Var2Solve
v = Var2Solve
w = 1;
equ = w == 0.5 * rho_air * v^2;
out = solve(equ,v)
elseif strcmp(Var2Solve,'w')
syms Var2Solve
w = Var2Solve
v = 1;
equ = w == 0.5 * rho_air * v^2;
out = solve(equ,w)
end
end
TESTS(在命令窗口中):
SolveSym('v',1.25)
out =
(2*10^(1/2))/5
-(2*10^(1/2))/5
和
SolveSym('w',1.25)
out =
5/8
答案 1 :(得分:1)
在旧的Matlab版本中,您需要将等式定义为字符串;然后你可以申请solve
:
>> syms w v;
rho_air = 1.25;
>> equ = 'w = 0.5 * rho_air * v^2';
>> solve(equ, w)
ans =
0.5*rho_air*v^2
>> solve(equ, v)
ans =
(2^(1/2)*w^(1/2))/rho_air^(1/2)
-(2^(1/2)*w^(1/2))/rho_air^(1/2)