In generale, Mathematica assume sempre il caso più generale, cioè, se ho impostato una funzioneLavorare con funzioni reali in matematica
a[s_]:={a1[s],a2[s],a3[s]}
e voglio calcolare la sua norma Norm[a[s]]
, per esempio, verrà restituito:
Sqrt[Abs[a1[s]]^2 + Abs[a2[s]]^2 + Abs[a3[s]]^2]
Tuttavia, se so che tutto ai[s]
sono reali, posso richiamare:
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[a[s]]]]
che restituirà:
Sqrt[a1[s]^2 + a2[s]^2 + a3[s]^2]
Quale è quello che mi aspetto.
problema si verifica quando si tenta di, per esempio, derivano a[s]
e poi (nota la D
):
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[D[a[s],s]]]]
ritorni nuovamente conseguenza coinvolge valori assoluti - provengono dal presupposto che i numeri possono essere immaginari.
Qual è il modo per superare questo problema? Voglio definire una funzione a valori reali e lavorarci come tale. Ad esempio, voglio che i suoi derivati siano reali.
La risposta che ho scelto non è quello più generale, ma prima ha risolto il mio problema. In secondo luogo, mi ha insegnato la morale "dovresti prenderti cura del tuo codice". Grazie per tutte le altre risposte gentili e utili! – Dror