Métodos numéricos , Universidad de Medellín.
Enviado por plotface • 30 de Septiembre de 2018 • Práctica o problema • 2.459 Palabras (10 Páginas) • 115 Visitas
(28 de Abril de 2017)
Métodos numéricos , Universidad de Medellín.
Práctica de Matlab.
Resumen— La siguiente práctica , contiene detalladamente la resolución de problemas numéricos que abarquen una diferenciación, integración o solución de ecuaciones diferencial. Se exponen cada uno de estos métodos y sus variantes. Con algoritmos hechos con el programa Matlab para ayudar y/o optimizar la resolución de dichos problemas.
- DIFERENCIACIÓN.
En muchos casos, cuando se conoce la función se puede obtener una derivada perfectamente, aplicando las formulas ya conocidas en cursos anteriores, para lograr resolverla. Pero, cuando tenemos un conjunto de datos; para lograr aproximar la derivada a un modelo que se ajuste a nuestros datos usamos, los siguientes métodos que se describen a continuación.
1.1 BASE TEORICA.
En los cursos de cálculo se define la derivada de ƒ en x0 como.
[pic 1]
Una manera razonable de aproximar la derivada es
[pic 2] (1).
Para el caso de una función lineal, ƒ(x) = ax + b, la aproximación dada por la expresión (1) resulta exacta para cualquier valor de h distinto de cero. Pero para cualquier función ƒ en general no siempre resulta exacta.
A continuación se hace una estimación del error asociado a la aproximación dada por (1) usando el teorema de Taylor con un polinomio de grado 1.
[pic 3]
si x = x0 + h, x - x0 = h, y reemplazando en (2) resulta:
[pic 4]
si se despeja ƒ’(x0) entonces:
[pic 5] (3).
e puede obtener otra fórmula para aproximar la derivada usando la ecuación (2),
[pic 6]
si x = x0 – h, x – x0 = -h, reemplazando el valor de x se tiene :
[pic 7]
si se despeja f ´(x0) resulta:
[pic 8] (4)
A la aproximación (1) se le llama fórmula de diferencia hacia delante y a la aproximación dada por (4) se le conoce como fórmula de diferencia hacia atrás, ambas fórmulas presentan el mismo error. Se puede obtener otra fórmula para aproximar la derivada con un error que involucre h2 usando un polinomio de grado 2 así:
[pic 9]
Si se reemplaza x = x0 + h y x = x0 – h en (5) resulta:
[pic 10]
Si se restan las anteriores ecuaciones, se tiene:
[pic 11]
Ahora se despeja f ´(x0) ,
[pic 12] (6)
[pic 13]
La anterior fórmula para aproximar la derivada de ƒ se la conoce como diferencia centrada.
De manera análoga a la interpolación polinómica, el uso de más puntos en la evaluación de la derivada producirá mayor exactitud; aunque esto implica mayor cantidad de evaluaciones funcionales y aumento de error de redondeo. A continuación se muestra una tabla con las formulas requeridas para el cálculo de primeras y segundas derivadas dado un número de puntos.
[pic 14](7)
Y sus correspondientes para la segunda derivada
[pic 15](8)
1.2 ALGORITMO EN MATLAB
clear all
clc
% % Esquemas de Diferencias Finitas Adelante, Atrás y Central para la Primera y segunda derivada
disp('*************************************************************************************');
disp('*******************************Calculo de diferencias finitas*******************************');
disp('*************************************************************************************');
syms x;
funcion=input('Ingrese la función F(x): ');
x0=input('Ingrese el punto x0 a calcular: ');
h=input('Ingrese tamaño de paso (h): ');
%% Convertimos la función escrita como texto a un modo que matlab la entienda
f=inline(char(funcion));
%% Derivamos la funcion
DerivadaF=diff(funcion,x);
DerivadaF2=diff(DerivadaF,x);
Df=inline(char(DerivadaF));%Primera Derivada
Df2=inline(char(DerivadaF2));% Segunda Derivada
%% Primera Derivada diferencias finitas progresivas.
Dfprimera2PuntosP=(f(x0+h)-f(x0))/h
Dfprimera3PuntosP=(-3*f(x0)+4*f(x0+h)-f(x0+2*h))/(2*h)
%% Primera Derivada diferencias finitas centradas.
Dfprimera2PuntosC=(f(x0+h)-f(x0-h))/(2*h)
Dfprimera4PuntosC=(f(x0-2*h)-8*f(x0-h)+8*f(x0+h)-f(x0+2*h))/(12*h)
%% Primera Derivada diferencias finitas regresivas.
Dfprimera2PuntosR=(f(x0)-f(x0-h))/(h)
Dfprimera3PuntosR=(f(x0-2*h)-4*f(x0-h)+3*f(x0))/(2*h)
%% Calculamos la derivada real.
DerivadaReal=Df(x0);
%% Errores
PrimeraDerivadaAproximada=[Dfprimera2PuntosP Dfprimera3PuntosP Dfprimera2PuntosC Dfprimera4PuntosC Dfprimera2PuntosR Dfprimera3PuntosR];
ErrorAbsoluto=abs(PrimeraDerivadaAproximada-DerivadaReal)
...