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) |