¿Cómo defino los funcionales en Mathematica?

Sep 28 2020

Cuando escribo W[f_] := Integrate[f[x], {x, 0, π}]me permite concluir con razón que W[Sin] = 2, W[Cos] = 0, W[Log] = π (-1 + Log[π])etc, pero no estoy en condiciones de definir W[Sin + Cos]o W[Sin[Sin]]etc Por favor, ayuda.

Respuestas

4 RonaldMonson Sep 29 2020 at 11:18

El problema es que un funcional opera en funciones por lo que en

W[f_] := Integrate[f[x], {x, 0, Pi}]

Wnecesita ser alimentado con una función. Las expresiones Sin+Coso Sin[Sin]fallan porque no son funciones WL. Trabajando en el espacio funcional tenemos los operadores de composición @*y \*estos no son suficientes cuando se quiere usar las funciones integradas de WL que están orientadas a trabajar con expresiones generales. Pero una forma de cooptar las funciones de WL para operar en el espacio funcional es a través de la FunctionalConstructsiguiente manera:

FunctionalConstruct[op_, fs__] := Function[x, op @@ Through[{fs}[x]]];
FunctionalConstruct[op_] := op;

f = FunctionalConstruct[Plus, Sin, Cos];
ga = FunctionalConstruct[Sin, Sin];
gb = FunctionalConstruct[Sin@*Sin];

De alguna manera, para estas integrales definidas, sería más natural simplemente escribir ahora

Integrate[f, {0, Pi}]
Integrate[ga, {0, Pi}]
Integrate[gb, {0, Pi}]

en el espacio funcional, pero debido a que en cálculo a menudo es tan útil usar variables ficticias (integrales indefinidas, convertir expresiones en funciones deseadas wrt x, yetc.) podemos Waplicar automáticamente la función a una variable ficticia antes de realizar la integral:

W[f]
W[ga]
W[gb]

2

Pi StruveH [0, 1]

Pi StruveH [0, 1]

12 ΑλέξανδροςΖεγγ Sep 29 2020 at 03:27

Asegúrese de pasar el encabezado / función correcta a W. Por ejemplo, Sin[Sin] @ xda Sin[Sin][x], obviamente irreconocible por MMA, sin mencionar la evaluación posterior de la integral. Entonces, una solución opcional pueden ser estas

W[Sin[#] + Cos[#] &]
W[Sin @* Sin]

donde @*es Composición.

8 evanb Sep 29 2020 at 03:47

Sines algo que tiene un argumento --- Sin[7]es un número.

Al contrario, ¡ Sin+Cosno es algo que requiera un argumento! Su funcional está tratando de evaluar, por ejemplo. (Sin+Cos)[7]que, sin ayuda, no comprende.

Por lo tanto, debe convertir el argumento de W en algo que tenga un argumento adecuado.

Tu puedes decir

g[x]:= Sin[x]+Cos[x]
W[g]

por ejemplo. O puede hacerlo de forma anónima usando funciones puras (#),

W[Sin[#]+Cos[#]&]
4 CarlWoll Sep 29 2020 at 04:21

Porque Sin + Cospodrías definir SubValuespara CirclePlus:

CirclePlus[f_, g_][x] := f[x] + g[x]

Entonces:

W[Sin ⊕ Cos]

2