r[t_] := {t, 0.1 t^2, 0.1 t^3}
T[t_] := Normalize[r'[t]]
n[t_] := Normalize[T'[t]]
T[t]
({1/Sqrt[1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4], (0.2 t)/Sqrt[
1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4], (0.3 t^2)/Sqrt[
1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4]})
n[t]
({-((0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t])/(2 (1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(
3/2) [Sqrt](1/
4 Abs[(0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t])/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2 +
Abs[0.2/Sqrt[1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.1 t (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 +
0.04 Abs[t]^2 + 0.09 Abs[t]^4)^(3/2)]^2 +
Abs[(0.6 t)/Sqrt[1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.15 t^2 (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 +
0.04 Abs[t]^2 + 0.09 Abs[t]^4)^(3/2)]^2))), (0.2/Sqrt[
1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.1 t (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(
3/2))/([Sqrt](1/
4 Abs[(0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t])/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2 +
Abs[0.2/Sqrt[1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.1 t (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2 +
Abs[(0.6 t)/Sqrt[1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.15 t^2 (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2)), ((0.6 t)/Sqrt[
1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.15 t^2 (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(
3/2))/([Sqrt](1/
4 Abs[(0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t])/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2 +
Abs[0.2/Sqrt[1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.1 t (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2 +
Abs[(0.6 t)/Sqrt[1 + 0.04 Abs[t]^2 + 0.09 Abs[t]^4] - (
0.15 t^2 (0.08 Abs[t] Derivative[1][Abs][t] +
0.36 Abs[t]^3 Derivative[1][Abs][t]))/(1 + 0.04 Abs[t]^2 +
0.09 Abs[t]^4)^(3/2)]^2))})
That is where the problem is stemming from.
Have a look at Normalize. Even in the most common normalization, the Abs is used. As already stated, if nothing else is specified Mathematica works in the Complexes. So derivation of Abs is nowhere defined.
The derivation of T introduces the Abs again after the first Normalize did not introduce it in Mathematica V12.0.0.
The problem is not solved if the second argument is used with RealAbs.
![error message for n[t_] := Normalize[T'[t], RealAbs]](../../images/8c8340e92cea92c99501366b1c81cb60.webp)
So the path of the solution is
n[t_] := D[T[t], t]/Sqrt[D[T[t], t].D[T[t], t]]
n[t]
({-((0.08 t +
0.36 t RealAbs[t]^2)/(2 (1 + 0.04 RealAbs[t]^2 +
0.09 RealAbs[t]^4)^(
3/2) [Sqrt]((0.08 t + 0.36 t RealAbs[t]^2)^2/(
4 (1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^3) + (-((
0.1 t (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + 0.2/
Sqrt[1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4])^2 + (-((
0.15 t^2 (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + (0.6 t)/
Sqrt[1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4])^2))), (-((
0.1 t (0.08 t + 0.36 t RealAbs[t]^2))/(1 + 0.04 RealAbs[t]^2 +
0.09 RealAbs[t]^4)^(3/2)) + 0.2/Sqrt[
1 + 0.04 RealAbs[t]^2 +
0.09 RealAbs[t]^4])/([Sqrt]((0.08 t + 0.36 t RealAbs[t]^2)^2/(
4 (1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^3) + (-((
0.1 t (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + 0.2/Sqrt[
1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4])^2 + (-((
0.15 t^2 (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + (0.6 t)/
Sqrt[1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4])^2)), (-((
0.15 t^2 (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + (0.6 t)/Sqrt[
1 + 0.04 RealAbs[t]^2 +
0.09 RealAbs[t]^4])/([Sqrt]((0.08 t + 0.36 t RealAbs[t]^2)^2/(
4 (1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^3) + (-((
0.1 t (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + 0.2/Sqrt[
1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4])^2 + (-((
0.15 t^2 (0.08 t + 0.36 t RealAbs[t]^2))/(1 +
0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4)^(3/2)) + (0.6 t)/
Sqrt[1 + 0.04 RealAbs[t]^2 + 0.09 RealAbs[t]^4])^2))})
The rest is as usual and the best choice is FrenetSerretSystem.
FrenetSerretSystem[r[t], t]
{{Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4]/(1. + 0.04 t^2 + 0.09 t^4)^(3/2),
33.3333/(
11.1111 + 100. t^2 + 1. t^4)}, {{1./Sqrt[
1. + 0.04 t^2 + 0.09 t^4], (0. + 0.2 t)/Sqrt[
1. + 0.04 t^2 + 0.09 t^4], (0. + 0.3 t^2)/Sqrt[
1. + 0.04 t^2 +
0.09 t^4]}, {-((0.04 t)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4])) - (0.18 t^3)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]),
0.2/(Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]) - (0.018 t^4)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]), (0.6 t)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]) + (0.012 t^3)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4])}, {(0. + 0.06 t^2)/Sqrt[
0.04 + 0.36 t^2 + 0.0036 t^4], -((0.6 t)/Sqrt[
0.04 + 0.36 t^2 + 0.0036 t^4]), 0.2/Sqrt[
0.04 + 0.36 t^2 + 0.0036 t^4]}}}
The answer to Your question is, that Normalize causes the problems because it checks the denominator for realness and positiveness after the squaring and summation is done. It replaces therefore each component square of the derivation of the normal with Abs. Abs is defined on the Complexes but can nowhere derivated on them so the derivation of the vector path has RealAbs and the derivation of the normal has Abs. That the way it is implemented in Mathematica.
That is not an error. There are two workarounds.
(1) give up the stability by using
r[t_] := {t, 0.1 t^2, 0.1 t^3}
T[t_] := Normalize[r'[t]]
n[t_] := D[T[t], t]/Sqrt[D[T[t], t].D[T[t], t]]
(2) by making use of FrenetSerretSystem[r[t], t]. See the details for FrenetSerretSystem on the Mathematica documentation page of FrenetSerretSystem. It is
curvature, torsion, tangent, normal, and binormal
In this question:
{"curvature"->{Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4]/(1. + 0.04 t^2 + 0.09 t^4)^(3/2)},
"torsion"->{33.3333/(
11.1111 + 100. t^2 + 1. t^4)},
{"tangent"->{1./Sqrt[
1. + 0.04 t^2 + 0.09 t^4], (0. + 0.2 t)/Sqrt[
1. + 0.04 t^2 + 0.09 t^4], (0. + 0.3 t^2)/Sqrt[
1. + 0.04 t^2 +
0.09 t^4]},"normal"-> {-((0.04 t)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4])) - (0.18 t^3)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]),
0.2/(Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]) - (0.018 t^4)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]), (0.6 t)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4]) + (0.012 t^3)/(
Sqrt[0.04 + 0.36 t^2 + 0.0036 t^4] Sqrt[
1. + 0.04 t^2 + 0.09 t^4])},"binormal"-> {(0. + 0.06 t^2)/Sqrt[
0.04 + 0.36 t^2 + 0.0036 t^4], -((0.6 t)/Sqrt[
0.04 + 0.36 t^2 + 0.0036 t^4]), 0.2/Sqrt[
0.04 + 0.36 t^2 + 0.0036 t^4]}}}
or as
basis = Last[FrenetSerretSystem[r[t], t]] // Simplify;
{tangent, normal, binormal} = Map[Arrow[{r[t], r[t] + #}] &, basis];
Manipulate[
Show[ParametricPlot3D[r[s], {s, 0, 2 Pi}, PlotStyle -> Thick],
Graphics3D[{Thick, Blue, tangent, Red, normal, Purple, binormal}],
PlotRange -> Full] // Evaluate, {t, 0, 2 Pi,
Appearance -> {"Open"}}]

This solves the question is the necessary and professional depth.
ResourceFunctions can make your life much easier https://resources.wolframcloud.com/FunctionRepository/search/?i=torsion andhttps://resources.wolframcloud.com/FunctionRepository/resources/CurveTorsion– flinty Sep 06 '20 at 22:140.1I recommend using1/10). Wouldn't it be simpler to copy this approach or this one? – Artes Sep 06 '20 at 22:34