Re: linear equations with indexed variables?
- To: mathgroup at smc.vnet.net
- Subject: [mg6963] Re: [mg6896] linear equations with indexed variables?
- From: jpk at max.mpae.gwdg.de
- Date: Wed, 30 Apr 1997 22:25:23 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
> From hxie at gradin.cis.upenn.edu Fri Apr 25 23:44:18 1997
> Date: Fri, 25 Apr 1997 14:00:30 -0400 (EDT)
> From: hxie at gradin.cis.upenn.edu (Hong-liang Xie)
> To: mathgroup at smc.vnet.net
> Subject: [mg6896] linear equations with indexed variables?
>
> I am new to Mathematica and I need to solve a system of
> linear equations whose variables are indexed (i.e., x[1],
> x[2], x[3]), for example,
>
> 3x[i] = 2x[i+1] + x[i-1] ( 1 <= i <= 3)
> x[4 ] = 1
> x[0] = 0
>
> The above is a system of 5 linear equations with
> 5 variables x[0], x[1], x[2], x[3], x[4]. I can certainly
> rewrite it into 5 equations using 5 variables x0, x1, x2,
> x3, x4. However, if the range of i gets bigger, or, worse,
> if each x has two indexes as in x[i,j], this rewriting could
> get of hand quickly. I tried different equation solving
> functions in Mathematica but with no luck. I would therefore
> appreciate help from experts here on how to solve this kind of
> equations directly. Thanks a lot!
>
> Hong
> CIS Dept
> Univ of Pennsylvania
>
>
>
>
>
>
Hi Hong,
You had a system of recurence equations with constant coeficients and
a boundary problem for this system. The recurence equations with constant
coefficients can be solved usualy by the ansatz x(i)=zeta^i. By insertion
of this ansatz in Your recurence equation You get the two solutions
zeta=1/2 and zeta=1. This step looks in Mathematica 3.0 so
In[1]:= fdeqn=3 x[i]==2 x[i+1]+x[i-1];
In[2]:= fdsol=Solve[
Cancel[\[Zeta]^(-i)*#] & /@
(fdeqn /. x[i_]:>\[Zeta]^i),
\[Zeta]
]
Out[2]=
{{\[Zeta] -> 1/2},
{\[Zeta] -> 1}}
With this solutions for zeta You can construct the general solution
of Your recurence equation
as x[i]=C[1]*zeta[1]^i+C[2]*zeta[2]^i
The two arbitary constants C[1] and C[2] must be determined from the
boundary conditons. We make our solution a bit more Mathematica like
with
In[3]:=
sol=x[i_]:>
Evaluate[Plus
@@(Map[Apply[Times,#] &,
Transpose[{{C[1],C[2]},\[Zeta] ^i/.fdsol}]])]
Out[3]=
x[i_] :> C[1]/2^i + C[2]
Now lets determine C[1] and C[2]
In[4]:=
boundsol=Solve[bound={x[4]==1,x[0]==0} /. sol,{C[1],C[2]}]
Out[4]=
{{C[1] -> -(16/15),
C[2] -> 16/15}}
Now one gets the final solution
for Your equations with
In[5]:= finalsol= First[x[i] /. sol /.boundsol]
Out[5]=16/15 - 2^(4 - i)/15
That's all.
Hope that helps
Jens