python inverse matrix

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • htca
  • Registratie: November 2001
  • Laatst online: 03-10 08:51
Mijn vraag
Ik krijg in Python een verkeerde inverse matrix. Ik heb een controle in Excel gedaan. Het voorbeeld wat ik volg op internet gebruikt Mathcad en deze geeft de resultaten zoals in Excel naar voren komen.

Relevante software en hardware die ik gebruik
Python 3.6
Excel 2016

Wat ik al gevonden of geprobeerd heb
Python code:
code:
1
2
3
4
5
import numpy as np
a = [[1.35e+06, 4.50e+07, 6.00e+07],[4.50e+07, 6.00e+09, 2.00e+07], [6.00e+07, 2.00e+07,4.00e+09]]
print (np.array(a))
print(np.linalg.inv(np.array(a)))
print(np.dot(np.array(a),np.linalg.inv(np.array(a))))

output python:
code:
1
2
3
4
5
6
7
8
9
[[1.35e+06 4.50e+07 6.00e+07]
 [4.50e+07 6.00e+09 2.00e+07]
 [6.00e+07 2.00e+07 4.00e+09]]
[[ 8.54851004e-06 -6.36874613e-08 -1.27909213e-07]
 [-6.36874613e-08  6.41148939e-10  9.52106174e-10]
 [-1.27909213e-07  9.52106174e-10  2.16387767e-09]]
[[ 1.00000000e+00 -9.37204898e-18 -3.52524525e-18]
 [-5.13553840e-14  1.00000000e+00 -7.96834916e-16]
 [-3.92614001e-14  9.68417004e-17  1.00000000e+00]]


Excel input (voor de inverse):
code:
1
2
3
2.46914E-06     -7.40741E-09    -3.33333E-08
-7.40741E-09    2.22222E-10     0
-3.33333E-08    0               7.5E-10


In beide programmas geven A * A^-1 de eenheidsmatrix

Alle reacties


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 12:16

RayNbow

Kirika <3

htca schreef op vrijdag 17 april 2020 @ 17:06:
Mijn vraag
Ik krijg in Python een verkeerde inverse matrix.
Waarom is de matrix die je in Python krijgt verkeerd dan?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • htca
  • Registratie: November 2001
  • Laatst online: 03-10 08:51
RayNbow schreef op vrijdag 17 april 2020 @ 17:39:
[...]

Waarom is de matrix die je in Python krijgt verkeerd dan?
De inversie matrix van excel klopt met het voorbeeld uit mathcad.

Acties:
  • +1 Henk 'm!

  • Steef123
  • Registratie: Februari 2006
  • Laatst online: 04-10 19:16

Steef123

Luchtfotograafje

Ik vermoed dat je in twee cellen van de matrix a in python typefouten hebt gemaakt. Als je de inverse matrix die je uit excel krijgt neemt, en daar in Python de inverse van berekent, krijg je de volgende matrix:

code:
1
2
3
[[1.34998772e+06 4.49996513e+07 5.99993940e+07]
 [4.49996513e+07 5.99999490e+09 1.99998250e+09]
 [5.99993940e+07 1.99998250e+09 3.99997040e+09]]


Deze komt bijna overeen met de matrix a die je hebt ingetypt in TS, maar niet helemaal: Tweede rij, derde kolom is dus 2*10^9 (in plaats van ^7, zoals in a), en derde rij, tweede kolom *10^9 in plaats van 10^7 (in a).

[ Voor 4% gewijzigd door Steef123 op 17-04-2020 18:44 ]


Acties:
  • 0 Henk 'm!

  • htca
  • Registratie: November 2001
  • Laatst online: 03-10 08:51
Steef123 schreef op vrijdag 17 april 2020 @ 18:42:
Ik vermoed dat je in twee cellen van de matrix a in python typefouten hebt gemaakt. Als je de inverse matrix die je uit excel krijgt neemt, en daar in Python de inverse van berekent, krijg je de volgende matrix:

code:
1
2
3
[[1.34998772e+06 4.49996513e+07 5.99993940e+07]
 [4.49996513e+07 5.99999490e+09 1.99998250e+09]
 [5.99993940e+07 1.99998250e+09 3.99997040e+09]]


Deze komt bijna overeen met de matrix a die je hebt ingetypt in TS, maar niet helemaal: Tweede rij, derde kolom is dus 2*10^9 (in plaats van ^7, zoals in a), en derde rij, tweede kolom *10^9 in plaats van 10^7 (in a).
De code die ik boven gebruik, komt rechtstreeks uit de Python console. Ik heb zelf het idee dat het met precisie te maken heeft. Probeer de matrix die je inverteert naar de oorspronkelijke maar nogmaals eens te investeren in Python.

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 12:16

RayNbow

Kirika <3

htca schreef op vrijdag 17 april 2020 @ 19:22:
Probeer de matrix die je inverteert naar de oorspronkelijke maar nogmaals eens te investeren in Python.
>>> np.array(a)
array([[1.35e+06, 4.50e+07, 6.00e+07],
       [4.50e+07, 6.00e+09, 2.00e+07],
       [6.00e+07, 2.00e+07, 4.00e+09]])
>>>
>>> np.linalg.inv(np.linalg.inv(np.array(a)))
array([[1.35e+06, 4.50e+07, 6.00e+07],
       [4.50e+07, 6.00e+09, 2.00e+07],
       [6.00e+07, 2.00e+07, 4.00e+09]])
>>>

En dan...?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • htca
  • Registratie: November 2001
  • Laatst online: 03-10 08:51
RayNbow schreef op vrijdag 17 april 2020 @ 19:36:
[...]

>>> np.array(a)
array([[1.35e+06, 4.50e+07, 6.00e+07],
       [4.50e+07, 6.00e+09, 2.00e+07],
       [6.00e+07, 2.00e+07, 4.00e+09]])
>>>
>>> np.linalg.inv(np.linalg.inv(np.array(a)))
array([[1.35e+06, 4.50e+07, 6.00e+07],
       [4.50e+07, 6.00e+09, 2.00e+07],
       [6.00e+07, 2.00e+07, 4.00e+09]])
>>>

En dan...?
Dat doet het bij mij ook.... maar ik heb de inverse nodig en die klopt niet nl.linalg,inv in python verschilt met mminverse in excel en de inverse functie in Mathcad (die laatste twee zijn gelijk)

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 12:16

RayNbow

Kirika <3

htca schreef op vrijdag 17 april 2020 @ 20:06:
maar ik heb de inverse nodig en die klopt niet
Voor de gegeven matrix klopt de inverse gewoon. Als de inverse "niet klopt", dan klopt je oorspronkelijke matrix niet. Dit is ook wat Steef123 in "python inverse matrix" schreef.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • htca
  • Registratie: November 2001
  • Laatst online: 03-10 08:51
Schaam me heel erg diep..... #tikfoutje in de code.... Excuus, sorry, maximus mea culpa... * dacht even gek te worden....
Pagina: 1