#!/usr/bin/perl -w # Example 1: Solve # f'' - g' = 0 # g'' + f*g' - f'*g = 0 # f(0)=0,f'(0)=1,f''(0)=-1,g(0)=1 # Solution: f = 1 - exp(-x) # g = exp(-x) use Math::ODE; my $o = new Math::ODE ( file => 'data', step => 0.1, initial => [0,1,-1,1], ODE => [ \&DE1, \&DE2 , \&DE3, \&DE4 ], t0 => 0, tf => 20 ); $o->evolve; system("gnuplot -persist gnuplot.3"); sub DE1 { my ($t,$y) = @_; $y->[1]; } sub DE2 { my ($t,$y) = @_; $y->[2]; } sub DE3 { my ($t,$y) = @_; $y->[1] * $y->[3] - $y->[0] * $y->[2]; } sub DE4 { my ($t,$y) = @_; $y->[2]; }