Solving a system of nonlinear equations

1 visualización (últimos 30 días)
AP
AP el 28 de Jul. de 2015
Comentada: Matt J el 29 de Jul. de 2015
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).

Respuestas (1)

Matt J
Matt J el 28 de Jul. de 2015
Editada: Matt J el 28 de Jul. de 2015
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 comentarios
AP
AP el 28 de Jul. de 2015
Thanks. The second method (for noise), using bsxfun, yields strange results for the coefficients.
Matt J
Matt J el 29 de Jul. de 2015
See if omitting the line
A=bsxfun(@minus,A,mean(A,1));
makes a difference.

Iniciar sesión para comentar.

Categorías

Más información sobre Systems of Nonlinear Equations en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by