ЗАДАНИЕ 2: Численное решение дифференциального
Уравнения второго порядка методом Рунге-Кутта
Постановка задачи
Решить численно дифференциальное уравнение второго порядка с заданными начальными условиями для , шагом (табл. 1) и числе шагов методом Рунге-Кутта. Построить график зависимости с помощью программы Excel.
Содержание отчета
1. Постановка задачи для конкретного варианта.
2. Текст программы.
3. График зависимости , построенный с использованием программы Excel.
Методические указания
Результаты вычислений помещаются в файл rez.txt. При открытии данного файла с помощью программы Excel использовать опции мастера текстов, указанные ниже.
Варианты задания
Табл. 1.
Вариант | Дифференциальное уравнение | ||||
0,01 | |||||
0,01 | |||||
0,01 | |||||
0,016 | |||||
0,01 | |||||
0,016 | |||||
0,02 | |||||
0,01 | |||||
0,01 | |||||
0,01 | |||||
-50 | 0,0125 | ||||
0,01 | |||||
0,01 | |||||
0,0125 | |||||
0,008 |
Теория метода Рунге-Кутта
Метод Рунге-Кутта является одним из численных методов повышенной точности. Сначала рассмотрим данный метод на примере дифференциального уравнения первого порядка. Пусть имеется уравнение
(1)
с начальным условием . В методе Рунге-Кутта приращение функции на шаге интегрирования содержит величину до четвертой степени включительно:
. (2)
Поэтому данный метод имеет четвертый порядок точности.
Вместо вычисления непосредственно по формуле (2) в методе Рунге-Кутта предварительно определяются четыре числа:
(3)
Эти числа дают с точностью до :
. (4)
Таким образом, получается алгоритм:
. (5)
Метод Рунге-Кутта можно использовать и для решения уравнений более высокого порядка. Рассмотрим уравнение второго порядка
(6)
с начальными условиями , . Данное уравнение можно заменить системой двух дифференциальных уравнений 1-го порядка:
(7)
Для интегрирования этой системы вычисляются приращения:
(8)
где
(9)
Таким образом, получается алгоритм:
(10)
Пример оформления отчета
Тема лабораторной работы: численное решение дифференциального
Уравнения второго порядка методом Рунге-Кутта
Вариант 24
Выполнил студент гр. СТ-15 Петров А.И.
1. Постановка задачи: решить численно дифференциальное уравнение второго порядка с начальными условиями и шагом при числе шагов методом Рунге-Кутта. Построить график зависимости с использованием программы Excel..
2. Текст программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication_Lab2
{
class Program
{
static void Main(string[] args)
{
int i, n = 121;
double[] x = new double[n];
double[] y = new double[n];
double[] p = new double[n];
double K1, K2, K3, K4, L1, L2, L3, L4, h = 0.05;
FileStream u = new FileStream("rez.txt", FileMode.Create);
StreamWriter Wr = new StreamWriter(u);
// Задание начальных условий
x[0] = 0;
y[0] = 5;
p[0] = 0;
// Шаговое интегрирование дифференциального уравнения y"+10y=0
for (i = 0; i < n - 1; i++)
{
K1 = h * p[i];
L1 = h * f(x[i], y[i], p[i]);
K2 = h * (p[i] + L1 / 2);
L2 = h * f(x[i] + h / 2, y[i] + K1 / 2, p[i] + L1 / 2);
K3 = h * (p[i] + L2 / 2);
L3 = h * f(x[i] + h / 2, y[i] + K2 / 2, p[i] + L2 / 2);
K4 = h * (p[i] + L3);
L4 = h * f(x[i] + h, y[i] + K3, p[i] + L3);
y[i + 1] = y[i] + (K1 + 2 * K2 + 2 * K3 + K4) / 6;
p[i + 1] = p[i] + (L1 + 2 * L2 + 2 * L3 + L4) / 6;
x[i + 1] = x[i] + h;
}
Console.WriteLine("Дифференциальное уравнение решено: результаты находятся в файле rez.txt");
Console.ReadLine();
// Печать результатов
Wr.WriteLine(" i x y p");
for (i = 0; i < n; i++)
{
Wr.WriteLine("{0:D3} {1:F3} {2:F3} {3:F3}", i, x[i], y[i], p[i]);
}
Wr.Close();
u.Close();
}
// Подпрограмма вычисления правой части уравнения
static double f(double x, double y, double p)
{
return 0 * x - 10 * y + 0 * p;
}
}
}
График зависимости.