Решение задачи Коши модифицированным методом Эйлера - C#
Формулировка задачи:
Здравствуйте! Помогите, пожалуйста, написать программу на языке программирования C# по задаче Коши модифицированным методом Эйлера. Желательно написать в Windows Form, ну или хотя бы в консольном приложении.
Мне нужно, чтобы шаг считался автоматически, делился на 2.
Условие: (dy/dx)+2*pi*y^2*cos(2*pi*x+(pi/6)=0.
x0=0; y0=1/(sin(pi/6). Предел интегрирования 0.4
в ссылке фото с примерным алгоритмом. Может. найдете какие-нибудь ошибки.. Заранее спасибо!
Решение задачи: «Решение задачи Коши модифицированным методом Эйлера»
textual
Листинг программы
class Program { delegate double Foo(double x); delegate double Foo2(double x, double y); static double df(double x, double y, double omega, double phi) { return -omega * y * y * Math.Cos(omega * x + phi); } static double Integral(Foo2 F, double x, double x0, double y0, double eps) { int n = 1; double y_h = double.MaxValue; // Значение с текущим шагом double y_double_h = 0; // Значение с удвоенным шагом while (Math.Abs(y_h - y_double_h) > eps) // это условие излишне, см. учебник { double h = (x - x0) / n; double y = y0; double t = x0; for (int i = 0; i < n; i++) { y += h * F(t + h / 2, y + h * F(t, y) / 2); t += h; } n *= 2; y_double_h = y_h; y_h = y; } return y_h; } static void Main(string[] args) { double omega = 2.0 * Math.PI, phi = Math.PI / 6.0; double x0 = 0, y0 = 1 / Math.Sin(phi); Foo I = b => Integral((x, y) => df(x, y, omega, phi), b, x0, y0, 1e-5); Console.WriteLine(I(0.4)); Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д