DIFERENCIACIÓN NUMÉRICA

October 1, 2017 | Autor: V. Barreto Vasquez | Categoría: Metodos Numericos Aplicados a La Ingenieria
Share Embed


Descripción

DIFERENCIACIÓN NUMÉRICA
EJERCICIO 1: Hacer un programa que efectúe la 1ª,2ª,3ª y 4ª derivada de un set de datos (X, Y), con las fórmulas de serie de Taylor.
INTRODUCCIÓN.
El programa realizado solicitará el ingreso de dos vectores de datos que contengan; uno, la variable independiente y el otro, la variable dependiente; para encontrar las aproximaciones de sus derivadas primera y mayores, utilizando la diferenciación numérica hacia adelante, centrada y hacia atrás. A continuación las formulas Usadas:

Diferenciación Hacia AdelanteDiferenciación Hacia Adelante
Diferenciación Hacia Adelante
Diferenciación Hacia Adelante





Diferenciación Hacia AtrásDiferenciación Hacia Atrás
Diferenciación Hacia Atrás
Diferenciación Hacia Atrás






Diferenciación CentradaDiferenciación Centrada
Diferenciación Centrada
Diferenciación Centrada




Es importante decir, que debido a que el programa usa las fórmulas de diferenciación basadas en la serie de Taylor, los datos ingresados deben ser regularmente espaciados, es decir debe haber la misma distancia(tamaño de paso) entre cada uno de los puntos de la variable dependiente
EJECUCIÓN Y DESCRIPCIÓN DEL PROGRAMA
Al ejecutar el programa, se nos presenta un pequeño dialogo, que nos solicita ingresar los datos de las variables dependiente e independiente:



Luego deberemos ingresar dos vectores, uno para cada variable:



El programa nos devolverá las aproximaciones de las derivadas en todos los puntos



Como vemos el programa nos da como resultado cuatro vectores, el primero contiene la primera derivada en todos los puntos ingresados, el segundo, las segundas derivadas, también para todos los puntos y así sucesivamente.

Ahora verificaremos los resultados de la primera derivada con el comando "gradient",que nos ofrece Matlab, el cuál puede calcular las aproximaciones de las derivadas por medio de series de Taylor:



Como podemos ver los resultados obtenidos con nuestro programa, para la primera derivada, son idénticos a los obtenidos por la función "gradient" de las librerías de Matlab

El programa tiene algunos filtros intentando que el trabajo que realice sea óptimo, el primero de ellos es verificar si el tamaño de paso es del mismo tamaño entre cada punto de la variable dependiente(X), al no cumplirse esta condición, el programa imprimirá un mensaje de error, saltara todas las instrucciones y terminará:




Como vemos, uno de los datos ingresados (5.5), genera un tamaño de paso de 0.5 y 1.5 (entre 5 y 0.5 y entre 0.5 y 6, respectivamente), diferentes al del resto (1), el programa se percata de este error.

Debido a las fórmulas que se utilizan (mostradas en la primera parte del informe); se puede ver que, para obtener una primera derivada solo son necesarios dos datos, para una segunda se necesitan tres, y así sucesivamente. En el programa hay secciones de código que permite informar al usuario si es que no se puede calcular alguna derivada por falta de datos o en cuales es posible calcularlas con solamente cierta cantidad de datos ingresados. En la siguiente captura de pantalla mostramos esta característica:



Esta vez solo ingresamos 4 pares de datos, el programa encuentra las primeras y segundas derivadas sin ningún problema pero, debido a los datos necesarios para el cálculo de la tercera derivada, solo podemos efectuar las derivadas en los puntos extremos. Esto se puede verificar analizando las fórmulas para la tercera derivada por Derivación Hacia Adelante, Hacia Atrás y centrada; mostradas al inicio.
Para hallar la derivada en el primer punto, se puede utilizar solamente Derivación hacia Adelante, en el último punto, solo podemos usar Derivación hacia atrás, la derivación centrada no se puede usar para esta cantidad de datos.

Como podemos verificar en las formulas referidas, con solo 4 datos no podemos obtener una derivada de cuarto grado.

ALGUNAS ACOTACIONES IMPORTANTES:
El programa, como se ha dicho en líneas anteriores, utiliza las tres variantes del método de diferenciación numérica basado en series de Taylor. Por ejemplo, la primera derivada en el primer punto se obtiene utilizando Diferenciación Hacia Adelante; las derivadas en los puntos siguientes se obtienen usando Diferenciación Centrada y la derivada en el último dato, con Diferenciación Hacia Atrás.




CODIGO DEL PROGRAMA:
clc; clear all;
fprintf('PROGRAMA PARA EFECTUAR LA DERIVACIÓN DE UN SET DE DATOS\n\n');
fprintf('El programa le brindará la 1ª,2ª,3ª y 4ª derivada\n\n');
fprintf('Ingrese datos de variable independiente:\n');
fprintf('(RECUERDE QUE ESTOS DATOS DEBEN SER REGULARMENTE ESPACIADOS\n');
x=input('Ej.[0 1 2 3 4 5 6 7 8 9 10])');
n=length(x);
e=0;
for i=1:n-3%este bucle verificará que el tamaño de paso sea el mismo
if (x(1,i+1)-x(1,i))~=(x(1,i+2)-x(1,i+1))
e=e+1;
break;
end
end
if e>0,error ('Los datos deben ser igualmente espaciados');end
fprintf('Ingrese datos de la variable dependiente: \n');
y=input('(Ej.[1.4 2.1 3.3 4.8 6.8 6.6 8.6 7.5 8.9 10.9 10])');
h=x(1,2)-x(1,1);
n=length(x);
pridrv=zeros(1,n);

%.................................--------................................

%Realizamos la primera derivada de los datos ingresados por diferencias
%finitas.
%primer dato, diferencias finitas hacia adelante
pridrv(1,1)=(y(1,2)-y(1))/h;
%Desde el segundo dato hasta el penúltimo, Direncias finitas centradas
for i=2:n-1
pridrv(1,i)=(y(1,i+1)-y(1,i-1))/(2.*h);
end
%Para el último dato, diferencias finitas hacia atras
pridrv(1,n)=(y(1,n)-y(1,n-1))/h;
fprintf('\n\nRESULTADOS!\n');
fprintf('Las primeras derivadas para los datos ingresados son, respecticamente :\n');
disp(pridrv);
%Ahora Desarrollaremos la segunda derivada
segdrv=zeros(1,n);
if n
Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.