【问题标题】:Solving of explicit equation in MATLAB在 MATLAB 中求解显式方程
【发布时间】:2014-06-16 21:09:29
【问题描述】:

我需要为整个流场上的马赫数 M 求解以下方程:

其中q_c定义为

γ 是一个常数,是比热比(空气为 1.4),p 是压力,是网格尺寸的矩阵。因此,它是一个两边都有M 的方程,需要明确求解。

是否有内置的 MATLAB 函数或任何其他方法可以在整个流场上求解 M 的这个方程?

【问题讨论】:

  • 那么,您要做的就是为矩阵 p 中的每个 p_ij 值求解这个方程?您的第一步是求解标量值p。然后,您将能够向我们展示一些代码并攻击问题的第二部分:如何向量化该代码。准确告诉我们你在哪个部分有问题,如果是矢量化,我们绝对必须先看代码。
  • 谢谢库巴。我想解决 M,我已经有了 p。
  • γ=1.4,通常;见the wiki。您可能会将其与标准密度(≈ 1.225 kg/m³)混淆
  • 谢谢@RodyOldenhuis,你是对的。
  • 等等:你说这个方程中唯一的矩阵/向量是压力p,对吧?您似乎将其分开,因此方程式与压力无关;这个值在任何地方都是一样的......这可能不正确,你能纠正这个等式吗?

标签: matlab


【解决方案1】:

基本上,这是一个非整数幂的多项式:

a := 0.88...
N := M²

⇒ N - a²·(½γN + 1)·(1 - 1/7N)²⁵ = 0

没有解析解。所以,你必须去数字。最简单(但不是最快)的方法:

gamma = 1.4;
a = 0.88128485;
M = zeros(size(p));

for ii = 1:numel(M)
    M(ii) = fzero(@(M)...
        M - a*sqrt( (gamma/2*p(ii)*M.^2 + 1).*(1-1./7./M.^2).^(2.5) ), ...
        2.5); %# initial value; insert your roughly expected value here
end

【讨论】:

  • 非常感谢@RodyOldenhuis 的快速帮助。我基本上只需要计算它以进行后期处理,所以速度并不那么重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2018-05-01
  • 1970-01-01
相关资源
最近更新 更多