Solving a system of nonlinear equations

8 ビュー (過去 30 日間)
AP
AP 2015 年 7 月 28 日
コメント済み: Matt J 2015 年 7 月 29 日
I have about 1000 measurement which relates three variables to each other: x, y, and z. In other words, I have 1000 measurement values for x, y, and z. The relationship among them is as follows:
Could someone kindly tell me how I can find the coefficients c1, c2, and c3 using MATLAB? If there were no interaction between x and y (c3=0), then c1 and c2 could be easily found by the backslash operator in MATLAB in a least square way (A\b).

回答 (1 件)

Matt J
Matt J 2015 年 7 月 28 日
編集済み: Matt J 2015 年 7 月 28 日
If there were no interaction between x and y (c3=0), then c1 and c2 could be easily found by the backslash operator in MATLAB in a least square way (A\b)
Backslash should still work for least squares estimation,
x=x(:); y=y(:); z=z(:);
c = [x,y,x.*y].\z; %c=[c1;c2;c3]
although, if you have measurement noise in x and y (regardless of c3=0), some would say you should be using total least squares instead of ordinary least squares,
x=x(:); y=y(:); z=z(:);
A=[x,y,x.*y,-z];
A=bsxfun(@minus,A,mean(A,1));
[~,~,V]=svd(A,0);
c=V(1:end-1,end)./V(end);
  2 件のコメント
AP
AP 2015 年 7 月 28 日
Thanks. The second method (for noise), using bsxfun, yields strange results for the coefficients.
Matt J
Matt J 2015 年 7 月 29 日
See if omitting the line
A=bsxfun(@minus,A,mean(A,1));
makes a difference.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSystems of Nonlinear Equations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by