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