Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Re: Re: function of a function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg62694] Re: [mg62667] Re: [mg62650] Re: function of a function
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Wed, 30 Nov 2005 22:09:19 -0500 (EST)
  • References: <200511301040.FAA07278@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Actually, first equation is also solvable, but you have to use a  
"functional method" (which indeed corresponds to "solving infinitely  
many differential euations"). Here is a rather simple approach; more  
sophisticated ones are possible.

We want to solve the system:


Clear[x, f, EQ];
EQ = {f'[x] == f[Cos[x]], f[0] == 1};


We are going to try to approximate the entire function f over the  
range [0,1]. This is actually a case when it can be done.We need a  
starting function that satisfies the initial condition f[0]=1. The  
functions Cos[x] itself will do. We now do the following:


Do[f[n] = f[n] /.
     First[NDSolve[{D[
       f[n][x], x] == f[n - 1][Cos[
           x]], f[n][0] == 1}, f[n], {x, 0, 1}]], {n, 1, 100}]

The solutions is

Plot[f[100][x], {x, 0, 1}]

By plotting

Plot[{f[100]'[x], , f[100][Cos[x]]}, {x, 0, 1}, PlotStyle -> {Red,  
Green}]

we see that the two curves coincide perfectly.

Obviously you could not expect NDSOlve to do this by itself!

Andrzej Kozlowski



On 30 Nov 2005, at 19:40, Andrzej Kozlowski wrote:

>
> On 30 Nov 2005, at 14:07, Narasimham wrote:
>
>> Jens-Peer Kuska wrote:
>>
>>> it can't work because f [0] ==1 given in your differential equation
>>> f ' [0]==f [1] and NDSolve[] can't find the value for
>>> f[1] until it has integrated the equation.
>>
>> ???
>>
>>> The nested dependence is equivalent to an infinite
>>> system of ordinary differential equations and it seems to be
>>> hard to do this by a finte computer.
>>
>> I cannot understand this. In the following two examples the first one
>> works, not the second.
>>
>> Clear[x,f,EQ];
>> EQ={f'[x] == f[Cos[x]],f[0]== 1};
>> NDSolve[EQ,f,{x,0,4}];
>> f[x_]=f[x]/.First[%];
>> Plot[f[x],{x,0,4}];
>>
>> Clear[x,f,EQ];
>> EQ={f'[x] == Cos[f[x]],f[0]== 1};
>> NDSolve[EQ,f,{x,0,4}];
>> f[x_]=f[x]/.First[%];
>> Plot[f[x],{x,0,4}];
>
>
> Surely, you mean the second one works, the first one does not!? Also,
> I think I agree with Jens. These cases are quite different and the
> problem he mentione does not arise in the second case. Ine the second
> case the derivative at a point x is defined only in terms of the
> value of the function at x. Thus values of the function, it's
> derivative, function etc, can be computed sequentially. In the first
> case, however, in order to compute the derivative at x you need to
> know the value of the function at Cos[x], which in general will not
> be known yet. This is, I think, what Jens meant and it seems to me
> clearly right.
>
>>
>> It appears (to me) the power of programming with functions in
>> Mathematica has not been used to the full.
>>
>>
>
> What do you mean? Can you suggest an approximation scheme for this
> sort of problem?
>
> Andrzej Kozlowski
>
>
>
>> Jens-Peer Kuska wrote:
>>> Hi,
>>>
>>> it can't work because f[0]==1 give in your
>>> differential equation
>>> f'[0]==f[1] and NDSolve[] can't find the value for
>>> f[1] until it
>>> has integrated the equation.
>>> The neted dependence is equvalent to a infinite
>>> system of
>>> ordinary differential equations and it seems to be
>>> hard to do
>>> this by a finte computer.
>>>
>>> Regards
>>>   Jens
>>>
>>> "Narasimham" <mathma18 at hotmail.com> schrieb im
>>> Newsbeitrag news:dmha20$932$1 at smc.vnet.net...
>>> | Tried to solve numerically:
>>> |
>>> |
>>> http://groups.google.com/group/sci.math/browse_frm/thread/
>>> 248f76d024c1ac57/0bba983777a07bc9#0bba983777a07bc9
>>> |
>>> | thus:
>>> |
>>> | EQ= { f'[x] == f[f[x]], f[0]== 1} ;
>>> NDSolve[EQ,f,{x,0,2}];
>>> |
>>> | But gives an error.  NDSolve::ndnum:
>>> Differential equation does not
>>> | evaluate to a number at x = 0.
>>> |
>>> | Also does not work even with other f[0] values.
>>> Any way to do that?
>>> |
>>
>


  • Prev by Date: Re: Re: function of a function
  • Next by Date: Re: Problem with RSolve
  • Previous by thread: Re: Re: function of a function
  • Next by thread: Re: Problem with RSolve