Algoritmo Para Matrices Tridiagonales
Short Description
Descripción: Matriz tridiagonal...
Description
Algoritmo para para matrices tridiagonales tridiagonales El algoritmo para matrices tridiagonales o algoritmo de Thomas (por Llewellyn Thomas) Thomas) es un algoritmo algoritmo del del álgebra lineal numérica para resolver matrices resolver matrices tridiagonales de tridiagonales de forma eficiente. Una matri tridiagonal se corresponde a un sistema de ecuaciones de la forma
donde
y
. lo !ue se puede representar matricialmente como
"ara este tipo de sistemas se puede obtener con este algoritmo una soluci#n con solo operaciones en ve de las !ue re!uiere la eliminaci#n gaussiana. gaussiana. El algoritmo primero elimina las y luego usa una sustituci#n para obtener la soluci#n. Este tipo de matrices suelen salir al plantear discretiaciones por métodos de diferencias finitas$ finitas$ vol%menes finitos o finitos o elementos finitos de finitos de problemas unidimensionales. &lgunos de los problemas f'sicos !ue se plantean as' son la Ecuaci#n de "oisson$ "oisson $ la ecuaci#n de calor $ la ecuaci#n de onda o onda o la interpolaci#n por splines por splines..
Índice ocultar
•
* +é +éto todo do
•
, -mpl -mplemen ementac tacione iones s
•
o
,.* -mplementaci#n -mplementaci# n en
o
,., -mplementaci#n -mplementaci# n en "ython
o
,./ -mplementaci#n -mplementaci# n en +atlab
o
,.0 -mplementaci#n -mplementaci# n en 1ortran 23
/ 4eri 4erivaci vaci#n #n
o
/.* &lgoritmo
o
/., 1#rmulas para coeficientes
•
0 5ariantes
•
6 7eferencias
•
8 Enlaces e9ternos
Métodoeditar El primer paso del método es modificar los coeficientes como sigue:
donde se marcan con super'ndice ; los nuevos coeficientes. 4e igual manera se opera:
a lo !ue se llama barrido hacia adelante. & continuaci#n se obtiene la soluci#n por sustituci#n hacia atrás:
Implementacioneseditar Implementación en Ceditar La siguiente funci#n en resolverá el sistema (aun!ue sobreescribirá el vector de entrada c en el proceso). emplo para resolver diversos sistemas !ue solo difieren en el término independiente)$ as' !ue esta implementaci#n mantiene dichos coeficientes.
subroutine solve_tridiag(a,b,c,d,x,n ) i$plicit none
a - sub-diagonal &means it is the diagonal below
the main diagonal'
b - the main diagonal
c - sup-diagonal &means it is the diagonal above
the main diagonal'
d - right part
x - the answer
n - number of e%uations
integer,intent(in) n real(6),di$ension(n),intent(in) a,b,c,d real(6),di$ension(n),intent(out) x real(6),di$ension(n) cp,dp
real(6) $ integer i initialie c-prime and d-prime
cp(!) = c(!)b(!) dp(!) = d(!)b(!) solve for vectors c-prime and d-prime
do i = ,n $ = b(i)&cp(i&!)'a(i) cp(i) = c(i)$ dp(i) = (d(i)&dp(i&!)'a(i))$ enddo initialie x
x(n) = dp(n) solve for x from the vectors c-prime and d-prime
do i = n&!, !, &! x(i) = dp(i)&cp(i)'x(i#!) end do end subroutine solve_tridiag
Derivacióneditar Algoritmoeditar
View more...
Comments