質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1223閲覧

numpyのvectorizeで2元連立方程式の解を求めたい

shorin

総合スコア9

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/30 13:42

前提・実現したいこと

 2元連立方程式の1つ目の式は固定で2つ目の式を変えて答えを求めたいです。

普通の各配列の要素を足すなどの関数は実行できたのですが、関数内で配列に格納するように
したらエラーになりました。解決できないので質問させていただきました。

よろしくお願いします。

1つ目の式の配列(数値は固定)
ax + by = c
a → aa1
b → bb1
c → cc1

2つ目の式の配列(数値は変動)
ax + by = c
a → aa2
b → bb2
c → cc2

発生している問題・エラーメッセージ

実行1: ValueError: expected square matrix 実行2: ValueError: setting an array element with a sequence

該当のソースコード

import numpy as np
import scipy.linalg as linalg

def mysolve(aa1, bb1, aa2, bb2, cc1, cc2):

solve_a = np.array([[aa1, bb1], [aa2, bb2]]) solve_b = np.array([cc1, cc2]) solve_lu = linalg.lu_factor(solve_a) return linalg.lu_solve(solve_lu, solve_b)

aa1_arr = np.array([2, 2, 2, 2])
bb1_arr = np.array([1, 1, 1, 1])
aa2_arr = np.array([4, 5, 6, 7])
bb2_arr = np.array([5, 6, 7, 8])
cc1_arr = np.array([3, 3, 3, 3])
cc2_arr = np.array([10, 11, 12, 13])

#実行1: ValueError: expected square matrix
mysolve(aa1_arr, bb1_arr, aa2_arr, bb2_arr, cc1_arr, cc2_arr)

#実行2: ValueError: setting an array element with a sequence
np.vectorize(mysolve)(aa1_arr, bb1_arr, aa2_arr, bb2_arr, cc1_arr, cc2_arr)

補足情報(FW/ツールのバージョンなど)

python 3.6.4
numpy 1.14.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

次元を指定してやってください。

puthon

1import numpy as np 2import scipy.linalg as linalg 3 4def mysolve(aa1, bb1, aa2, bb2, cc1, cc2): 5 solve_a = np.array([[aa1, bb1], [aa2, bb2]]) 6 solve_b = np.array([cc1, cc2]) 7 solve_lu = linalg.lu_factor(solve_a) 8 ans = linalg.lu_solve(solve_lu, solve_b) 9 return ans 10 11aa1_arr = np.array([2, 2, 2, 2]) 12bb1_arr = np.array([1, 1, 1, 1]) 13aa2_arr = np.array([4, 5, 6, 7]) 14bb2_arr = np.array([5, 6, 7, 8]) 15cc1_arr = np.array([3, 3, 3, 3]) 16cc2_arr = np.array([10, 11, 12, 13]) 17 18vf = np.vectorize(mysolve, signature='(),(),(),(),(),()->(2)') 19 20ans = vf(aa1_arr, bb1_arr, aa2_arr, bb2_arr, cc1_arr, cc2_arr) 21print(ans)

投稿2018/07/01 04:13

編集2018/07/01 04:14
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shorin

2018/07/01 07:20

ありがとうございます。実行できましたが理解していないので調べます。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問