- 線型連立方程式を解く
- 以前はこちらやこちら
- Gauss-Seidel 法
- 対角成分が大きくないといけないらしい
N<-3
A<-matrix(runif(N^2),N,N)
diag(A)<-diag(A)*10
x<-runif(N)
b<-runif(N)
D<-matrix(0,N,N)
diag(D)<-diag(A)
B<-A-D
diag(D)<-1/diag(D)
Niter<-500
for(i in 1:Niter){
x<-D%*%(b-B%*%x)
}
b-A%*%x
N<-3
A<-matrix(runif(N^2),N,N)
diag(A)<-diag(A)*10
x<-runif(N)
b<-runif(N)
D<-matrix(0,N,N)
diag(D)<-diag(A)
B<-A-D
diag(D)<-1/diag(D)
Niter<-500
for(i in 1:Niter){
x<-D%*%(b-B%*%x)
}
b-A%*%x
x1<-x
C<-cbind(A,b)
N<-nrow(C)
M<-ncol(C)
L<-min(N,M-1)
for(i in 1:L){
C[i,]<-C[i,]/C[i,i]
for(j in 1:N){
if(j != i){
C[j,]<-C[j,]-C[j,i]*C[i,]
}
}
}
C
if(M-N==1){
b-A%*%x
}
x2<-C[,M]
x1
x2
x1-x2