a[i] = (a[i-1] - a[i+1])/2 + d


有一种方法,供参考。

现在递推式是:   a[i+2]   =   2*a[i+1]   -2*d   +   a[i]
现在   a[1],d   都是已知的,只要知道a[2]其实就可以计算出a[m]了。
可以用   a[N]列个方程计算a[2]。

由递推式可知,a[i]   是   a[2]   的一次方程。如:
a[3]   =   2*a[2]   -   2d   +   a[1]
a[4]   =   2*a[3]   -   2d   +   a[2]   =   5*a[2]   -   6d   +   2*a[1]
......
因此,可以令   a[i]   =   x[i]*a[2]   +   y[i]  
递推计算出每个x[i]和y[i]。   然后对
a[N]   =   x[N]*a[2]   +   y[N],通过a[N]计算出a[2],再从
a[m]   =   x[m]*a[2]   +   y[m],计算出a[m]。

x[i]   和   y[i]   的递推式很容易的:

1、首先   x[1]   =   0,   y[1]   =   a[1],   x[2]   =   1,   y[2]   =   0   。这些都是已知量。
2、由a[i+2]   =   2*a[i+1]   -2d   +   a[i]   可得
      x[i+2]   =   2*x[i+1]   +   x[i]
      y[i+2]   =   2*y[i+1]   -   2d   +   y[i]
综合1、2、可以计算出所有得x,y   。
(前文的式子中已经给出   x[3],y[3],x[4],y[4],其他可自行验证)


特征根法算一下a[i]的通项公式
由题意
      a[i]   =   (a[i-1]   -   a[i+1])/2   +   d
因此
      a[i+1]   +   2a[i]   -   a[i-1]   =   2d
故   a[i+1]-d   +   2(a[i]-d)   -   (a[i-1)-d)   =   0
令   b[i]   =   a[i]-d
则     b[i+1]   +   2b[i]   -   b[i-1]   =   0                           (1)
(1)表明数列b[i]是个二阶齐次递推数列.因其特征方程
        x^2   +   2x   -1   =   0
有两个根     -1+sqrt(2)     与     -1-sqlrt(2)
因此b[i]的通项公式为
      b[i]   =   p*(-1+sqrt(2))^i   +   q*(-1-sqlrt(2))^i
            其中p与q为待定系数
因为a[i]=b[i]+d,   我们得到a[i]的通项公式如下:

      a[i]   =   p*(-1+sqrt(2))^i   +   q*(-1-sqlrt(2))^i   +   d

利用边值条件(a[1]与a[N]的值)可算出p与q的值



      a[i+1]   +   2a[i]   -   a[i-1]   =   2d
求a[i]的通项.
假设我们只有高中数学知识,关于数列只知道等差数列和等比数列的通项公式(而不知所谓的特征方
程为何物),让我们看看如何下手.
人们在遇到陌生事物时首先的想法就是把它与熟悉的事物对比.因此对此题而言,一个自然的思路就
是把a[i]通过某种变换转为我们熟悉的等差数列或等比数列.从直觉看变成等差数列可能性不大,那
就让我们从等比数列着手吧.
      首先,等式右边的2d看着不顺眼,让我们想办法把它变成0
试令a[i]   =   b[i]   +   s,   s是一个常数,则有
      b[i+1]   +   2b[i]   -   b[i-1]   =   2d-2s
OK!   让s=d,右边就就为0了.   下一步任务是求b[i]的通项公式,b[i]满足:
      b[i+1]   +   2b[i]   -   b[i-1]   =   0               -----------------   (1)
能把上式变成一个等比数列条件,如   c[i+1]   =   q*c[i]   吗?
一个比较可行的想法是下式:
      b[i+1]   +   m*b[i]   =   k   *   (b[i]   +   m*b[i-1])       ----------------   (2)
其中m和k为常数.   这是一个等比数列条件式(对于数列c[i]   =   b[i]   +   m*b[i-1]),通过设m和k的值
有没有可能把(1)变成(2)呢?
      其实到这一步后,解决问题就没有什么困难了.
      (2)等价于
      b[i+1]   +   (m-k)b[i]   -   k*m*b[i-1]   =   0
和(1)相比,只需
        m-k   =   2
        k*m   =   1                       ---------------------   (3)
这是一个很简单的二元二次方程组,初中生都知道其解法.
解出m和k后,由(2)我们就知道
    b[i+1]   +   m*b[i]   =   (b[2]+m*b[1])   *   k^(i-1)     --------------(4)
等等,有人会问,由(4)我们只知道b[i+1]+m*b[i]的通项,可还是不知道b[i]的通项呀?
实际上,(3)作为(判别式大于0)的二次方程有两个解.因此(4)实际上有两个等式.肖去其中的b[i+1]
就得到b[i]通项了.

最后插句题外话,(3)肖去m后得到
    k*k   +   2*k   -1   =   0
这正是前面提到的特征方程.真是殊途同归.


他的想法,认为:所有的S[m]只与m有关。这是不对的。
实际上S[m]=a[1]+(a[1]-a[m])/2+(m-2)d+a[m]//此结果不仅与m有关,还与a[m]有关
而他的特殊之处只不过是求的S[N],而只有a[N]是已知的而已!
所以用S[m]之差表示a[m]是不可取的。


PS:另外这个S[m]的通项公式要对m=1,m=2等特殊值,特殊归纳才对
1、通过   a[1]   和   a[N]   求出   S[N]   。
2、用递推式   S[i]   =   S[i+1]   -   a[i+1]   ,   i   <   N
3、再用公式   S[i]=a[1]+(a[1]-a[i])/2+(i-2)d+a[i]   求出   a[i]

循环2、3两步,直到计算出   a[m].

正确的递推式是:   a[i+2]   =   -2*a[i+1]   +   2*d   +   a[i]
现在   a[1],d   都是已知的,只要知道a[2]其实就可以计算出a[m]了。
可以用   a[N]列个方程计算a[2]。

由递推式可知,a[i]   是   a[2]   的一次方程。如:
a[3]   =   -2*a[2]   +   2d   +   a[1]
a[4]   =   -2*a[3]   +   2d   +   a[2]   =   5*a[2]   -   2d   -   2*a[1]
......
因此,可以令   a[i]   =   x[i]*a[2]   +   y[i]  
递推计算出每个x[i]和y[i]。   然后对
a[N]   =   x[N]*a[2]   +   y[N],通过a[N]计算出a[2],再从
a[m]   =   x[m]*a[2]   +   y[m],计算出a[m]。

其中,可由递推式得到x,y的通项公式:
x[1]   =   0,   y[1]   =   a[1],   x[2]   =   1,   y[2]   =   0
x[i+2]   =   -2*x[i+1]   +   x[i],   i   > =   1
y[i+2]   =   -2*y[i+1]   +   2d   +   y[i],   i   > =   1

现在,就有三种方案了:特征值法,求和法(用S[n]),一次方程法(x*a[2]   +   y).

相关文章
相关标签/搜索