Re: Programming question: Iterative solution
- To: mathgroup at smc.vnet.net
- Subject: [mg22887] Re: [mg22877] Programming question: Iterative solution
- From: Andrzej Kozlowski <andrzej at bekkoame.ne.jp>
- Date: Tue, 4 Apr 2000 01:25:24 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
on 4/3/00 1:04 PM, J.Guillermo Sanchez at guillerm at gugu.usal.es wrote: > > Dear Friend, I have an iterative problem > > Given the list: > > In[1]:= > list1 = {1.90, 3.625, 5.18, 6.59, 7.87, 9.02, 10.07, 11.01, 11.87, 12.64}; > > and the equation (besed on trapezoid approximation for an integral) > > In[2]:= > f[n_Integer] := > Simplify[Sum[g[j - 1]*i[n - j + 1] + g[j]*i[n - j], {j, 1, n}] /. g[0] -> 0] > > where > > In[3]:= > g[n_Integer] := E^(-0.1*n) /; n > 0 > > I would like find the solution for any i[n]. I have precedured as follow > > In[4]:= > sol[n_Integer] := Solve[f[n + 1] == Extract[list1, n + 1] , i[n]] > > Now, I can find the solution . E.g. > > In[5]:= > sol[0] > > Out[5]= > {{i[0] -> 2.09982}} > > In[6]:= > sol[1] /. sol[0] > > Out[6]= > {{{i[1] -> 1.05312}}} > > In[7]:= > sol[2] /. sol[1] /. sol[0] > > Out[7]= > {{{{i[2] -> 1.04989}}}} > > But I thing is not to good method, > > Can any body give me a more elegant solution?. Thanks > > > How about something like this: In[2]:= sol[n_] := Flatten[Apply[Solve, Transpose[Map[{f[# + 1] == list1[[# + 1]], i[#]} &, Range[0, n]]]]] Then In[2]:= sol[4] Out[2]= {i[0] -> 2.09982, i[1] -> 1.05312, i[2] -> 1.04989, i[3] -> 1.05154, i[4] -> 1.05385} Now, for example, if you only need i[3] you can do In[3]:= i[3] /. % Out[3]= 1.05154 Andrzej Kozlowski Toyama International University Toyama, Japan