MathGroup Archive 2004

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

Search the Archive

Finding Recursive Pattern

  • To: mathgroup at smc.vnet.net
  • Subject: [mg48900] Finding Recursive Pattern
  • From: "ng" <removethisgeorgakopoulos at mindspring.com>
  • Date: Tue, 22 Jun 2004 05:32:14 -0400 (EDT)
  • Reply-to: "ng" <georgakopoulosNOSPAM at LETSSTOPGETTINGSPAMmindspring.com>
  • Sender: owner-wri-mathgroup at wolfram.com

Dear all:

The problem I am having regards the development of the pattern of the
solutions of a recursive non-linear system. I have been able to obtain the
pattern for the linear version of this problem, but it was quite complex.
Mathematica was and is of great help. However, because at the end obtaining
the pattern requires neither the fully expanded nor the fully simplified
equation, I had to figure that out by hand (or brain). Using RSolve did not
help either. I have three questions. (1) Does Mathematica have a method for
exploring the existence of patterns in this kind of system other than
RSolve? [My working assumption is that it does not have such a tool]. (2)
How can I check whether a formula conforms to a hypothesized pattern? I have
tried using variations of Solve[actual solution==x+pattern, x]. While I may
get solutions for x, they are not intuitive (to me) about how to improve the
pattern.

Let me try to state the problem:
A sequence of d[i]'s is created by d[i]=d[i+1]-s[i]^2 . The terminal value
is given, for example d[4]==1. With d[4] known, the system produces d[3],
d[2], and d[1], which ends the sequence. A sequence can be arbitrarily long.
By convention, sequences always end with d[1].
The s[i] are selected so as to maximize d[i] s[i]+Sum[ q[i-j] d[i-j] s[i-j]
, {j, 1, i-1 } ].
The s[i] are the minimum positive solutions to the corresponding
derivatives. For example, s[1] is given by
Solve[ D[ d[1] s[1], s[1] ] == 0, s[1]. After substituting d[1] with
d[2]-s[1]^2, the derivative is d[2]-3 s[1]^2, and the solution is
s[1]->(d[2]/3)^(1/2).

It is not necessary to state each s[i] in terms of the terminal d[terminal]
(in the example above, that would be d[4]).

Having obtained s[1], we can move to s[2]. That must maximize
d[2]s[2]+q[1]d[1]s[1] , using the above s[1]. For example we might type:

Remove[s,d,r,v,q]
d[1]=d[2]-s[1]^2
r[1]=d[1]s[1]
v[1]=D[r[1] , s[1] ]
sols=Solve[ v[1]==0, s[1] ][[2]]
d[2]=d[3]-s[2]^2
r[2]=q[1]d[1]s[1]+d[2]s[2] /.sols
v[2]=D[ r[2], s[2] ]
Collect[%,s[2] ](*pattern source?*)
sols=Join[sols, Solve[ v[2]==0, s[2] ][[2]] ]
d[3]=d[4]-s[3]^2
r[3]=q[1] d[1]s[1]+q[2]d[2]s[2]+d[3]s[3]/.sols
v[3]=D[r[3], s[3] ]
Collect[%,s[3] ](*Pattern source?*)
(*after a long wait, the next line produces error: out- of- memory
            Solve[ v[3]==0, s[3] ][[2]] ]


Any ideas? Thanks a lot!

Nicholas


  • Prev by Date: Re: Net/Link: Problem with DLL (2)
  • Next by Date: Condition generation for complex integrals
  • Previous by thread: Re: Re: Re: Net/Link: Problem with DLL (2)
  • Next by thread: Condition generation for complex integrals