我已經看到了很多類似主題的答案,用NumericQ解釋過,但仍然不能完全理解我的實現有什麼問題,並且我的示例可以以我想要的方式進行評估它。 我在ParametricNDSolve的形式微分方程的溶液(I相信方程的精確形式是無關緊要的):Mathematica:FindFit for NIntegrate of ParametricNDSolve
sol = ParametricNDSolve[{n'[t] == g/(1/(y - f*y) + b*t + g*t)^2 - a*n[t] - c*n[t]^2, n[0] == y*f}, {n}, {t, 0, 10}, {a, b, c, g, f, y}]
此後我試圖構建FindFit或類似的程序,Nintegrating函數超過函數N [ A,b,C,G,F,Y,t]的我有一些乘法器以上得到(我所選擇登錄[Z]作爲乘數爲簡單起見)
Func[z_, a_, b_, c_, g_, f_] :=
NIntegrate[
Log[z]*(n[a, b, c, g, f, y][t] /. sol), {t, 0, 10}, {y, 0, Log[z]}]
所以,我有NIntegrate在我的函數N [ params,t]從ParametricNDSolve派生,乘法器引入新的變量(z),它也存在於積分的極限中(與我的形式相同n乘法器,例如爲簡單起見)
我能夠在任意點(z)用給定值參數(a,b,c,g,f)評估函數Func的值:Func(0,1 ,2,3,4,5)可以被評估。 但因爲某些原因我不能使用FindFit這樣的:
FindFit[data, Func[z, a, b, c, g, f], {a, b, c, g, f}, z]
的錯誤是:NIntegrate :: nlim:Y =日誌[Z]是不融合的一個有效的限制。
我嘗試了很多不同的?NumericQ用法的組合,並且所有這些組合都似乎無處可用。任何幫助,將不勝感激! 提前致謝,並對問題解釋中的純英語表示歉意。
謝謝!但是我可以評估函數Func,即使不引入?NumericQ變量和這些變量也不能幫助我獲得FindFit - NIntegrate錯誤仍然存在。你對這種方法的計算開銷也是正確的,但是我只需要爲我的實驗數據完成幾次,我不想自己寫一些擬合算法 - 我相信它會變得更慢/錯誤。 – user3575511
務必清除舊的定義。這個錯誤是由於'NIntegrate'被符號'z'評估的。 – agentp