Upload
reece-watkins
View
31
Download
3
Embed Size (px)
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
Citation preview
第 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代入法により解を求める
行列の確認
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=
問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: }
問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=
問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=
問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=
問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 のとき
問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=
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=
問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のときはここ以外は無視してよい
問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のときはここ以外は無視してよい
問 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
実行されない
問 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
問 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
問 2 解説 (4)
x=1,y=-1,z=1よって上式の解は
2z3y3x2
0yx
5z6y7x6
と求められる.