カーブフィッティングを試したときに、xの配列に対する(f1(x)、f2(x))の形式のベクトル関数をpythonがどのように評価するかという問題があります。scipyのcurve_fitのベクトル関数を正しく定義するには
import numpy as np
from scipy.optimize import curve_fit
def func(x,a,b,c):
return np.array([a*x**b+c,a*x**b+c+1])
ydata = np.array([[1,2],[3,4],[5,6],[7,8]],dtype=float)
xdata=np.array([1,2,3,4], dtype=float)
popt,pcov = curve_fit(func, xdata, ydata)
"はとValueErrorを:オペランドが(4,2)の形状(2,4)と一緒に放送することができませんでした" を与える が嵌合するデータを転置:
ydata=np.array([[1,2],[3,4],[5,6],[7,8]],dtype=float).transpose()
「はTypeError例外を与える:不適切な入力:N = 3はM = 2 "を超えてはいけません。なぜなら、パラメータよりも関数値が少なくなったからです。さて、なぜ私はそれに合っていないのですか。だから私は、関数の値を転置する必要があります。
def func(x,a,b,c):
return np.array([a*x**b+c,a*x**b+c+1]).transpose()
これが私に与え、「関数呼び出しからの検索結果をfloatの適切な配列ではありません。」
このような問題を解決するにはどうすればよいですか?数学的には、データがモデルに適合できるかどうかは、十分に決定されるべきです。
[関連質問(http://stackoverflow.com/questions/41090791/how-do-i-optimize-and-find-the-coefficients- for two-equations-simultane-in) – Stelios
また、私の答えに興味があるかもしれません:http://stackoverflow.com/questions/40829791/fitting-a-vector-function-with-curve-fit-in-scipy/40961491#40961491 – tBuLi