• Register

np.linalg.solve error

+22 votes
1,825 views

Po zagonu kode:

Rešitev = np.linalg.solve(A, b)
Rešitev

se mi pojavi napaka:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-9fabcbcf3d11> in <module>()
      1 # Rešimo sistem
----> 2 Rešitev = np.linalg.solve(A, b)
      3 Rešitev

C:\Users\Tadej\Anaconda3\lib\site-packages\numpy\linalg\linalg.py in solve(a, b)
    382     signature = 'DD->D' if isComplexType(t) else 'dd->d'
    383     extobj = get_linalg_error_extobj(_raise_linalgerror_singular)
--> 384     r = gufunc(a, b, signature=signature, extobj=extobj)
    385 
    386     return wrap(r.astype(result_t, copy=False))

TypeError: No loop matching the specified signature and casting
was found for ufunc solve1

asked Mar 23, 2016 by Tadej (290 points)
Ali lahko dodaš še matriko A in vektor b
Tadej, dobro bi bilo, da pri vprašanju napišete minimalno kodo s katero se lahko reproducira napako. Spodaj ste izbrali pravilni odgovor, vendar se drugi iz tega ne morejo veliko naučiti in je razen vam ne pomaga. Blaž spodaj npr. ugiba, da imate A in B definirane v sympy.

2 Answers

+14 votes
 
Best answer
AA = A.astype(float)
bb = b.astype(float)
rešitev = np.linalg.solve(AA, bb)
rešitev
answered Mar 24, 2016 by URBAN_B. (1,050 points)
selected Mar 24, 2016 by Tadej
+3 votes
Napaka se je pojavila, ker sta matrika A in vektor b verjetno definirana kot sympy matrix. Z numpy-em jo pretvori v numpy array in bi moralo delati.

astype v prvem odgovoru nima vpliva pri tem errorju. V numpy linalg funkcije lahko podas razlicne tipe arrayev
answered Mar 24, 2016 by Blaž Velkavrh (29,970 points)
...