【发布时间】:2015-04-20 21:17:11
【问题描述】:
我的任务是创建一个 matlab 程序,我正在为该任务搜索“switch”和“if”函数。
并且用户将定义任意两个变量,然后 matlab 将求解另一个。通常情况下,我会使用“if”来说明不同的情况,但方程中变量数量的增加也会增加行数。
更新了演示:
% Mach Number after Shockwaves
M2=sqrt((((gamma-1).*M1.^2)+2)./(2*gamma.*M1.^2-(gamma-1)));
% Temperature Ratio
TR=((2*gamma.*M1.^2-(gamma-1)).*(((gamma-1).*M1.^2)+2))./(((gamma+1)^2).*M1.^2);
% Pressure Ratio
PR=(2*gamma.*M1.^2-(gamma-1))./(gamma+1);
% Density Ratio
rhoR=((gamma+1).*M1.^2)./(((gamma-1).*M1.^2)+2);
%Stagnant Pressure Ratio Before Shockwaves
P0R=(((1+0.2.*M2.^2)./(1+0.2.*M1.^2)).^(1.4/0.1)).*((2*gamma.*M1.^2-(gamma-1))./(gamma+1));
%Stagnant Pressure Ratio After Shockwaves
P1R=((1+0.2.*M2.^2).^(1.4/0.4)).*((2*gamma.*M1.^2-(gamma-1))./(gamma+1));
还有其他选择吗?另外,我校园里运行的matlab没有符号工具箱,所以最好避免它。我现在无计可施,因为我确信有一个简单的解决方案可以解决这种情况。
进一步更新了精确方程: 该程序将能够做到这一点,假设用户输入“TR”和“gamma”,然后Matlab会找到“M1”。这将进一步带入后续方程,我将得到“M2”、“PR”、“rhoR”、“P0R”和“P1R”。另外,我意识到由于Matlab会从上到下阅读,有什么办法可以解决这个问题吗?
【问题讨论】:
-
添加代码会有所帮助
-
只需要支持线性方程吗?然后看看mathworks.com/help/matlab/ref/linsolve.html
-
添加了一个简单的代码来演示我的问题。 @小姐。但是考虑到用户的输入,“linsolve”是否允许 matlab 自动求解变量?
-
是您唯一需要涵盖的示例方程式吗?如果是,则计算不取决于是否给出
x和y,或x和z,或y和z:result = -a-b;您应该在需要的地方提供更多上下文信息等。 -
您需要称它们为 X、Y、Z 吗?或者它可以被canged?
标签: matlab