# Resolvendo o sistema linear Au=v pelo método dos gradientes conjugados.

c=c(8, 1, 1, 0, 2, 20, 9, 2, 1, 1, 2, 1, 11,2, 0, 3, 2, 1, -8, 1, 2, 1, 2, 3, 10)
A=matrix(c,5,5,,byrow=TRUE); A   # Entrada da matriz A
v=c(1,2,3,4,5); v                # Entrada do vetor v

B=t(A)%*%A; B; b=t(A)%*%v;b      # Adaptando o sistema para A*Au=A*v, ou Bu=b, em que B=A*A é positiva definida e b=A*v.

n=5
u=c(1,1,1,1,1)
                                 # Início do método
w=B%*%u-b                        # w0
d=w                              # d1
h= t(w)%*%w /(t(B%*%w) %*%w)     # Escolha de h0 ou alpha0
u=u-h[1]*w                       # u1
w=B%*%u-b                        # w1

for ( j in 1:n){                
bt= t(B%*%d) %*%w/(t(B%*%d) %*%d) # Escolha de beta
d=w-bt[1]*d  
at= t(d) %*%w/(t(B%*%d) %*%d)    # Escolha de alpha
u=u-at[1]*d                   
w=B%*%u-b  
}
u                                # Aproximação para u(t), sendo t a soma dos passos h.
A%*%u-v                          # Verificação do erro de aproximação.

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: