# Resolvendo o sistema linear Au=v pelo método dos gradientes.
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
f<-function(u){A%*%u-v} # Au=v quando f(u)=0.
g<-function(u){t(f(u))%*%f(u)/2}
B=t(A)%*%A; b=t(A)%*%v # Adaptando o sistema para A*Au=A*v, ou Bu=b, em que B=A*A é positiva definida e b=A*v.
gradg<-function(u){B%*%u-b}
h=0.001 # Tamanho do passo h, para calcular numéricamante u(20), em que u(0)=(1,1,1,1,1) e u'(t)=-Bu+b.
n=20/h
u=c(1,1,1,1,1)
for ( j in 1:n){
u=u-h*gradg(u) # Método de Euler
}
print(" Aproximação para u");u # Aproximação para u(20).
print(" Aproximação para f(u)") ;f(u) # Verificação do erro de aproximação.
print(" Número de iterações"); n
To embed this project on your website, copy the following code and paste it into your website's HTML: