En general, Mathematica asume siempre el caso más general, es decir, si fijo una funcióntrabajar con funciones reales en Mathematica
a[s_]:={a1[s],a2[s],a3[s]}
y quiero calcular su norma Norm[a[s]]
, por ejemplo, devolverá:
Sqrt[Abs[a1[s]]^2 + Abs[a2[s]]^2 + Abs[a3[s]]^2]
Sin embargo, si sé que todos ai[s]
son reales, puedo invocar:
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[a[s]]]]
que devolverá:
Sqrt[a1[s]^2 + a2[s]^2 + a3[s]^2]
¿Qué es lo que espero.
problema ocurre cuando se trata de, por ejemplo, se derivan a[s]
y luego (tenga en cuenta la D
):
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[D[a[s],s]]]]
vuelve una consecuencia que implica valores absolutos - procedentes de la suposición de que los números pueden ser imaginario.
¿Cuál es la manera de superar este problema? Quiero definir una función de valor real y trabajar con ella como tal. Es decir, por ejemplo, quiero que sus derivados sean reales.
La respuesta he elegido no es el más general, pero primero se resolvió mi problema. En segundo lugar, me enseñó la moral "debes cuidar tu código". ¡Gracias por todas las otras respuestas agradables y útiles! – Dror