Ogólnie Mathematica zawsze zakłada najbardziej ogólny przypadek, to znaczy, jeśli ustawić funkcjęPraca z rzeczywistych funkcji w Mathematica
a[s_]:={a1[s],a2[s],a3[s]}
i chcesz obliczyć swoją normę Norm[a[s]]
, na przykład, będzie to powrót:
Sqrt[Abs[a1[s]]^2 + Abs[a2[s]]^2 + Abs[a3[s]]^2]
Jednakże, jeśli wiem, że wszystko ai[s]
są prawdziwe, mogę wywołać:
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[a[s]]]]
, który zwróci:
Sqrt[a1[s]^2 + a2[s]^2 + a3[s]^2]
Tego właśnie oczekuję.
Problem dzieje się podczas próby, na przykład, a następnie czerpać a[s]
(zauważ D
):
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[D[a[s],s]]]]
Powraca znowu wynik obejmujący wartości absolutnych - pochodzące z założenia, że liczby mogą być zmyślone.
Jaki jest sposób na przezwyciężenie tego problemu? Chcę zdefiniować funkcję o wartościach rzeczywistych i pracować z nią jako taką. Na przykład chcę, aby jej pochodne były prawdziwe.
Odpowiedź wybrałem nie jest najbardziej ogólnym jeden, ale najpierw rozwiązać mój problem. Po drugie, nauczyłem mnie moralnego "powinieneś zająć się swoim kodem". Dzięki za wszystkie inne miłe i pomocne odpowiedzi! – Dror