Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

using Interpolation to solve ODEs

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83165] using Interpolation to solve ODEs
  • From: "marchriver at gmail.com" <weibinli at gmail.com>
  • Date: Tue, 13 Nov 2007 03:44:39 -0500 (EST)

Dear friends

I have a coupled ODEs,
In[1]:= e1 = x1[t]* (-27 + 4 x1[t]^2) - 4 (1 + x1[t]^2)* y1'[t];
In[2]:= e2 = y1[t] *(-27+ 4 (x1[t]^2 + y1[t]^2)) + 4 (1 + x1[t]^2 +
y1[t]^2) *x1'[t];
Given the initial values of x1[0] and y1[0],we can use NDSolve command
to solve them
In[3]:= s=NDSolve[{e1==0,e2==0,x1[0]==1,y1[0]==0},{x1,y1},{t,0,20}];

Now I want to solve them using another way( Because they are the
simplest cases. The actually form I have to deal with can not be
obtained obviously).

At first I generate the data for the fist part of right hand side(RHS)
of e1 as
In[4]:= t1 = Flatten[Table[{{x1[t], y1[t]}, x1[t]* (-27 + 4 x1[t]^2)},
{x1[t], 0.2, 2, 0.01}, {y1[t], -2, 2, 0.01}], 1];
then I use Interpation to get a function of x1[t] and y1[t];
In[5]:= it1 = Interpolation[t1];

For the second part of RHS of e1, I only generate the data of
coefficient of y1'[t] as
In[6]:= t2 = Flatten[Table[{{x1[t], y1[t]}, -4 (1 + x1[t]^2)}, {x1[t],
0.2, 2, 0.01}, {y1[t], -2, 2, 0.01}], 1];
In[7]:= it2 = Interpolation[t2];

The same procedure can be done for e2.

In[8]:= t3 = Flatten[Table[{{x1[t], y1[t]},  y1[t] (-g + 4 \[Pi] + 4 \
[Pi] (x1[t]^2 + y1[t]^2))}, {x1[t], 0.2,2, 0.01}, {y1[t], -2, 2,
0.01}], 1];
In[9]:= it3 = Interpolation[t3];
In[10]:= t4 = Flatten[Table[{{x1[t], y1[t]}, 4 \[Pi] (1 + x1[t]^2 +
y1[t]^2)}, {x1[t],  0.2, 2, 0.01}, {y1[t], -2, 2, 0.01}], 1];
In[11]:= it4 = Interpolation[t3];

And I solve them use NDSolve

In[12]:= inters = NDSolve[{it1[x1[t], y1[t]] +it2[x1[t], y1[t]]*y1'[t]
== 0,  it3[x1[t], y1[t]] + it4[x1[t], y1[t]]*x1'[t]== 0], x1[0] == 1,
y1[0] == 0}, {x1, y1}, {t, 0, 10}];

But the two results ("s" and "inters") are different. Actually,
"inters" is wrong!

Any one can help figuring out this problem? Or tell me if mathematica
can solve  ODE problems using data-interpolating?

Thanks a lot

Teddy

weibinli at gmail.com



  • Prev by Date: Re: Dividers formatting in Grid
  • Next by Date: Re: Re: Re: Can't abort a loop with Print inside (V6)
  • Previous by thread: User interface size and default stylesheet
  • Next by thread: Partial Differentiation of Implicit Functions