2014-11-08 83 views
1

我要解决的方程求解方程是Matlab的:用不同的输入变量

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

所以@ cqcn1991做了任何答案提供帮助你解决你的问题? – 2014-11-09 22:03:55

回答

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) 
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 

试验(在命令窗口):

SolveSym('v',1.25) 

out = 

    (2*10^(1/2))/5 
-(2*10^(1/2))/5 

SolveSym('w',1.25) 

out = 

5/8 
相关问题