numpyとscipyで変数を含んだ行列式を作り、その変数を求めるような計算をしたいのですがうまくいきません。
例えば、
[x, 3]
[4, -1]
のような行列Mの行列式det[M]が0に等しいとすると
det[M]=0
x*(-1)-3*4=0
x=-12
のようにxを求めることができます。
これを実施したいのですがやり方がわかりません。
ご教示いただけますと幸いです。
宜しくお願い致します。
試したコード
python
1#ライブラリをインポート 2import numpy as np 3import numpy.linalg as LA 4import scipy as sc 5from scipy import optimize 6 7#行列式det[M]を定義 8def M(x): 9 M = np.array([[x, 3],[4, -1]]) 10 return LA.det(M) 11 12#def[M]=0として解く 13print(optimize.fsolve(M, 0))
上記コードのエラーメッセージ
TypeError Traceback (most recent call last) <ipython-input-37-4d75ddba5d6c> in <module> 8 return LA.det(M) 9 ---> 10 print(optimize.fsolve(M, 0)) ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in fsolve(func, x0, args, fprime, full_output, col_deriv, xtol, maxfev, band, epsfcn, factor, diag) 145 'diag': diag} 146 --> 147 res = _root_hybr(func, x0, args, jac=fprime, **options) 148 if full_output: 149 x = res['x'] ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in _root_hybr(func, x0, args, jac, col_deriv, xtol, maxfev, band, eps, factor, diag, **unknown_options) 211 if not isinstance(args, tuple): 212 args = (args,) --> 213 shape, dtype = _check_func('fsolve', 'func', func, x0, args, n, (n,)) 214 if epsfcn is None: 215 epsfcn = finfo(dtype).eps ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in _check_func(checker, argname, thefunc, x0, args, numinputs, output_shape) 24 def _check_func(checker, argname, thefunc, x0, args, numinputs, 25 output_shape=None): ---> 26 res = atleast_1d(thefunc(*((x0[:numinputs],) + args))) 27 if (output_shape is not None) and (shape(res) != output_shape): 28 if (output_shape[0] != 1): <ipython-input-37-4d75ddba5d6c> in M(x) 6 def M(x): 7 M = np.array([[x, 3],[4, -1]]) ----> 8 return LA.det(M) 9 10 print(optimize.fsolve(M, 0)) ~\Anaconda3\lib\site-packages\numpy\linalg\linalg.py in det(a) 2091 t, result_t = _commonType(a) 2092 signature = 'D->D' if isComplexType(t) else 'd->d' -> 2093 r = _umath_linalg.det(a, signature=signature) 2094 r = r.astype(result_t, copy=False) 2095 return r TypeError: No loop matching the specified signature and casting was found for ufunc det
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 00:34
2020/07/08 05:08 編集
2020/07/08 08:22