Решение дифференциального уравнения второго порядка модифицированным методом Эйлера - C#
Формулировка задачи:
Здравствуйте! Прошу помочь в написании программы для решения дифференциального уравнения второго порядка модифицированным методом Эйлера. Само задание ниже. (Вроде легко, но что-то не идет у меня)
Верю в Вас, заранее спасибо!
Решение задачи: «Решение дифференциального уравнения второго порядка модифицированным методом Эйлера»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication8
{
class Program
{
static double f(double t, double y, double x, double a, double b, double c, int j)
{
if (j == 0) return (-b * y - c * x) / a;
else return y;
}
public static double[] x { get; set; }
public static double[] y { get; set; }
public static double[] t { get; set; }
static void MME(double a, double b, double c, double tn, double tk, int n, double x0, double y0)
{
t = new double[n + 1];
x = new double[n + 1];
y = new double[n + 1];
double h = (tk - tn) / n;
int i;
t[0] = tn;
x[0] = x0;
y[0] = y0;
for (i = 1; i <= n; i++)
{
t[i] = t[i - 1] + h;
x[i]=x[i-1]+(-c*y[i-1]-b*x[i-1])*h;
y[i]=y[i-1]+x[i-1]*h;
}
}
static void Main(string[] args)
{
double a = 0.01, b = 20, c = 300000, x0 = 0.00001, y0 = -0.01;
int n = 100;
MME(a, b, c, 0, 0.004, n, x0, y0);
for (int i = 0; i <= n; i++)
Console.WriteLine("t[{0}]={1,6:f5} \t q\'[{0}]={2,8:f8} \t q[{0}]={3,10:f8}", i, t[i], y[i], x[i]);
Console.ReadKey();
}
}
}