Métodos de integración Runge-Kutta y Regla Trapezoidal

VERSION

El método de Runge-Kutta (RK) es un conjunto de métodos iterativos (implícitos y explícitos) para la aproximación de soluciones de ecuaciones diferenciales ordinarias, en esta documentación se muestra el de cuarto y sexto orden. Otro método agregado es la Regla Trapezoidal que puede ser explícita, para diferenciar los métodos de solución explícito e implícito se agregan los dos puntos siguientes:

Método de integración explícito. En este método es posible calcular la aproximación en cada paso directamente evaluando la función f(x,y), como ejemplo de un método de integración explicito se muestra la regla del punto medio.

 

Donde

 

Método de integración implícito. Las aproximaciones en este método vienen definidas por un sistema de ecuaciones implícito. En la siguiente ecuación se muestra la forma implícita del método de integración del punto medio.

La ventaja del "scripting" es poder dar solución en forma ordenada a n número de ecuaciones diferenciales.

Problemas de valor inicial

Se considera el problema de valor inicial (PVI) de ecuaciones diferenciales ordinarias (EDO) :

Lo anterior es bastante importante debido a que debemos indicar las condiciones iniciales para poder dar solución a una EDO.

1.1 ¿Por qué utilizar este código fuente ?

Debido a su simplicidad de resolver varias ecuaciones de estado es flexible para dar solución a modelos de máquinas eléctricas como para otros tipos de modelos que dependan principalmente del tiempo o en caso contrario que no involucre esta variable.

Las líneas de código siguientes pertenecen al archivo start.sce el cual contiene tres métodos de solución Rk4,Rk3 y Trapezoidal ya antes mencionados.

GitHub Logo

1.2 Lista de archivos dependientes

La siguiente lista de archivos (dependientes) muestra como se encuentra estructurado en forma general el programa y siempre debe ejecutar el archivo start.sce para poder llamar la lista restante de archivos con extensión *.sci .

  1. Start

    • attributes.sci
    • ecuDif.sci
    • rk4.sci (Multi ecuaciones)
    • rk6.sci (Multi ecuaciones)
    • rtrapezoidal (Multi ecuaciones)
    • mnecudif

1.3 Ejecución del código fuente

De manera sencilla iniciamos el Start.sce e inmediatamente se indica el tipo de método a ocupar.

1.4 Ecuaciones diferenciales : ecuDif.sci

En el archivo ecuDif es necesario especificar las ecuaciones de estado, por lo que Xdot contiene dos ecuaciones de estado por este motivo se tiene dos variables Xdot(1,1) y Xdot(2,1). Estas variables se pasan a los archivos rk4.sci y rk6.sci junto con la variable de tiempo para poder dar solución a la EDO.

En este archivo se introducen las constantes y valores necesarios de las ecuaciones de estado con sus respectivas variables de estado representados con Xdot, todo es un arreglo matricial.

1.5 Método de Runge-Kutta 6to Orden : rk6.sci

Es necesario cambiar la línea del archivo rk4 o rk6 que contiene disp([t(i),r(1,i)',r(2,i)']) al incrementar las variables y ecuaciones o únicamente mostrar una al igual que las variables iniciales mostradas en el archivo attributes.sci.

1.6 Método de Runge Kuta 4to Orden : rk4.sci

1.7 Método Trapezoidal : rtrapezoidal.sci

1.8 Valores Iniciales de Simulación : attributes.sci

El archivo contiene los atributos de la simulación y debe establecer el número de condiciones iniciales, las cuales dependen de las variables de estado a resolver siendo necesario modificar la impresión disp([t(i),r(1,i)',r(2,i)']) de los archivos rk4 y rk6.

Los valores iniciales mostrados en el bloque siguiente son el tiempo inicial, tiempo final, valores iniciales en este caso para dos variables y el número de muestras.

1.9 Opciones de solución: mnecudif.sci

Las opciones mencionadas en la parte 1.1 pertenecen al código siguiente :

Ejemplo #1 Ecuación del péndulo

Un péndulo simple se define como una partícula de masa "m" suspendida "O" por un hilo inextensible de longitud "L" y de masa despreciable.

Aplicando la segunda Ley de Newton, siendo la aceleración de la partícula hacia adentro de la trayectoria circular se obtiene:

Siendo la aceleración de la partícula hacia adentro dada por:

La aceleración tangencial de la partícula es:

De la segunda Ley de Newton incluyendo la fricción se obtiene:

El valor de k (fricción) esta dado por :

Las variables de estado son :

Por lo tanto, las ecuaciones de estado son las siguientes:

Estableciendo la ecuaciones en el archivo ecuDif.sci y valores correspondientes.

La solución paraXdot(1) y Xdot(2) de las ecuaciones de estado es:

Simulacion No.1

Ejemplo #2 Solución analítica y numérica

Utilizando el método de la transformada de Laplace se resolverá la ecuación diferencial siguiente:

dydx+3y=13Sin2ty(0)=6

Aplicando la transformada de Laplace a la Ecuación diferencial anterior se obtiene la solución para Y(S).

Y(S)=6s2+50(s+3)(s2+4)

La solución en el dominio del tiempo se obtiene con la transformada inversa.

y(t)=8e3t2Cos2t+3Sin2t

El resultado anterior se grafica con Scilab mediante el bloque siguiente:

La solución de la ecuación diferencial y gráfica se muestra a continuación:

y(t)=8e3t2Cos2t+3Sin2t

Solución ED

Para dar solución es necesario configurar el archivo ecuDif de la forma siguiente:

Modificamos las condiciones iniciales del archivo attributes como se muestra:

Se debe ajustar el archivo mnecudif para mostrar únicamente una solución, esta ecuación diferencial tiene una única variable.

Finalmente al realizar estas modificaciones podrás observar la solución siguiente:

Solución EDO

Copyright © 2017 en adelante, Marco Polo Jácome Toss (rk4,rk6,trapezoidal). Este programa es software libre: usted puede redistribuirlo y /o modificarlo bajo los términos de la Licencia General GNU (GNU General Public License) publicado por la Fundación para el Software Libre para la versión 3 de dicha Licencia o anterior, o cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea útil pero sin ninguna garantía; incluso sin la garantía implícita de comercialización o idoneidad para un propósito en particular.

Vea la información de Licencia de RK4 para más detalle.

Información de la obra

Safe Creative #2208051726797