Вы находитесь на странице: 1из 15

ANALISIS NUMERICO: CODIGO INTERPOLACION DE NEWTON EN MATLAB

BRAYAN FERNANDO SANCHEZ JULIO

191217

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER OCAÑA

FACULTAD DE INGENIERIAS

INGENIERIA DE SISTEMAS

OCAÑA

2018
ANALISIS NUMERICO: CODIGO INTERPOLACION DE NEWTON EN MATLAB

BRAYAN FERNANDO SANCHEZ JULIO

191217

ORLANDO ALVAREZ

LIC.

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER OCAÑA

FACULTAD DE INGENIERIAS

INGENIERIA DE SISTEMAS

OCAÑA

2018
Tabla de contenido
No se encontraron entradas de tabla de contenido.
INTRODUCCIÓN

La interpolación polinómica es una técnica de interpolación de un conjunto de datos o

de una función por un polinomio

El método se llama así en honor a los matemáticos alemanes Carl Friedrich Gauss y

Philipp Ludwig von Seidel y es similar al método de Jacobi. Aunque este método puede aplicarse

a cualquier sistema de ecuaciones lineales que produzca una matriz (cuadrada, naturalmente pues

para que exista solución única, el sistema debe tener tantas ecuaciones como incógnitas) de

coeficientes con los elementos de su diagonal no-nulos, la convergencia del método solo se

garantiza si la matriz es diagonalmente dominante o si es simétrica y, a la vez, definida positiva.

En este trabajo se presenta como por medio del programa de matlab se puede resolver

cualquier tema, en este caso el gauss Seidel. La razón por la cual los métodos iterativos son útiles

en la disminución de los errores de redondeo en sistemas, se debe a que un método de

aproximación se puede continuar hasta que converja dentro de alguna tolerancia de error

previamente especificada.

La investigación se enfoca en la utilidad del método para la resolución de las ecuaciones

lineales y en comparación con otros métodos iterativos parecidos su precisión, su facilidad de

aplicación, su complejidad, sus condiciones de aplicación.


OBJETIVOS

Objetivo General

Aplicar los conocimientos de programación para resolver un sistema polinómico de

interpolación de Newton para aplicaciones en algoritmos del Programa de matlab.

Objetivos Específicos

Mostrar la implementación del método numérico de interpolación de Newton por medio

de la programación que se utiliza en el programa de MATLAB.

Proporcionar y obtener un idea clara del método numérico de polinomio de

interpolación de Newton.
MATLAB

Historia Del Programa Matlab

En 1984 surge la primera versión, creado por Cleve Moler, con la idea de usar paquetes

de subrutinas escritas en Fortran en los cursos de Análisis Numérico y Algebra Lineal, sin tener

una necesidad de programas que usaran este lenguaje.

El lenguaje de programación M se creó en 1970 proporcionando un acceso sencillo al

Software de matrices LINPACK y EISPACK sin tener que hacer uso del lenguaje Fortran.

Ya en 2004 se apreciaba que MATLAB era usado por aproximadamente más de un

millón de personas, tanto académicos como empresarios.

Nombre

Versión de la
o
version
MATLAB 1. 198 MATLAB R13SP MATLAB
R? R2011a
0 4 6.5.1 1 200 7.12 201
198 MATLAB R13SP 3 MATLAB 1
MATLAB 2 R? R2011b
6 6.5.2 2 7.13
198 MATLAB
MATLAB 3 R? MATLAB 7 R14 R2012a
7 200 7.14 201
MATLAB 199 MATLAB R14SP 4 MATLAB 2
R? R2012b
3.5 0 7.0.1 1 8.0
199 MATLAB R14SP MATLAB
MATLAB 4 R? R2013a
2 7.0.4 2 200 8.1 201
MATLAB 199 MATLAB R14SP 5 MATLAB 3
R7 R2013b
4.2c 4 7.1 3 8.2
MATLAB 199 MATLAB R2006 MATLAB
R8 R2014a
5.0 6 7.2 a 200 8.3 201
MATLAB MATLAB R2006 6 MATLAB 4
R9 R2014b
5.1 199 7.3 b 8.4
MATLAB 7 MATLAB R2007 MATLAB
R9.1 R2014a
5.1.1 7.4 a 200 8.3 201
MATLAB MATLAB R2007 7 MATLAB 4
R10 R2014b
5.2 199 7.5 b 8.4
MATLAB 8 MATLAB R2008 MATLAB
R10.1 R2015a
5.2.1 7.6 a 200 8.5
MATLAB MATLAB R2008 8 MATLAB R2015aSP 201
R11
5.3 199 7.7 b 8.5 1 5
MATLAB 9 MATLAB R2009 200 MATLAB
R11.1 9 R2015b
5.3.1 7.8 a 8.6
MATLAB R12 200 MATLAB R2009 MATLAB R2016a 201
6.0 0 7.9 b 9.0 6
MATLAB 200 MATLAB R2010 MATLAB
R12.1 R2016b
6.1 1 7.10 a 201 9.1
MATLAB 200 MATLAB R2010 0 MATLAB 201
R13 R2017a
6.5 2 7.11 b 9.2 7
MATLAB 201
R2017b
9.3 7

Descripción De Matlab

MATLAB es un entorno de cálculo técnico de altas prestaciones para cálculo numérico

y visualización. Integra:

 Análisis numérico
 Cálculo matricial
 Procesamiento de señales
 Gráficos

En un entorno fácil de usar, donde los problemas y las soluciones son expresados como

se escriben matemáticamente, sin la programación tradicional. El nombre MATLAB proviene de

``MATrix LABoratory'' (Laboratorio de Matrices). MATLAB fue escrito originalmente para

proporcionar un acceso sencillo al software matricial desarrollado por los

proyectos LINPACK y EISPACK, que juntos representan lo más avanzado en programas de

cálculo matricial. MATLAB es un sistema interactivo cuyo elemento básico de datos es una

matriz que no requiere dimensionamiento. Esto permite resolver muchos problemas numéricos

en una fracción del tiempo que llevaría hacerlo en lenguajes

como C, BASIC o FORTRAN. MATLAB ha evolucionado en los últimos años a partir de la

colaboración de muchos usuarios. En entornos universitarios se ha convertido en la herramienta

de enseñanza estándar para cursos de introducción en álgebra lineal aplicada, así como cursos

avanzados en otras áreas. En la industria, MATLAB se utiliza para investigación y para resolver

problemas prácticos de ingeniería y matemáticas, con un gran énfasis en aplicaciones de control


y procesamiento de señales. MATLAB también proporciona una serie de soluciones específicas

denominadas TOOLBOXES. Estas son muy importantes para la mayoría de los usuarios de

MATLAB y son conjuntos de funciones MATLAB que extienden el entorno MATLAB para

resolver clases particulares de problemas como:

 Procesamiento de señales
 Diseño de sistemas de control
 Simulación de sistemas dinámicos
 Identificación de sistemas
 Redes neuronales y otros.

Probablemente la característica más importante de MATLAB es su capacidad de

crecimiento. Esto permite convertir al usuario en un autor contribuyente, creando sus propias

aplicaciones. En resumen, las prestaciones más importantes de MATLAB son:

Escritura del programa en lenguaje matemático.

Implementación de las matrices como elemento básico del lenguaje, lo que permite una

gran reducción del código, al no necesitar implementar el cálculo matricial.

Implementación de aritmética compleja.

Un gran contenido de órdenes específicas, agrupadas en TOOLBOXES.

Posibilidad de ampliar y adaptar el lenguaje, mediantes ficheros de script y funciones.

METODOS NUMERICOS: POLINOMIO DE INTERPOLACION DE NEWTON

Puede demostrarse matemáticamente que dado n+1 puntos xi y los valores que toma una

función f(x) en cada uno de esos puntos, existe un único polinomio p(x) de grado n que aproxima

con un mínimo error esa función en el rango de puntos xi. Ese polinomio es el llamado
polinomio de interpolación de Lagrange que puede obtenerse de la forma que hemos visto. El

método de interpolación de Newton es otra manera de obtener este mismo polinomio p(x).

El método de interpolación de Newton ha venido utilizándose por su facilidad de

cálculo, sobre todo en épocas en las que no se disponía las máquinas que ahora disponemos.

Aunque este método pueda parecer más largo que el de Lagrange, su ventaja está en que utiliza

un algoritmo adaptativo, lo que desde el punto de vista computacional es muy ventajoso (un

computador emplea mucho menos tiempo para obtenerlo).

Pasos Para Hallar el polinomio de Interpolación de Newton

El primer paso para hallar la fórmula de la interpolación es definir la pendiente de orden

n de manera recursiva:

En general:

donde representa la distancia entre dos elementos (por ejemplo, se puede tener el

elemento en y pero desconocer el valor de la secuencia en ).

Puede apreciarse cómo en la definición general se usa la pendiente del paso anterior, , a la cual

se le resta la pendiente previa de mismo orden, es decir, el subíndice de los términos se

decrementa en 1, como si se desplazara, para obtener .


Nótese también que aunque el término inicial siempre es X0, este puede ser en realidad

cualquier otro, por ejemplo, se puede definir de manera análoga al caso mostrado

arriba.

Ejemplo

Pongamos como ejemplo la secuencia F0 tal que

y es decir, son los términos para hasta .

Se obtiene las pendientes de orden 1 de la siguiente forma:

Una vez tenemos la pendientes de orden 1 , es posible obtener las de siguiente orden:

Por último, definimos la pendiente de orden 3 :

Una vez tenemos la pendiente, podemos definir los consecuentes polinomios:

Podemos probar por ejemplo la interpolación lineal para el valor 1.5, que resulta

ser . Efectivamente, al ser una recta, podemos ver que este valor es

igual a , el punto medio entre ambos (más el punto inicial, 3).


CODIGO EN MATLAB DE GAUSS SEIDEL

% --- Executes on button press in btnResolver.


function btnResolver_Callback(hObject, eventdata, handles)

% Obtenemos los Coficientes de las ecuaciones

% Coficientes Ecuacion 1
x11 = str2num(get(handles.X11, 'string'));
x12 = str2num(get(handles.X12, 'string'));
x13 = str2num(get(handles.X13, 'string'));
% Coficientes Ecuacion 2
x21 = str2num(get(handles.X21, 'string'));
x22 = str2num(get(handles.X22, 'string'));
x23 = str2num(get(handles.X23, 'string'));
% Coficientes Ecuacion 3
x31 = str2num(get(handles.X31, 'string'));
x32 = str2num(get(handles.X32, 'string'));
x33 = str2num(get(handles.X33, 'string'));

% Terminos independientes
b1 = str2num(get(handles.B1, 'string'));
b2 = str2num(get(handles.B2, 'string'));
b3 = str2num(get(handles.B3, 'string'));

% Valores inicales
x1 = str2num(get(handles.X1, 'string'));
x2 = str2num(get(handles.X2, 'string'));
x3 = str2num(get(handles.X3, 'string'));

% Creacion matriz coficientes de las ecuaciones


A = [x11, x12, x13; x21, x22, x23; x31, x32, x33]
% Creacion vector de terminos independientes
b = [b1; b2; b3]
% Creacion vector de soluciones inicales
x0 = [x1; x2; x3];

% Obtenemos el x para el cual se calculara el error


xi = get(handles.cbxX,'Value')
% Obtenemos la tolerancia
tol = str2num(get(handles.Tol,'string'));
% Llamamos el metodo que Ejecuta el metodo Iterativo de Gauss Siedel
pasamos
% sus parametros requeridos y obtenemos una matriz con la tabla de
% resultados
datos = Gauss_Seidel (A, b, x0, tol, xi);

%Adigamos la Matriz resultado a la tabla del la interfaz


set(handles.Tabla, 'Data', datos);

function datos=Gauss_Seidel (A, b, x0, tol, xi)

if min( abs(diag(A)) ) <1 % Comprobamos que no hayan ceros en la diagonal


o cercanos a cero
errordlg('Ha ingresado elementos Ceros en las Diagonales o Cercanos a
Cero Por Favor Intentelo de Nuevo')
datos={0, 0, 0, 0, 0}
else
n = 3 % Orden del sistema
k=1 % elemento iterador
ea=10000 % error inicial
xa=0 % x anterior
while ea>tol
if k==1 % primera iteracion
datos(k,:)={sprintf('%d',k-1), sprintf('%6.4f',x0(1)),
sprintf('%6.4f',x0(2)), sprintf('%6.4f',x0(3)),'-------'};
xa=x0(xi)
k=k+1;
end

for i=1:n % Aplicamos la formula de gauss seidel para hayar las nuevas
soluciones en la itercion K
di = ( b(i) - A(i,:)*x0 )/A(i,i)
x0(i) = x0(i) + di
end
ea=(1-(xa)/(x0(xi)))*100 % Calculamos el error
%Asigamos filas a la matriz tados
datos(k,:)={sprintf('%d',k-1), sprintf('%6.4f',x0(1)), sprintf('%6.4f',x0(2)),
sprintf('%6.4f',x0(3)), sprintf('%6.4f',ea)}

xa=x0(xi)
k=k+1;
end

end

% --- Executes on button press in btnLimpiar.


function btnLimpiar_Callback(hObject, eventdata, handles)
size_table=cell(1,5);
size_table(:,5)={''};
set(handles.Tabla,'Data',size_table)

set(handles.X11, 'string', '');


set(handles.X12, 'string', '');
set(handles.X13, 'string', '');
set(handles.B1, 'string', '');

set(handles.X21, 'string', '');


set(handles.X22, 'string', '');
set(handles.X23, 'string', '');
set(handles.B2, 'string', '');

set(handles.X31, 'string', '');


set(handles.X32, 'string', '');
set(handles.X33, 'string', '');
set(handles.B3, 'string', '');

set(handles.X1, 'string', '');


set(handles.X2, 'string', '');
set(handles.X3, 'string', '');

set(handles.cbxX,'Value', 1)
set(handles.Tol,'string','');
CONCLUSIONES

Luego de haber estudiado el método para resolver un sistema de ecuaciones lineales

Gauss-Seidel se concluye que puede trasladarse a un algoritmo de programación y ser resuelto

satisfactoriamente lo cual reduce el tiempo de resolución y hace que el método sea más eficaz. El

cálculo que realiza el programa es exacto; sin embargo existen desventajas, ya que este es

exclusivo para la resolución de sistemas de ecuaciones lineales. Algunos métodos son más

exactos, otros más fáciles de programar, otros más cortos, etc. Para ser capaces de elegir un

método apropiado, lo primero que se necesita es comprender cómo se desarrolla cada uno de

estos procesos. El aprendizaje adquirido en esta investigación ha sido de gran valor y

seguramente servirá de la misma manera a aquellos quienes posteriormente lean estas

explicaciones y lo expuesto en este reporte.

BIBLIOGRAFIA

https://www.ecured.cu/MATLAB
http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/matlab/contenido/node2.html

Вам также может понравиться