1 votos

encontrar el mínimo de una función definida por integración en Mathematica

Necesito encontrar el mínimo de una función $f(t) = \int_0^1\!g(t,x)\,dx$ . Lo que hice en mathematica es lo siguiente:

f[t_] = NIntegrate[g[t,x],{x,-1,1}]
FindMinimum[f[t],{t,t0}]

Sin embargo, mathematica se detiene en el primer intento, porque NIntegrate no funciona con el símbolo t. Aunque Plot[f[t],{t,0,1}] funciona correctamente, FindMinimum se detiene en el punto inicial.

¿Hay alguna forma de evitarlo? Gracias.

1voto

dagorym Puntos 2025

OP's pregunta equivalente en Stack Overflow ya fue respondida. Esto es la respuesta aceptada por Andrew Moylan .


Prueba esto:

In[58]:= g[t_, x_] := t^3 - t + x^2

In[59]:= f[t_?NumericQ] := NIntegrate[g[t, x], {x, -1, 1}]

In[60]:= FindMinimum[f[t], {t, 1}]

Out[60]= {-0.103134, {t -> 0.57735}}

In[61]:= Plot[f[t], {t, 0, 1}]

Dos cambios relevantes que hice en su código:

  1. Definir f con := en lugar de con = . Esto da efectivamente una definición para f "más tarde", cuando el usuario de f ha suministrado los valores de los argumentos. Véase SetDelayed .

  2. Definir f con t_?NumericQ en lugar de t_ . Esto dice, t puede ser cualquier cosa numérica (Pi, 7, 0, etc). Pero no cualquier cosa no numérica (t, x, "foo", etc).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X