Выполнил студент гр. СТ-15 Петров А.И

ЗАДАНИЕ 2: Численное решение дифференциального

Уравнения второго порядка методом Рунге-Кутта

Постановка задачи

Решить численно дифференциальное уравнение второго порядка с заданными начальными условиями для Выполнил студент гр. СТ-15 Петров А.И - student2.ru , шагом Выполнил студент гр. СТ-15 Петров А.И - student2.ru (табл. 1) и числе шагов Выполнил студент гр. СТ-15 Петров А.И - student2.ru методом Рунге-Кутта. Построить график зависимости Выполнил студент гр. СТ-15 Петров А.И - student2.ru с помощью программы Excel.

Содержание отчета

1. Постановка задачи для конкретного варианта.

2. Текст программы.

3. График зависимости Выполнил студент гр. СТ-15 Петров А.И - student2.ru , построенный с использованием программы Excel.

Методические указания

Результаты вычислений помещаются в файл rez.txt. При открытии данного файла с помощью программы Excel использовать опции мастера текстов, указанные ниже.

Выполнил студент гр. СТ-15 Петров А.И - student2.ru

Выполнил студент гр. СТ-15 Петров А.И - student2.ru

Выполнил студент гр. СТ-15 Петров А.И - student2.ru

Выполнил студент гр. СТ-15 Петров А.И - student2.ru

Варианты задания

Табл. 1.

Вариант Дифференциальное уравнение Выполнил студент гр. СТ-15 Петров А.И - student2.ru Выполнил студент гр. СТ-15 Петров А.И - student2.ru Выполнил студент гр. СТ-15 Петров А.И - student2.ru Выполнил студент гр. СТ-15 Петров А.И - student2.ru
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,016
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,016
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,02
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru -50 0,0125
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,01
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,0125
Выполнил студент гр. СТ-15 Петров А.И - student2.ru 0,008

Теория метода Рунге-Кутта

Метод Рунге-Кутта является одним из численных методов повышенной точности. Сначала рассмотрим данный метод на примере дифференциального уравнения первого порядка. Пусть имеется уравнение

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (1)

с начальным условием Выполнил студент гр. СТ-15 Петров А.И - student2.ru . В методе Рунге-Кутта приращение функции Выполнил студент гр. СТ-15 Петров А.И - student2.ru на шаге интегрирования Выполнил студент гр. СТ-15 Петров А.И - student2.ru содержит величину Выполнил студент гр. СТ-15 Петров А.И - student2.ru до четвертой степени включительно:

Выполнил студент гр. СТ-15 Петров А.И - student2.ru . (2)

Поэтому данный метод имеет четвертый порядок точности.

Вместо вычисления Выполнил студент гр. СТ-15 Петров А.И - student2.ru непосредственно по формуле (2) в методе Рунге-Кутта предварительно определяются четыре числа:

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (3)

Эти числа дают Выполнил студент гр. СТ-15 Петров А.И - student2.ru с точностью до Выполнил студент гр. СТ-15 Петров А.И - student2.ru :

Выполнил студент гр. СТ-15 Петров А.И - student2.ru . (4)

Таким образом, получается алгоритм:

Выполнил студент гр. СТ-15 Петров А.И - student2.ru . (5)

Метод Рунге-Кутта можно использовать и для решения уравнений более высокого порядка. Рассмотрим уравнение второго порядка

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (6)

с начальными условиями Выполнил студент гр. СТ-15 Петров А.И - student2.ru , Выполнил студент гр. СТ-15 Петров А.И - student2.ru . Данное уравнение можно заменить системой двух дифференциальных уравнений 1-го порядка:

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (7)

Для интегрирования этой системы вычисляются приращения:

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (8)

где

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (9)

Таким образом, получается алгоритм:

Выполнил студент гр. СТ-15 Петров А.И - student2.ru (10)

Пример оформления отчета

Тема лабораторной работы: численное решение дифференциального

Уравнения второго порядка методом Рунге-Кутта

Вариант 24

Выполнил студент гр. СТ-15 Петров А.И.

1. Постановка задачи: решить численно дифференциальное уравнение второго порядка Выполнил студент гр. СТ-15 Петров А.И - student2.ruс начальными условиями Выполнил студент гр. СТ-15 Петров А.И - student2.ru и шагом Выполнил студент гр. СТ-15 Петров А.И - student2.ru при числе шагов Выполнил студент гр. СТ-15 Петров А.И - student2.ru методом Рунге-Кутта. Построить график зависимости Выполнил студент гр. СТ-15 Петров А.И - student2.ru с использованием программы 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;

}

}

}

График зависимости .

Выполнил студент гр. СТ-15 Петров А.И - student2.ru

Наши рекомендации