Matrix inverse for non-square matrix

3 visualizaciones (últimos 30 días)
John Chesser
John Chesser el 11 de Abr. de 2019
Editada: John Chesser el 15 de Abr. de 2019
I am trying to create a code that solves viscoelastic mechanical behavior problems using the collocation method. In order to do this I need to solve the following;
[A]{D}={B} where is D is the array needing to be solved. Therefore {D}=[A]^-1 {B} where A is a (j x k) matrix and B is a (k x 1) array making the resulting D a (j x 1) array. In my current code j = 11 and k = 1,400,000. I've tried the following codes but the results are not correct;
Dj = pinv(Akj).*Bk;
However, this results in a k x j matrix for D.
and;
Dj = (Akj.^(-1))*Bk;
Which does result in the correct j x 1 array for D, but I do not believe it is given the correct values.
Thank you for your time.
  4 comentarios
Christine Tobler
Christine Tobler el 15 de Abr. de 2019
I agree with David, probably the best would be to just use backslash.
Also, in your call
pinv(Akj).*Bk
the .* operator does an elementwise multiplication, not a matrix multiplication as you were probably intending.
The inv function errors for non-square matrices, so it should just not work, not give you any wrong results.
John Chesser
John Chesser el 15 de Abr. de 2019
Editada: John Chesser el 15 de Abr. de 2019
As mentioned above, A is supposed to be a (k x j) matrix. When filling A with it's values I had isssues in my loops which were causing A to be a (j x k) matrix. I have since fixed this and have implemented the suggested D = A\B, and it is working correctly and giving correct solutions. Thank you all for your help!

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Linear Algebra en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by