J'ai vu plusieurs réponses pour des sujets assez similaires à l'utilisation de? NumericQ expliqué et ne comprends toujours pas ce qui ne va pas avec ma mise en œuvre et mon exemple pourrait-il être évalué comme je veux il. Je solution de l'équation différentielle sous forme de ParametricNDSolve (je crois que la forme exacte de l'équation est hors de propos):Mathematica: FindFit pour NIntegrate de 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}]
Après que je suis en train de construire une fonction pour FindFit ou d'une procédure similaire, Nintegrating sur la fonction n [ a, b, c, g, f, y, t] j'ai ci-dessus avec un certain multiplicateur (I ai choisi Log [z] comme multiplicateur pour la simplicité)
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]}]
J'ont NIntegrate sur ma fonction n [ params, t] dérivé de ParametricNDSolve avec multiplicateur introduisant la nouvelle variable (z) qui est également présente dans les limites de l'intégration (sous la même forme que i n multiplicateur pour la simplicité de l'exemple)
Je suis capable d'évaluer les valeurs de ma fonction Func en tout point (z) avec des valeurs données de paramètres (a, b, c, g, f): Func (0,1 2,3,4,5) pourrait être évalué. Mais pour certaines raisons, je ne peux pas utiliser FindFit comme ça:
FindFit[data, Func[z, a, b, c, g, f], {a, b, c, g, f}, z]
L'erreur est: NIntegrate :: nlim: y = Log [z] n'est pas une limite valable d'intégration.
J'ai essayé beaucoup de combinaisons différentes d'utilisation de? NumericQ et tout semble ne mener nulle part. Toute aide serait appréciée! Merci d'avance et désolé pour l'anglais pur dans l'explication du problème.
Merci! Mais je peux évaluer la fonction Func même sans introduire les variables? NumericQ et ces variables ne m'aident pas non plus à obtenir FindFit - l'erreur NIntegrate reste. Vous avez également raison sur les coûts de calcul d'une telle méthode, mais j'aurai besoin que cela soit fait plusieurs fois pour mes données expérimentales et je ne veux pas écrire moi-même un algorithme Fitting - je crois que ce sera encore plus lent. – user3575511
assurez-vous d'effacer les anciennes définitions. Cette erreur est due à 'NIntegrate' en cours d'évaluation avec' z' symbolique. – agentp