如何在Matlab中正确编写马赫数计算公式并解决结果偏差问题
Matlab公式计算错误修正方案
你的代码错误原因是仅用二次方程的判别式开根号进行计算,遗漏了解的线性项部分,最终得到的是不符合常规场景的强激波解。正确实现代码如下:
% 输入已知参数 M0 = 1.695; beta = 41.31; % 激波角,单位:度 gamma = 1.4; % 预计算公用项 sin_beta = sind(beta); M0_sin_sq = (M0 * sin_beta)^2; gp1 = gamma + 1; gm1 = gamma - 1; % 代入正确的M1平方计算公式,取对应常规场景的弱激波解 term1 = gp1^2 * M0^4 * sin_beta^2; term2 = 4 * (M0_sin_sq - 1) * (gamma * M0_sin_sq + 1); discriminant = sqrt(term1 - term2); numerator = gp1 * M0_sin_sq - 2 + discriminant; denominator = 2 * gamma * M0_sin_sq - gm1; M1_sq = numerator / denominator; M1 = sqrt(M1_sq); % 输出结果 disp(M1)
运行上述代码得到的结果约为1.51,和你预期的正确结果一致。
内容的提问来源于stack exchange,提问作者ahmet
相关产品推荐
相关产品推荐

