如何用matlab表达以下公式?

img

表达图中的公式7,以流量q为变量,就是一个公式里包含其他代数式,当然也希望有懂数学的朋友说一下这是什么公式。

实现:

% 定义给定流量Q0
Q0 = 25;
% 定义给定位置L0
L0 = 5;

% 定义Q1Q2
Q1 = Q0 - mod(Q0, 5);
Q2 = Q1 + 5;

% 定义α1、α2
α1 = 0.0004966*L0^3 - 0.04846*L0^2 + 3.048*L0 - 92.48;
α2 = 0.0002279*L0^3 - 0.03254*L0^2 + 2.651*L0 - 91.21;

% 计算α0
α0 = α1 - (α1 - α2) / 5 * (Q0 - Q1);


变量Q0、L0为输入参数,Q1、Q2为计算出的流量值,α0、α1、α2分别为求出的俯仰角的值。

该回答引用ChatGPT

公式7是用来求水炮俯仰角ao的。其中Qo、Q1、Q2是流量的变量,L是火源位置的变量。a1、a2、a4是当流量为Qo、Q1、Q2时对应的拟合代数式。公式7的求解过程是:通过求出Q1和Q2,再用拟合代数式求出a1、a2,再通过公式a(4)=a(5)-(a4)-4,4)x(2.%5)ao得到所需的水炮俯仰角ao。

L = ... % 已知的火源位置
Qo = 20;
Q1 = Qo - 5;
Q2 = Q1 + 5;

a1 = 0.0001035 * L^3 - 0.06639 * L^2 + 3.374 * L - 92.67;
a2 = 0.0004966 * L^3 - 0.04846 * L^2 + 3.048 * L - 92.48;
a4 = 0.0001151 * L^3 - 0.02242 * L^2 + 2.33 * L - 89.84;

ao = a4 + (a1 - a4) * (Qo - Q2) / (Qo - Q1);

其中 ... 表示火源位置L的实际值需要替换。

可以使用 Matlab 的函数拟合工具,如 fitnlm,来表达此公式。设定参数 x 为流量,param 为需要拟合的参数,则可用以下代码来拟合所给的数据:

modelFun = @(param, x) param(1)*x.^3 + param(2)*x.^2 + param(3)*x + param(4);
fitobj = fitnlm(x, y, modelFun, param0);
betaCoeff = fitobj.Coefficients.Estimate;

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^