dポイントプレゼントキャンペーン実施中!

C言語プログラミング 漸化式について
T(n+1)=2XT(n)-T(n-1)

T(0)=1
T(1)=X

このチェビシェフ多項式の漸化式を使ってT(16)までの式を出すという課題なんですが、答えを教えてほしいです。
プログラミング初心者で自分でやってもうまくいきません。
お願いします。

見づらいと思うので、課題の内容の写真も貼ってます。

「C言語プログラミング 漸化式について T」の質問画像

A 回答 (5件)

c言語で表現すると以下のようになります。


xの初期値を色々変更して、動かしてみて下さい。

また、特に難しい箇所はありませんので、一行ずつ意味を理解して頂いて、
c言語に慣れてみてください。
なにせ「習うより慣れろ」とよく言われた時代の言語ですので。

#include <stdio.h>

int main()
{
int x = 2;
int n;
long T[17];

T[0] = 1;
T[1] = x;

for (n = 1; n < 16; n++) {
T[n + 1] = 2 * x * T[n] - T[n - 1];
}

for (n = 0; n <= 16; n++) {
printf("T[%2d]= %d\n", n, T[n]);
}

return 0;
}
    • good
    • 1
この回答へのお礼

ありがとうございます!
一行ずつ、参考書などで理解して慣れていきたいと思います!

お礼日時:2018/11/13 09:08

No.4です。



f = 0; は削除してください。
    • good
    • 0

> T(16)までの式を出す



T(2)~T(16)の各項の係数を表示させました。一番右がx^0の項です。
これを式の表現にするのはご自身で行ってみてください。


#include <stdio.h>
#define MAX 16

int main(void) {

int c[MAX+1][MAX+1] = {0};
int i,j;

c[0][0] = 1; // T0 = 1
c[1][1] = 1; // T1 = x

for(i = 2; i < MAX+1; i++){
for(j = MAX; j >= 0; j--){
c[i][j] = 2*c[i-1][j-1] - c[i-2][j];
}

f = 0;
printf("T(%2d) = ", i);
for(j = MAX; j >= 0; j--){
printf("%7d ",c[i][j]);
}
printf("\n");
}
return 0;
}


結果
T( 2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -1
T( 3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -3 0
T( 4) = 0 0 0 0 0 0 0 0 0 0 0 0 8 0 -8 0 1
T( 5) = 0 0 0 0 0 0 0 0 0 0 0 16 0 -20 0 5 0
T( 6) = 0 0 0 0 0 0 0 0 0 0 32 0 -48 0 18 0 -1
T( 7) = 0 0 0 0 0 0 0 0 0 64 0 -112 0 56 0 -7 0
T( 8) = 0 0 0 0 0 0 0 0 128 0 -256 0 160 0 -32 0 1
T( 9) = 0 0 0 0 0 0 0 256 0 -576 0 432 0 -120 0 9 0
T(10) = 0 0 0 0 0 0 512 0 -1280 0 1120 0 -400 0 50 0 -1
T(11) = 0 0 0 0 0 1024 0 -2816 0 2816 0 -1232 0 220 0 -11 0
T(12) = 0 0 0 0 2048 0 -6144 0 6912 0 -3584 0 840 0 -72 0 1
T(13) = 0 0 0 4096 0 -13312 0 16640 0 -9984 0 2912 0 -364 0 13 0
T(14) = 0 0 8192 0 -28672 0 39424 0 -26880 0 9408 0 -1568 0 98 0 -1
T(15) = 0 16384 0 -61440 0 92160 0 -70400 0 28800 0 -6048 0 560 0 -15 0
T(16) = 32768 0 -131072 0 212992 0 -180224 0 84480 0 -21504 0 2688 0 -128 0 1
    • good
    • 0
この回答へのお礼

係数も表現できるんですね!
やってみます。ありがとうございます。

お礼日時:2018/11/13 09:10

No.2です。


すみません、先のプログラムは環境によっては正常に動作しないかも知れません。
T[]をlong型としましたので、printfの行は以下が正解です。
printf("T[%2d]= %ld\n", n, T[n]);
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます!

お礼日時:2018/11/13 09:10

何が解らないのでしょう?


漸化式の意味が判らない?
漸化式の意味は解るが、それをプログラムする知識がない?

少なくともCのプログラムを一行も書かないで、課題丸投げでは誰も答えないと思いますよ
    • good
    • 0
この回答へのお礼

漸化式は分かるんですが、それをプログラムする知識がなかったです。
初めての質問でどんな風にすればいいかもわからなかったので、丸投げする形になってしまいました。
他の質問者さんも自分でやっているところまでは書いてるみたいですね。次回から気をつけます。

お礼日時:2018/11/13 09:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!