Question: How to obtain a numerical solution of this ode?

Hi, 

Could anyone help me to numerically solve this ode?
I've tried almost all the methods Maple proposes, trying to adjust stepsizes, tolerances and so on;, always without success.

I give also the exact solution of this ode in order to compare the numerical solution to.

Thanks in advance
 

restart

interface(version)

`Standard Worksheet Interface, Maple 2015.2, Mac OS X, December 21 2015 Build ID 1097895`

(1)

with(plots):

# Source term

F := t*(-600*t/(100*t^2+1)^2+80000*t^3/(100*t^2+1)^3)/(100*t^2+1)-(1/(100*t^2+1)-200*t^2/(100*t^2+1)^2)/(1+(1/(100*t^2+1)-200*t^2/(100*t^2+1)^2)^2);

plot(F, t=0..0.5);

t*(-600*t/(100*t^2+1)^2+80000*t^3/(100*t^2+1)^3)/(100*t^2+1)-(1/(100*t^2+1)-200*t^2/(100*t^2+1)^2)/(1+(1/(100*t^2+1)-200*t^2/(100*t^2+1)^2)^2)

 

 

# Ode

ode := X(t)*diff(X(t), t$2)-diff(X(t),t)/(1+diff(X(t),t)^2) - 'F'

X(t)*(diff(diff(X(t), t), t))-(diff(X(t), t))/(1+(diff(X(t), t))^2)-F

(2)

# Initial conditions

ics := X(0) = 0, D(X)(0) = 1

X(0) = 0, (D(X))(0) = 1

(3)

# I used alot methods with allways either failure or either a HFloat(undefined)

printf("rkf45\n");
sol := dsolve({ode, ics}, numeric):
sol(1e-8);

printf("\n\nrosenbrock\n");
sol := dsolve({ode, ics}, numeric, method=rosenbrock):
sol(1e-8);

printf("\n\ngear\n");
sol := dsolve({ode, ics}, numeric, method=gear):
sol(1e-8);

printf("\n\ngear\n");
sol := dsolve({ode, ics}, numeric, method=classical[heunform]):
sol(1e-8);

rkf45

Error, (in sol) cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up

 



rosenbrock

Error, (in dsolve/numeric/SC/firststep) unable to evaluate the partial derivatives of f(x,y) for stiff solution

 

Error, (in sol) cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up

 



gear

 

[t = 0.1e-7, X(t) = HFloat(HFloat(undefined)), diff(X(t), t) = HFloat(HFloat(undefined))]

 



gear

 

[t = 0.1e-7, X(t) = HFloat(HFloat(undefined)), diff(X(t), t) = HFloat(HFloat(undefined))]

(4)

# The solution must be this one

U := t -> t/((t*10)^2+1)

proc (t) options operator, arrow; t/(100*t^2+1) end proc

(5)

# Check ode and ics

eval(ode, X(t)=U(t));
U(0);
D(U)(0);

0

 

0

 

1

(6)

# Plots when a solution is obtained

display(
  plot(U(t), t=0..1, color=blue),
  odeplot(sol, [t, x(t)], t=0..1, color=red, linestyle=3)
);


 

Download Unsuccessful_dsolve.mw

 

Please Wait...