第 3 回小テスト 解説

16
第 3 第第第第第 第第

description

第 3 回小テスト 解説. プログラム の構成. 01: #include 02: #define N 3 03: 04: void main(void){ 05: double a[N][N+1]={{6.0,7.0,6.0,5.0}, 06: {1.0,1.0,0.0,0.0}, 07: {2.0,3.0,3.0,2.0}}; 08: int i,j,k; 09: double x[N]; 10: 11: for(k=0;k

Transcript of 第 3 回小テスト 解説

Page 1: 第 3 回小テスト 解説

第 3 回小テスト解説

Page 2: 第 3 回小テスト 解説

プログラムの構成01: #include <stdio.h>02: #define N 303: 04: void main(void){05: double a[N][N+1]={{6.0,7.0,6.0,5.0},06:     {1.0,1.0,0.0,0.0},07: {2.0,3.0,3.0,2.0}};08: int i,j,k;09: double x[N];10:11: for(k=0;k<N;k++){12: for(j=k+1;j<N+1;j++)13: a[k][j]=a[k][j]/a[k][k];14: a[k][k]=1;15: for(i=k+1;i<N;i++){16: for(j=k+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][k]*a[k][j];18: a[i][k]=0;19: }20: }21: for(i=N-1;i>=0;i--){22: x[i]=a[i][N];23: for(j=N-1;j>i;j--)24: x[i]=x[i]-a[i][j]*x[j];25: }26: }

問 1ガウスの消去法

問 2代入法により解を求める

Page 3: 第 3 回小テスト 解説

行列の確認

05: double a[N][N+1]={{6.0,7.0,6.0,5.0},06:     {1.0,1.0,0.0,0.0},07: {2.0,3.0,3.0,2.0}};

a=

Page 4: 第 3 回小テスト 解説

問1解説  (1)

11: for(k=0;k<N;k++){12: for(j=k+1;j<N+1;j++)13: a[k][j]=a[k][j]/a[k][k];14: a[k][k]=1;15: for(i=k+1;i<N;i++){16: for(j=k+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][k]*a[k][j];18: a[i][k]=0;19: }20: }

12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

k=0 のとき12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

Page 5: 第 3 回小テスト 解説

問1解説  (2)

12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

k=0 のとき12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

j=1 のとき

13: a[0][1]=a[0][1]/a[0][0];

a[0][1]= 7.0 / 6.0

a=a=

j=2 のとき

13: a[0][2]=a[0][2]/a[0][0];

a[0][2]= 6.0 / 6.0

a=

j=3 のとき

13: a[0][3]=a[0][3]/a[0][0];

a[0][3]= 5.0 / 6.0

a=

Page 6: 第 3 回小テスト 解説

問1解説  (3)

12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

k=0 のとき12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: } a=a=

Page 7: 第 3 回小テスト 解説

問1解説  (4)

12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

k=0 のとき12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: } a=

i=1 のときj=1 のとき17: a[1][1]=a[1][1]-a[1][0]*a[0][1];

a[1][1]= 1.0 - 1.0 * 7/6 = -1/6

a=

j=2 のとき17: a[1][2]=a[1][2]-a[1][0]*a[0][2];

a[1][2]= 0.0 - 1.0 * 1.0 = -1

a=

j=3 のとき17: a[1][3]=a[1][3]-a[1][0]*a[0][3];

a[1][3]= 0.0 - 1.0 * 5/6 = -5/6

a=

Page 8: 第 3 回小テスト 解説

問1解説  (5)

k=0 のとき12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: } a=a=

i=1 のとき

Page 9: 第 3 回小テスト 解説

問1解説  (6)

12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

k=0 のとき12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

i=2 のときj=1 のときj=2 のときj=1 のとき

a=

17: a[2][1]=a[2][1]-a[2][0]*a[0][1];

a[2][1]= 3.0 - 2.0 * 7/6 = 2/3

j=2 のとき17: a[2][2]=a[2][2]-a[2][0]*a[0][2];

a[2][2]= 3.0 - 2.0 * 1.0 = 1.0

a=

j=3 のとき17: a[2][3]=a[2][3]-a[2][0]*a[0][3];

a[2][3]= 2.0 - 2.0 * 5/6 = 1/3

a=

Page 10: 第 3 回小テスト 解説

k=0 のとき12: for(j=0+1;j<N+1;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=0+1;i<N;i++){16: for(j=0+1;j<N+1;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

12: for(j=1;j<4;j++)13: a[0][j]=a[0][j]/a[0][0];14: a[0][0]=1;15: for(i=1;i<3;i++){16: for(j=1;j<4;j++)17: a[i][j]=a[i][j]-a[i][0]*a[0][j];18: a[i][0]=0;19: }

問1解説  (7)

i=1 のとき

a=a=

Page 11: 第 3 回小テスト 解説

問1解説  (8)

k=1 のとき

同様にして

12: for(j=2;j<4;j++)13: a[1][j]=a[1][j]/a[1][1];14: a[1][1]=1;15: for(i=2;i<3;i++){16: for(j=2;j<4;j++)17: a[i][j]=a[i][j]-a[i][1]*a[1][j];18: a[i][1]=0;19: }

a=a=a=

ループは 1回のみ

a=a=

k=1のときはここ以外は無視してよい

Page 12: 第 3 回小テスト 解説

問1解説  (9)

k=2 のとき

同様にして

12: for(j=3;j<4;j++)13: a[2][j]=a[2][j]/a[2][2];14: a[2][2]=1;15: for(i=3;i<3;i++){16: for(j=3;j<4;j++)17: a[i][j]=a[i][j]-a[i][2]*a[2][j];18: a[i][2]=0;19: }

ループなし

a=a=a=

ガウス消去法計算終了

k=2のときはここ以外は無視してよい

Page 13: 第 3 回小テスト 解説

問 2 解説  (1)

21: for(i=3;i>=0;i--){22: x[i]=a[i][3];23: for(j=2;j>i;j--)24: x[i]=x[i]-a[i][j]*x[j];25: }

問1の結果より

a=

i=2 のとき22: x[2]=a[2][3];

x[2]= 1

実行されない

Page 14: 第 3 回小テスト 解説

問 2 解説  (2)

21: for(i=2;i>=0;i--){22: x[i]=a[i][3];23: for(j=2;j>i;j--)24: x[i]=x[i]-a[i][j]*x[j];25: }

問1の結果より

a=

i=1 のとき22: x[1]=a[1][3];

x[1]= 5

j=2 のとき24: x[1]=x[1]-a[1][2]*x[2];

x[1]= 5 – 6 * 1 = -1

Page 15: 第 3 回小テスト 解説

問 2 解説  (3)

21: for(i=2;i>=0;i--){22: x[i]=a[i][3];23: for(j=2;j>i;j--)24: x[i]=x[i]-a[i][j]*x[j];25: }

問1の結果より

a=

i=0 のとき22: x[0]=a[0][3];

x[0]= 5/6

j=2 のとき24: x[0]=x[0]-a[0][2]*x[2];

x[0]= 5/6 – 1 * 1 = -1/6

j=1 のとき24: x[0]=x[0]-a[0][1]*x[1];

x[0]= -1/6 – 7/6 * -1 = 1

Page 16: 第 3 回小テスト 解説

問 2 解説  (4)

x=1,y=-1,z=1よって上式の解は

2z3y3x2

0yx

5z6y7x6

 

 

 

と求められる.