Message Boards Message Boards

0
|
3004 Views
|
6 Replies
|
2 Total Likes
View groups...
Share
Share this post:

Solving iterative differential equations?

Hello all ,
This is not really a post but a question. Sorry.

I spent my weekend trying to solve IDE and the simplest to my mind :
f'=f o f

I haven't got any idea what to begin with....
There are analytic solutions I'm pretty sure of that.
If someone in this group could give me just how to start...
Thanks a lot.
(This is Mathematica 13.1)
Please send me a mail in order not to disturb this group.
Have a great day,
Jean-Michel

6 Replies
Posted 1 year ago

Hi, you're welcome. :) I guess it's clear that I suggested a math site so that you might identify some algorithms, which you could bring back to this site, if you need help implementing them.

Side note: I thought "IDE" was a typo. IDE means two things to me in differential equations, integro-differential equation (but your DE has no integral) and implicit differential equation, namely $F(x,y,y')=0$ which is not the form given either. Maybe "f'=f o f" is not f'[x] == f[f[x]]? That is, I'm not sure what the "o" represents, especially in the last example "f'' = f' o". I interpreted the first DE as $f'=f \circ f$, where $\circ$ denotes composition. But perhaps it denotes something else, like convolution? But if so, "f'' = f' o" seems to be missing a right operand for "o". So maybe "o" is not an operation at all. If I was wrong in my interpretation of the DE, then maybe the recommendation to ask on a math site is wrong, too.

POSTED BY: Updating Name

Hello Updating Name and others, You should have noticed that it is evidently a typo! And please don't give me lessons on integro-differential equation, thank you. indeed o'' has no meaning I meant (reread the post) . o denotes composition of functions.VoilĂ . So I will try to solve this f'= f o f with Mathematica. Of course f=0 is a solution amongst many I guess.

Thank you for your patience. Jean-Michel

Hello all, I reply to myself but it's for Dan,

Daniel (Lichtbau) have you any idea how to do that with Mathematica? (You are of the best developer at Wolftram) If by chance you read this post can you send me a private e-mail telling me if it's doable. Thank you. Kind regards to all,

Jean-Michel

Hello Jean Michel,

@Michael: an elegant and most impressive approach using deep functionalities of Mathematica.

Here is a simple if not crude and basic approach, showing that there are, depending on the choice of a0, lots of solutions. For the sake of simplicity I restrict the order of the polynomial to 3

hh[x_] := Sum[a[i] x^i, {i, 0, 3}]
abl = D[hh[x], x]

Get the equations

cox = Collect[hh[hh[x]], x];
coL = CoefficientList[cox, x];
a0 = 2.5;
eqs = Table[abl[[j]]/(x^(j - 1)) == (coL[[j]] /. a[0] -> a0), {j, 3}]

There may be complex solutions, which I will discard

sols = Select[Solve[eqs, {a[1], a[2], a[3]}] // N, FreeQ[#, Complex[_, _]] &] /. a[x_] :> a[Floor[x]]

And check the 1st three terms

Table[
 {Take[Expand[hh[hh[x]] /. a[0] -> a0 /. sols[[j]]], 3],  abl /. sols[[j]]},
 {j, 1, 3}]
POSTED BY: Hans Dolhaine

I suggest asking on a mathematics site, especially if you are seeking a symbolic solution. For instance, math.stackexchange.com or mathoverflow.com. An "obvious" solution is $f(0)=0$, but there may be others. I don't know much about this equation.

Here's a series solution approach. If nothing else, it's a start. It requires $f(x_0)=x_0$ for ComposeSeries[f, f] to work, ComposeSeries[f, f] gets unwieldy when the order of the approximation gets high enough.

func[{x0_, n_}, x_] := Block[{a}, a[x0] = x0; Series[a[x], {x, x0, n}]]

With[{x0 = 1},
 coeffrules = Nest[
   With[{f = func[{x0, Length@#}, x]},
     Join[
      #1,
      First@Solve[
        CoefficientList[D[f, x] == ComposeSeries[f, f] /. #1, x],
        Derivative[Length@#][a][x0]]
      ]
     ] &,
   {a[x0] -> x0},
   5
   ];
 res = func[{x0, Length@coeffrules - 1}, x] /. coeffrules
 ]
(*
1 + (x - 1) + 1/2 (x - 1)^2 + 1/3 (x - 1)^3 + 7/24 (x - 1)^4 + 37/120 (x - 1)^5  + O[x - 1]^6
*)

D[res, x]
ComposeSeries[res, res]
(*
1 + (x - 1) + (x - 1)^2 + 7/6 (x - 1)^3 + 37/24 (x - 1)^4 + O[x - 1]^5
1 + (x - 1) + (x - 1)^2 + 7/6 (x - 1)^3 + 37/24 (x - 1)^4 + 269/120 (x - 1)^5  + O[x - 1]^6
*)
POSTED BY: Michael Rogers

Hello, Thanks a lot, it is a good start. As you recommend I will ask on StackExchange but my ultimate goal is to program this in Mathematica. The program must have an IDE (they are not ODE) for example f''=f' o and gives the function f.

Kind regards, Jean-Michel

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract