S4=(...........)=S3[i-1]=S2[i-2];
.......................
S4[N]=(...........)=S3[N-1]=S2[N-2];
依此类推,我们可以发现一个有趣的式子:
AN=PN-i+2*Ai+QN-i+2*D+RN-i+2*Ai-1, 即
Ai=(AN-QN-i+2*D-RN-i+2*Ai-1)/PN-i+2
我们从已知量A1和AN出发,依据上述公式顺序递推A2、A3、...、AM.由于PN-i+2递减,因此最后得出的AM要比第一种算法趋于精确。
程序代码如下:
program ND1P4;
const
maxn =60;
var
n,m,i :integer;
d :real;
list :array[1..maxn] of real; {list-------对应ai}
s :array[1..maxn,1..3] of real; {s[i,1]--------对应Pi}
{s[i,2]--------对应Qi}
{s[i,3]--------对应Ri}
procedure init;
begin
write(’n m d =’);
readln(n,m,d); {输入项数,输出项序号和常数}
write(’a1 a’,n,’=’);
readln(list[1],list[n]); {输入a1和an}
end; {init}
procedure solve;
begin
s[1,1]:=0;s[1,2]:=0;s[1,3]:=1; {求递推边界(P1,Q1,R1)和(P2,Q2,R2)}
s[2,1]:=1;s[2,2]:=0;s[2,3]:=0; {根据公式Pi〈---Pi-2 - 2*Pi-1}
{Qi〈---Qi-2 - 2*Qi-1}
{Ri〈---Ri-2 - 2*Ri-1}
{递推(P3,Q3,R3)......Pn,Qn,Rn)}
for i:=3 to n do
begin
s[i,1]:=s[i-2,1]-2*s[i-1,1];
s[i,2]:=s[i-2,2]-2*s[i-1,2]+2;
s[i,3]:=s[i-2,3]-2*s[i-1,3];
end; {for}
上一页 [1] [2] [3] 下一页