DESENVOLVIMENTO DE PROGRAMA PARA AJUSTE POLINOMIAL USANDO MÉTODO DOS MÍNIMOS QUADRADOS E PIVOTEAMENTO PARCIAL POR LU
Por: Vitor Keller • 21/6/2020 • Trabalho acadêmico • 1.131 Palavras (5 Páginas) • 209 Visualizações
UFF- UNIVERSIDADE FEDERAL FLUMINENSE
INSTITUTO DE COMPUTAÇÃO
MÉTODOS NUMÉRICOS – TURMA F1
Profº Dr. Marco Antônio Monteiro
TRABALHO DA DISCIPLINA
DESENVOLVIMENTO DE PROGRAMA PARA AJUSTE POLINOMIAL
USANDO MÉTODO DOS MÍNIMOS QUADRADOS E PIVOTEAMENTO PARCIAL POR LU
Por Vitor Keller e Pedro Diniz
- CÓDIGO:
C Trabalho para a disciplina Métodos Numéricos
C Por Vitor Keller e Pedro Diniz
program polilu2
integer NMAX,N,HMAX,H,I,J,P,RE
parameter (NMAX= 9999999)
parameter (HMAX=1000)
real X(NMAX),F(NMAX)
real L(HMAX,HMAX), S(HMAX)
character*30 FNAME
C Usuário adiciona seus dados
1 write(*,*) 'Qual ‚ o grau desejado para o polinômio? (Até 1000° grau)'
read(*,*) H
H=H+1
If (H .GT. HMAX) then
write(*,*) 'ERRO: Acima de 1000° grau.'
Stop
End If
write(*,*) 'Quantos pontos deseja adicionar?'
read(*,*) N
If (N .LE. (H-1)) then
write(*,*) 'ERRO: Número de pontos menor ou igual ao grau do polinômio.'
Stop
End If
If (N .GT. NMAX) then
write(*,*) 'ERRO: Acima do limite de pontos(9999999).'
Stop
End If
Write(*,*)'Qual ‚ nome do arquivo dos pontos (x,f(x))?'
Read(*,'(A30)') FNAME
Open(10,FILE=FNAME,STATUS='OLD')
Do I=1,N
Read(10,*) X(I),F(I)
End Do
C Montagem das matrizes pelo método dos Mínimos Quadrados
Do J=1,H
Do I=1,N
S(J)=S(J) + (F(I)*(X(I)**(J-1)))
End Do
End Do
Do J=1,H
Do M=1,H
Do I=1,N
L(M,J)= L(M,J) + (X(I)**(J+(M-2)))
End Do
End Do
End Do
C Cálculo de LU
P=1
Do while (P .LT. H)
Do J=(P+1),H
L(J,P)=L(J,P)/L(P,P)
End do
Do J=(P+1),H
Do I=(P+1),H
L(J,I)=L(J,I)-(L(J,P)*L(P,I))
End do
End do
P=P+1
End do
C Cálculo de L*C=S
S(1)=S(1)
Do J=2,H
Do I=1,J-1
S(J)=S(J)-(L(J,I)*S(I))
End do
End do
C Cálculo de U*A=C
P=H
S(P)=S(P)/L(P,P)
...