# Numerically solving an ODE for a parameter

My equation is as follows:

sol =
ParametricNDSolve[{(f'[r]^2 - 1) f'[r] r == 6.2 (f')^2/1000, f == a},
{f}, {r, 1, 3}, {a}]


where the function f[r] needs to satisfies a constraint 6.2 (f')^2/1000 = 6 (f')^2/1000

Then I plot f[r]

Plot[Evaluate[{(f'[a])^2,6(f'[a])^2/6.2} /. sol], {a, 0, 2}]


I am getting the message

ParametricNDSolve::litarg: To avoid possible ambiguity, the arguments of the dependent variable in {r (NDSolvef$1$1^\[Prime])[r] (-1+(NDSolvef$1$1^[Prime])[r]^2)==0.0062 NDSolvef$1$1^2,2 r (NDSolvef$1$1^[Prime])[r]^2 (NDSolvef$1$2^\[Prime])[r]+r (-1+ (NDSolvef$1$1^[Prime])[r]^2) (NDSolvef$1$2^\[Prime])[r]==0.0124 NDSolvef$1$1 NDSolvef$1$2} should literally match the independent variables. >>

I do not know how to avoid the error message and solve the function f[r]

The error message arises because there are three possible values for f' that satisfy your DE:

Solve[(f'[r]^2 - 1) f'[r] r == 62/10 (f')^2/1000 /. r -> 1, f']
% // N

(*
{{Derivative[f] -> 0},
{Derivative[f] -> (31 - Sqrt)/10000},
{Derivative[f] -> (31 + Sqrt)/10000}}

{{Derivative[f][1.] -> 0.},
{Derivative[f][1.] -> -0.996905},
{Derivative[f][1.] -> 1.0031}}
*)


If you pick one, the equation is solved:

sol = With[{df1 = (31 + Sqrt)/10000},
ParametricNDSolve[{(f'[r]^2 - 1) f'[r] r == 62/10 (df1)^2/1000,
f == a}, {f[r], f'[r]}, {r, 1, 3}, {a}]
];


Another problem is how sol is used in Plot. You have to pass the parameter a to ParametricFunction to get an InterpolatingFunction; after that, then one can take the derivative and plug in r. The easiest way that occurred to me was to ask ParametricNDSolve to return f'[r] in addition to f[r] and use that. It's important not to use Evaluate here, because r cannot be replaced with a number until after Plot has replaced a with a number.

Plot[{(f'[r][a])^2 /. sol /. r -> 1,
6 (f'[r][a])^2/6.2 /. sol /. r -> 3},
{a, 0, 2}]


The last problem is that the DE is inconsistent with the constraint 6.2 (f')^2/1000 == 6 (f')^2/1000, but that I will leave with the OP. For example, for the initial value for f' used above, none of the solutions for f' satisfy the constraint:

df1 = (31 + Sqrt)/10000;
df3 = Chop@
N[f' /.
Solve[(f'[r]^2 - 1) f'[r] r == 62/10 (df1)^2/1000 /. r -> 3,
f']];
6.2 (df1)^2/1000 - 6 (df3)^2/1000
(*
{0.000251049, 0.00623853, 0.000226095}
*)
`