Programar Ecuaciones Diferenciales
Publicado por Diegof (1 intervención) el 08/03/2003 23:16:48
que funciones debo utilizar para resolver ecuaciones diferenciales?
Valora esta pregunta


0
#include <iostream>
#include <cmath>
// Definir la función que representa la EDO
double f(double t, double y) {
return t * std::sqrt(y); // Ejemplo: dy/dt = t * sqrt(y)
}
// Implementar el método de Runge-Kutta de cuarto orden
void rungeKutta(double t0, double y0, double h, int n) {
double t = t0;
double y = y0;
std::cout << "t: " << t << ", y: " << y << std::endl;
for (int i = 0; i < n; i++) {
double k1 = h * f(t, y);
double k2 = h * f(t + h / 2, y + k1 / 2);
double k3 = h * f(t + h / 2, y + k2 / 2);
double k4 = h * f(t + h, y + k3);
y += (k1 + 2 * k2 + 2 * k3 + k4) / 6; // Actualizar y
t += h; // Actualizar t
std::cout << "t: " << t << ", y: " << y << std::endl;
}
}
int main() {
double t0 = 0.0; // Valor inicial de t
double y0 = 1.0; // Valor inicial de y
double h = 0.1; // Tamaño del paso
int n = 10; // Número de pasos
rungeKutta(t0, y0, h, n);
return 0;
}