実現したいこと
df.csvは以下のようなファイルです。
df 2.25 4
「該当のソースコード」の関数equation=0を解きたいです。「試したこと」にある通り、単一の数値のときはできました。複数のdfの値をファイルから読み込んで、equation=0の解を出力したいです。
欲しい出力は以下の通りです。(エクセルのソルバーで求めました)
2.3281721345666324 2.940179169312597
どなたか「該当のソースコード」を直してください。
発生している問題・エラーメッセージ
ValueError: object too deep for desired array Traceback (most recent call last): File "〇〇〇\testCV585-2.py", line 15, in <module> solution = fsolve(equation, initial_guess) File "〇〇〇\site-packages\scipy\optimize\_minpack_py.py", line 171, in fsolve res = _root_hybr(_wrapped_func, x0, args, jac=fprime, **options) File "〇〇〇\site-packages\scipy\optimize\_minpack_py.py", line 250, in _root_hybr retval = _minpack._hybrd(func, x0, args, 1, xtol, maxfev, ml, mu, epsfcn, factor, diag) _minpack.error: Result from function call is not a proper array of floats.
該当のソースコード
python
1import pandas as pd 2from scipy.optimize import fsolve 3 4df = pd.read_csv('df.csv') 5print(df) 6# df 7#0 2.25 8#1 4.00 9 10def equation(M): 11 return df - 1/M *(1/1.2*(1+0.2*M**2))**3 12 13initial_guess = 5 14 15solution = fsolve(equation, initial_guess) 16print(str(solution))
試したこと
下記のコードは回るので、dfが単一の値のときは合っていると思います。
python
1from scipy.optimize import fsolve 2 3df= 2.25 4 5def equation(M): 6 return df - 1/M *(1/1.2*(1+0.2*M**2))**3 7 8initial_guess = 5 9 10solution = fsolve(equation, initial_guess) 11print(str(solution[0]))#2.3281721345666324
回答1件
あなたの回答
tips
プレビュー
2026/01/23 02:27