2014-11-08 46 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 
相關問題