Need help with matlab question

i need to solve a linear system of equation Ax = b; involving any singular matrix, A i have tried doing:
>> A=[3 3;3 3]
A =
3 3
3 3
>> B=[1;1]
B =
1
1
>> X=linsolve(A,B)
but i jsut get the response "Warning: Matrix is singular to working precision."
where am i going wrong?

6 comentarios

Stephen23
Stephen23 el 8 de Dic. de 2017
Editada: Stephen23 el 8 de Dic. de 2017
"where am i going wrong?"
Here:
"i need to solve a linear system of equation Ax = b; involving any singular matrix A"
Do you expect a unique solution?
Guillaume
Guillaume el 8 de Dic. de 2017
I'm curious as to what result you would consider correct in such case?
Dan Smith
Dan Smith el 8 de Dic. de 2017

im not really sure what you're saying, my knowledge off matlab is absolute 0, however my lecture has set me a question that simply reads "Question 8: Solve a linear system of equation A

Dan Smith
Dan Smith el 8 de Dic. de 2017

i dont know what i expected, i have absolutely no knowledge on matlab but have been set the question:"Solve a linear system of equation A

Dan Smith
Dan Smith el 8 de Dic. de 2017
"Solve a linear system of equation Ax = b; involving any singular matrix, A" for some reason keeps cutting my comment short??
Guillaume
Guillaume el 8 de Dic. de 2017
i have absolutely no knowledge on matlab
The problem with your question is nothing to do with matlab and everything to do with mathematics.
Mathematics tell you that
[3 3 * [X1 = [1
3 3] X2] 1]
has an infinity of solutions (all points on the line y=(1-3*x)/3) and that
[3 3 * [X1 = [1
3 3] X2] 0]
has no solution.
This is really basic linear algebra.

Iniciar sesión para comentar.

 Respuesta aceptada

John D'Errico
John D'Errico el 8 de Dic. de 2017
Where you are going wrong is in your understanding of the linear algebra.
You are trying to solve the problem A*x=B, when A is singular. Suppose this is a scalar problem? The equivalent would then be to solve the problem
A*x = B
but where A is ZERO.
You would normally try to solve it (for scalar A and B) as
x = B/A
That is fine if A is non-zero. But in this case, we are saying that A is zero. So there is no solution. x is undefined.
The same thing happens when you have a matrix A that is singular. You cannot use linsolve, backslash, or inv. They all get upset, because of the effective divide by zero. That singular matrix is there.
So what can you do? Does the problem A*x=B have a solution for singular A? For example
A = ones(2);
x = [1;3];
b = A*x
b =
4
4
So in this case, if B is the vector [4;4], we might hope to find a solution. Can we recover x as [1;3] from that problem?
NO!
Sorry, but you cannot recover x uniquely as [1;3] from that problem, even if we could solve it. First, how can we solve it at all? Is there anything you can do?
One thing you can do is to use pinv, as such:
xhat = pinv(A)*B
xhat =
2
2
If we check, we see that this is indeed a solution.
A*xhat
ans =
4
4
It does indeed solve the problem we posed. It just did not recover the original vector x that I used, when I created B. In fact, there are either infinitely many solutions to this problem, or there will be NO solution at all.
As long as B can be represented as a linear combination of the columns of A then a solution exists, and so there will be infinitely many solutions. You can test for that using
rank(A) == rank([A,B])
ans =
logical
1
So if the above test is true then infinitely many solutions for a singular matrix A will exist. If it is false, then no true solution exists.
In our test case, I used pinv. But pinv returns only one of infinitely many solutions. Since A is a 2x2 matrix, with rank 1, we can write the entire set of solutions as
syms t
X = pinv(A)*B + t*null(A);
Thus, for some unknown parameter t, the entire family of solutions is represented as:
vpa(X,16)
ans =
2.0 - 0.7071067811865475*t
0.7071067811865475*t + 2.0
And when t=sqrt(2), we have...
vpa(subs(X,t,sqrt(2)),16)
ans =
1.0
3.0
Which is where we started.
But change B slightly...
B = [3;5]
B =
3
5
rank(A) == rank([A,B])
ans =
logical
0
So if we make B the vector [3;5], then no solution will ever exist. No solution to this problem, with A=ones(2) can possibly exist.

2 comentarios

Dan Smith
Dan Smith el 8 de Dic. de 2017
that makes sense to my then i guess, thanks i guess i just assumed that since we had been asked to solve it that we would get a single answer
John D'Errico
John D'Errico el 9 de Dic. de 2017
Editada: John D'Errico el 9 de Dic. de 2017
You were probably asked to solve it as a way to introduce you to the problems when A is singular.
I showed you how to solve it, using pinv. It gives a single answer. It is just that the answer is not unique.
If B can be written as a linear combination of the columns of A, then the solution is not unique if A is singular.
If B cannot be written as a linear combination of the columns of A, and A is singular, then there is NO solution, nor can there ever be any exact solution for that problem.
The test that I showed, using rank, is the simple way to test which of those cases is true.

Iniciar sesión para comentar.

Más respuestas (1)

Birdman
Birdman el 8 de Dic. de 2017
Look, now let's solve the question by hand and see what we will see. If you multiply A*x and equal to b, you will have two equations:
3*X1+3*X2=1;
3*X1+3*X2=1;
As you see, there are infinitely many solution to the problem, which results in no unique solution. This will happen when only there is a linear dependence between A's rows or columns, which in this case we see it. Therefore this problem has infinitely many solution. Do not search for a unique one. Also, take the determinant of A, which will be zero, which will prove that rows or columns are linearly dependent of A.

6 comentarios

Dan Smith
Dan Smith el 8 de Dic. de 2017
would you be able to give me an example? say solve Ax=B if A = [3 3;3 3] and b=[2;2] (if this is possible)?
Birdman
Birdman el 8 de Dic. de 2017
It will be same thing Dan, as long as there is a linear dependence between rows and columns of A(in other words, the determinant of A is zero).
Consider A=[1 2;3 4];b=[3 5].
There will be a unique solution for this since there is no linear dependence between rows and columns of A.
Dan Smith
Dan Smith el 8 de Dic. de 2017
what do you mean by linear dependance?
Birdman
Birdman el 8 de Dic. de 2017
I mean that first column of A is a real multiple of second column or vice versa. Same goes for the rows.
Dan Smith
Dan Smith el 8 de Dic. de 2017
oh i see why youre saying my example wont work, is there an example of a singular matrix a that would give a unique result?
John D'Errico
John D'Errico el 8 de Dic. de 2017
Editada: John D'Errico el 8 de Dic. de 2017
Read my answer, where I explain in some detail why that can never happen for singular A, and when a solution will exist, and why there will be infinitely many solutions.

Iniciar sesión para comentar.

Etiquetas

Preguntada:

el 8 de Dic. de 2017

Editada:

el 9 de Dic. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by