MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第54回]
●チェビシェフの逆展開式を求める(4)
前回発見しましたチェビシェフの逆展開式の法則に従ってC++でプログラムを書いてみました。
こんなに簡単になってしまいました。
// chebychev polynomials
// 逆展開式
//
// 14/10/18
//
#include <stdio.h>
//
void main()
{
// i---> x^i
// j--->Tj
// T[i][j]---> 'keisu' of Tj
int T[21][21];
int i,j;
int n;
T[0][0]=1;// x^0
T[1][1]=1;// x^1
T[2][2]=1;// x^2
T[2][0]=1;// x^2
// keisan
for(i=3;i<=20;i++){
T[i][i]=1;
for(j=i-2;j>=0;j=j-2){
if (j==1)T[i][1]=T[i-1][2]+T[i-1][0]*2;
else if (j==0)T[i][0]=T[i-1][1];
else T[i][j]=T[i-1][j+1]+T[i-1][j-1];
}
}
// print
printf("1=T0\n");
printf("x=T1\n");
n=1;
for(i=2;i<=20;i++){
n=n*2;
printf("x^%d=1/%d(T%d+",i,n,i);
for(j=i-2;j>=0;j=j-2){
if(T[i][j]==1)printf("T%d",j);
else printf("%dT%d",T[i][j],j);
if(j<=1)printf(")\n");
else printf("+");
}
}
return;
}
//
|
1=T0 x=T1 x^2=1/2(T2+T0) x^3=1/4(T3+3T1) x^4=1/8(T4+4T2+3T0) x^5=1/16(T5+5T3+10T1) x^6=1/32(T6+6T4+15T2+10T0) x^7=1/64(T7+7T5+21T3+35T1) x^8=1/128(T8+8T6+28T4+56T2+35T0) x^9=1/256(T9+9T7+36T5+84T3+126T1) x^10=1/512(T10+10T8+45T6+120T4+210T2+126T0) x^11=1/1024(T11+11T9+55T7+165T5+330T3+462T1) x^12=1/2048(T12+12T10+66T8+220T6+495T4+792T2+462T0) x^13=1/4096(T13+13T11+78T9+286T7+715T5+1287T3+1716T1) x^14=1/8192(T14+14T12+91T10+364T8+1001T6+2002T4+3003T2+1716T0) x^15=1/16384(T15+15T13+105T11+455T9+1365T7+3003T5+5005T3+6435T1) x^16=1/32768(T16+16T14+120T12+560T10+1820T8+4368T6+8008T4+11440T2+6435T0) x^17=1/65536(T17+17T15+136T13+680T11+2380T9+6188T7+12376T5+19448T3+24310T1) x^18=1/131072(T18+18T16+153T14+816T12+3060T10+8568T8+18564T6+31824T4+43758T2+24310T0) x^19=1/262144(T19+19T17+171T15+969T13+3876T11+11628T9+27132T7+50388T5+75582T3+92378T1) x^20=1/524288(T20+20T18+190T16+1140T14+4845T12+15504T10+38760T8+77520T6+125970T4+167960T2+92378T0) |