En général, Mathematica suppose toujours le cas le plus général, qui est, si je mets une fonctionTravailler avec de vraies fonctions Mathematica
a[s_]:={a1[s],a2[s],a3[s]}
et que vous voulez calculer la norme Norm[a[s]]
, par exemple, il sera de retour:
Sqrt[Abs[a1[s]]^2 + Abs[a2[s]]^2 + Abs[a3[s]]^2]
Cependant, si je sais que tous les ai[s]
sont réels, je peux invoquer:
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[a[s]]]]
qui reviendra:
Sqrt[a1[s]^2 + a2[s]^2 + a3[s]^2]
Ce qui est ce que j'attends.
problème se produit lorsque vous essayez, par exemple, dérivez a[s]
puis (notez le D
):
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[D[a[s],s]]]]
retour à nouveau un résultat impliquant des valeurs absolues - viennent de l'hypothèse que les chiffres peuvent être imaginaires.
Quelle est la manière de surmonter ce problème? Je veux définir une fonction à valeur réelle et travailler avec elle en tant que telle. C'est, par exemple, je veux que ses dérivés soient réels.
La réponse que j'ai choisi est pas le plus général, mais d'abord il a résolu mon problème. Deuxièmement, il m'a appris la morale "vous devriez prendre soin de votre code". Merci pour toutes les autres réponses agréables et utiles! – Dror