我想找常数在一个有很多参数的方程

11视图(30天)
我有一个方程。但它有超过已知的变量。因为,我不能使用曲线拟合工具箱。例如我的方程z = h * (* x + b * x ^ 2 + y / c * u)我有1600的z值,h, x, y和u值在excel中。这些都是已知的变量。a, b, c是常数。我想找到最好的a、b和c值。我能怎么做?在Matlab我非常新鲜。请帮助我。

接受的答案

明星黾
明星黾 2016年9月3日
这样的工作:
% % % % % z = h * (* x + b * x ^ 2 + y / c * u)
% %参数映射:p (1) = a, p (2) = b, c p (3) =
% %变量映射:v (: 1) = z, v (:, 2) = h、v (:, 3) = x, v (:, 4) = y v (:, 5) = u
z = @ (p, v) v (:, 2)。* (p (1)。* v (:, 3) + p (2)。* v (:, 4)。/ v (:, 3)。^ 2 +(3页)。* v (:, 5));%目标函数
v = [z (:) h (:) x (:) y (:) u (:));%变量数组
P0 = [1;2;3);%选择合适的初始参数估计
SSECF = @ (p)和((v (: 1) - z (p, v)) ^ 2);% Sum-Squared-Error成本函数
[abc, SSE] = fminsearch (SSECF P0);%估计参数
一个= abc (1)
b = abc (2)
c = abc (3)
请注意 : 我测试了这个随机数据和运行没有错误。我显然无法测试它与你的数据。
17日评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年8月3日
有时是微积分的方法生产。使用符号变量v和p和调用SSECF()符号p SSECF公式。
在这一点上你会试图区分SSECF对p(1)或(2)或p(3),然后求解导数为0。
然而……我跑这些测试,发现对于这个特定的公式,MATLAB是无法找到解决的办法。exp()和增加的数量,我会感到惊讶如果确实是一个封闭的形式在这种特殊情况下的公式。
微积分是一个有用的工具在某些情况下,但没有那么多。
. .不过我猜你可能会vpasolve导数和() 希望 给你一些东西。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!