Algoritmia - eliminacion de gauss en scilab

   
Vista:

eliminacion de gauss en scilab

Publicado por Marc (1 intervención) el 18/03/2008 03:30:20
Por favor necesito el codigo de eliminacion de gauss en scilap
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:eliminacion de gauss en scilab

Publicado por catalina (1 intervención) el 28/08/2008 03:20:55
function escrVect(x, titulo)
// escribe un vector en la pantalla
//*********************
formato = '%10.4f'
numNumerosPorLinea = 5
//*********************
nnl = numNumerosPorLinea
[n1, n2]= size(x)
n = max(n1,n2)
m = min(n1,n2)
if m > 1
printf('ESCRVECT: x no es un vector. ')
end
x = x(:)
if argn(2) == 2
printf('%s : ', titulo)
end
for i=1:n
printf(formato, x(i))
if modulo(i, nnl) == 0 | i == n
printf(' ')
end
end
endfunction
//-------------------------------------------------------
function escrMatr(A, titulo)
// escribe una matriz en la pantalla

if argn(2) == 2
printf('%s : ', titulo)
end
[m, n] = size(A)
for i=1:m
escrVect(A(i,:))
end
endfunction
//--------------------------------------------------
function a = merf(A, eps0, IRP)
// Matriz escalonada reducida por filas.
// Se hace pivoteo parcial para buscar para
// disminuir los errores numericos.
// Si |t| <= eps0, se considera nulo.
// Si IRP = 1 se escriben resultados parciales.
// 0 no se escriben los resultados parciales
if argn(2) == 1
eps0 = 1.0e-12
IRP = 0
end
if argn(2) == 2
IRP = 0
end
if IRP == 1, escrMatr(a, 'matriz inicial'), end
[m, n] = size(a)
eps0 = eps0*max(abs(A))
a = A
i = 1
j = 1
while i <= m & j <= n
[vmax, i0] = max(abs(a(i:m,j)))
if vmax > eps0
imax = i+i0-1
if imax ~= i
t = a(i,j:n)
a(i,j:n) = a(imax,j:n)
a(imax,j:n) = t

if IRP == 1
printf('interc. filas %d y %d ', i, imax)
escrMatr(a)
end
end
aij0 = a(i,j)
a(i,j+1:n) = a(i,j+1:n)/a(i,j)
a(i,j) = 1
if IRP == 1
printf('dividir fila %d por el pivote: %f ', i, aij0)
escrMatr(a)
end
for k = 1:m
if k ~= i
a(k,j+1:n) = a(k,j+1:n) - a(k,j)*a(i,j+1:n)
a(k,j) = 0.0
end
end
if IRP == 1
printf('buscar ceros en la columna %d ', j)
escrMatr(a)
end
i = i+1
else
a(i:m,j) = zeros(m+1-i,1)
end
j = j+1
end
endfunction
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar