Borrar filtros
Borrar filtros

How can I solve the least square minimization Ax=b when b is unknown?

2 visualizaciones (últimos 30 días)
Hi all,
I'm new in the forum. I've been thinking to this problem for a long time, so any suggestion would be appreciated. I've the following problem:
I have this equation
E p = d, where
E = (x1, y1, z1;
x2, y2, z2;
x3, y3, z3;
x4, y4, z4)
p = (a; b; c)
d = (d; d; d; d)
I want to find p using the least square minimization, but also d is unknown.
Do you have any suggestion?
Thank you
Valentina
  1 comentario
Star Strider
Star Strider el 28 de Mzo. de 2015
Editada: Star Strider el 28 de Mzo. de 2015
Tell us more about what created that problem. Maybe that will suggest a solution.

Iniciar sesión para comentar.

Respuesta aceptada

Roger Stafford
Roger Stafford el 28 de Mzo. de 2015
Editada: Roger Stafford el 28 de Mzo. de 2015
Whatever the value of d is, the following will give the least squares approximation for E*p-[d;d;d;d] = 0.
x = [x1;x2;x3;x4];
y = [y1;y2;y3;y4];
z = [z1;z2;z3;z4];
A = [sum(x.^2),sum(x.*y),sum(x.*z);
sum(x.*y),sum(y.^2),sum(y.*z);
sum(x.*z),sum(y.*z),sum(z.^2)];
p = d*(A\[sum(x);sum(y);sum(z)]);
where p = [a;b;c].

Más respuestas (3)

John D'Errico
John D'Errico el 29 de Mzo. de 2015
Editada: John D'Errico el 29 de Mzo. de 2015
I would point out that the solution is simply a multiple of p1, where p1 is given as the solution of:
E*p1 = ones(4,1)
Think of p1 as the solution for d=1. So solve for p1 as
p1 = E\ones(4,1);
Then despite the fact that you don't know d, the solution is simply
syms d
p = d*p1
Fairly trivial. Of course, that leaves the solution defined in terms of d as a parameter. If you then decided on the value of d, it simply scales p1 to give your answer.
If the goal is to solve for d also, then by moving d into the set of unknowns, now we have:
phat = [a;b;c;d]
Ehat = [x1, y1, z1, -1;
x2, y2, z2, -1;
x3, y3, z3, -1;
x4, y4, z4, -1];
(This is essentially what Matt did, but he missed a sign on d when he moved it to the left hand side.) Now you will be solving the homogeneous problem
Ehat*phat = 0
If the Ehat matrix is of less than full rank (i.e., it is singular), then a non-degenerate solution always exists. We can get the solution from the nullspace of Ehat. Thus the columns of null(Ehat) will yield a pair of vectors that spans the solution set.
For example:
E = [1 2 3;4 5 6;7 8 9;10 11 13]
rank(E)
ans =
3
Ehat = [E,-ones(4,1)]
Ehat =
1 2 3 -1
4 5 6 -1
7 8 9 -1
10 11 13 -1
rank(Ehat)
ans =
3
phat = null(Ehat)
phat =
0.57735
-0.57735
3.2752e-15
-0.57735
In fact, any scalar multiple of this vector is also a solution. So here we have
phat = phat/phat(1)
phat =
1
-1
5.6727e-15
-1
We can now extract a,b,c,d from the above phat vector.
However, if I change E slightly,
E = [1 2 3;4 5 6;7 8 9;10 11 12];
Ehat = [E,-ones(4,1)];
rank(Ehat)
ans =
2
Ehat now has rank 2, so the solution takes on the form of any linear combination of the columns of phat.
phat = null(Ehat)
phat =
-0.50648 -0.27714
0.78363 -0.22934
-0.27714 0.50648
0.22934 0.78363

Valentina
Valentina el 28 de Mzo. de 2015
Thank you both for your answer.
Roger in your solution how should d be defined?
Because if I don't define d, I will get the error: Undefined function or variable 'd'.
Thank you again.
Valentina
  1 comentario
Roger Stafford
Roger Stafford el 28 de Mzo. de 2015
Valentina, there is absolutely no way of obtaining a least squares solution to your problem without knowing the value of d. What I have given you is simply a formula for computing a least squares solution once you know d.
To ask for a specific solution without knowing d is analogous to asking for the minimum value of a set of numbers without knowing what those numbers are. It is obviously impossible.

Iniciar sesión para comentar.


Matt J
Matt J el 28 de Mzo. de 2015
Editada: Matt J el 28 de Mzo. de 2015
EE = [E,ones(4,1)];
[U,S,V]=svd(EE);
p=V(:,end);

Categorías

Más información sobre Electrical Block Libraries 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