差分法在二元一次多项式中的应用
人- vs - 计算机
ax2+bx+c=0
人:直接用规则。
x=2a分之负b加减根号b的平方减4ac。
计算机:一个数一个数的代入,只要等号成立那么就找到x的解。方法笨但是简单,计算量也大。
差分法:
n n2 alpha(一阶差分) bata(二阶差分)
0 0
1 1 1
2 4 3(=4-1) 2(=3-1)
3 9(=4+3+2) 5(=9-4) 2(=5-3)
4 16 7 2
alpha(n)=n2-(n-1)2
bata(n)=alpha(n)-alpha(n-1)
n2=(n-1)2+alpha(n-1)+bata(n-1)
---------------------------------------------------------------------------------------------------
同理:x2+2x+4=t
n t alpha(一阶差分) bata(二阶差分)
0 4
1 7 3
2 12 5 2
3 19 7 2
4 28 9 2
alpha(n)=n2-(n-1)2
bata(n)=alpha(n)-alpha(n-1)
t[n]=(n-1)2+alpha(n-1)+bata(n-1)
只要有了红色部分的数据就可以求出所有要求的数据:
n,t[],alpha[],bata[]
t[0]=4,t[1]=7,t[2]=12
alpha[0]=0,alpha[1]=3
bata[0]=0,bata[1]=0
for(n=2 to k)
{
alpha[n]=n2-(n-1)2
bata[n]=alpha[n]-alpha[n-1]
t[n]=(n-1)2+alpha[n-1]+bata[n-1]
}
这样就可以得到所有的t[n];
------------------------------------------------------
如果只求某一个t[k]
n,t[],alpha[],bata[]
t1=7,t2=12
alpha1=3
bata1=0
alpha=0
bata=0
t=0
for(n=3 to k)
{
alpha=t2-t1;
bata = alpha-alpha1;
t=t2+alpha+bata;
t1=t2;
t2=t;
alpha1=alpha;
}
cout<<"tk="<<t<<endl;