using NeuralNetDiffEq using Base.Test using Plots; plotly() using DiffEqBase, ParameterizedFunctions using DiffEqProblemLibrary, DiffEqDevTools using Knet linear = (t,u) -> (1.01*u) (f::typeof(linear))(::Type{Val{:analytic}},t,u0) = u0*exp(1.01*t) prob = ODEProblem(linear,1/2,(0.0,1.0)) sol = solve(prob,nnode(10),dt=1/10,iterations=10) #dts = 1./2.^(8:-1:2) #sim_linear = test_convergence(dts,prob,nnode(10),iterations=5000) plot(sol,plot_analytic=true) sol(0.232) f = (t,u) -> (t^3 + 2*t + (t^2)*((1+3*(t^2))/(1+t+(t^3))) - u*(t + ((1+3*(t^2))/(1+t+t^3)))) (::typeof(f))(::Type{Val{:analytic}},t,u0) = u0*exp(-(t^2)/2)/(1+t+t^3) + t^2 prob2 = ODEProblem(f,1.0,(0.0,1.0)) sol2 = solve(prob2,nnode(10),dt=0.1,iterations=200) plot(sol2,plot_analytic=true) f2 = (t,u) -> (-u/5 + exp(-t/5).*cos(t)) (::typeof(f2))(::Type{Val{:analytic}},t,u0) = exp(-t/5)*(u0 + sin(t)) prob3 = ODEProblem(f2,Float32(0.0),(Float32(0.0),Float32(2.0))) sol3 = solve(prob3,nnode(10),dt=0.2,iterations=1000) plot(sol3,plot_analytic=true) sol3([0.721]) f4 = (t,u) -> (u - t) (::typeof(f4))(::Type{Val{:analytic}},t,u0) = (t+1) - (1/3)*(e^t) prob4 = ODEProblem(f4,Float32(2/3),(Float32(0.0),Float32(2.0))) sol4 = solve(prob4,nnode(10),dt=0.2,iterations=1000) plot(sol4, plot_analytic=true) sol4(1) f5 = (t,u) -> ((1/t)*(2-u)) (::typeof(f5))(::Type{Val{:analytic}},t,u0) = 2/t + 2 prob5 = ODEProblem(f5,Float32(4),(Float32(1.0),Float32(4.0))) sol5 = solve(prob5,nnode(10),dt=0.3,iterations=1000) plot(sol5, plot_analytic=true) f6 = (t,u) -> 2*sin(3t) + u/2 (::typeof(f6))(::Type{Val{:analytic}},t,u0) = (((-4/37)*e^(-t/2)*(6*cos(3t)+sin(3t)))/(e^(-t/2))) prob6 = ODEProblem(f6,Float32(24/37),(Float32(pi/3),Float32(2*pi/3))) sol6 = solve(prob6,nnode(10),dt=Float32(pi)/30,iterations=1000) plot(sol6, plot_analytic = true)