Численное нахождение корня уравнения методом Рунге-Кутта

Автор: Пользователь скрыл имя, 03 Апреля 2012 в 14:37, задача

Краткое описание

Решение обыкновенных дифференциальных уравнений методом Рунге-Кутты.

Оглавление

1. Задание для исследования
2. Подробное описание задачи и метод ее решения
2.1 Подробное описание
2.2 Метод решения
3. Результаты исследования
4. Сравнение результатов
Приложение
1 Описание применения
1.1 Техническое задание
1.2 Назначение программы
1.3 Условие применения
2 Программа и методика испытаний
2.1 Объект испытаний
2.2 Цель испытаний
2.3 Требования к программе
2.4 Требования к программной документации
2.5 Средства и порядок испытаний
2.6 Методы испытаний
3 Руководство пользователя
3.1 Назначение программы
3.2 Условия и характеристики выполнения программы
3.3 Выполнение программы
3.4 Входные и выходные данные
3.5 Сборка программы
4 Описание программы
4.1 Функциональное назначение
4.2 Используемые технические средства
4.3 Вызов и загрузка
5 Текст программы

Файлы: 1 файл

Курсовая работа.docx

— 165.69 Кб (Скачать)

 

Содержание

1. Задание для исследования 4

2. Подробное описание задачи и метод ее решения 5

2.1 Подробное описание 4

2.2 Метод решения 5

3. Результаты исследования 6

4. Сравнение результатов 12

Приложение 14

1 Описание применения 14

1.1 Техническое задание 14

1.2 Назначение программы 14

1.3 Условие применения 14

2 Программа и методика испытаний 16

2.1 Объект испытаний 16

2.2 Цель испытаний 16

2.3 Требования к программе 16

2.4 Требования к программной документации 16

2.5 Средства и порядок испытаний 16

2.6 Методы испытаний 16

3 Руководство пользователя 18

3.1 Назначение программы 18

3.2 Условия и характеристики выполнения программы 18

3.3 Выполнение программы 18

3.4 Входные и выходные данные 18

3.5 Сборка программы 19

4 Описание программы 20

 

4.1 Функциональное назначение 20

4.2 Используемые технические средства 20

4.3 Вызов и загрузка 20

5 Текст программы 21

  1. Задание для исследования

Исследовать решение обыкновенных дифференциальных уравнений методом Рунге-Кутты.

    1. Подробное описание

Метод этот пригоден для решения как одиночных дифференциальных уравнений первого порядка, так и систем уравнений первого порядка.

Пусть есть уравнение  вида

                                         y’=f(x,y)

с начальным  условием

                                         y(x0)=y0

Предполагается, что отрезок [a,b], на котором будет находиться решение этого уравнения, разбит на n равных частей системой точек (сеткой).

xi=x0+ih (i=0,1…..n),  x0=a, xn=b,

На этой сетке  следует найти «развитие» процесса y(x), т.е. решить так называемую задачу Коши.

Применить этот метод для следующей задачи:

Тело с  начальной массой m движется под действием постоянной силы F, при этом масса тела уменьшается со скоростью m’. Сопротивление воздуха пропорционально скорости тела, коэффициент пропорциональности k задан. Соответствующее дифференциальное уравнение, описывающее скорость перемещения тела v(t) имеет вид:

 

 

 

    1. Метод решения

Обозначим через yi приближенное значение искомого решения в точке xi. По методу Рунге-Кутты вычисление приближенного значения yi+1 в следующей точке xi+1=xi+h производится по формулам

                        yi+1=yi+yi,

yi,=(K1i+ K2i +K3i + K4i)

где

K1i =hf(xi, yi),

K2i = hf(xi+h/2, yi+ K1i/2),

K3i= hf(xi+h/2, yi+ K2i/2) 

K4i= hf(xi+h/2, yi+ K3i/2)       

Задача:

Фактически решение этой задачи приближенно описывает движение ракеты, расходующей в полете топливо.

Допустим, что v(0)=0.

Тогда уравнение

 

 

имеет следующее аналитическое решение:

.

Численное решение этого уравнения  вычисляется и сравнивается со значениями, полученными в результате работы программы.

 

 

 

  1. Результаты исследования

    1. Вычисления для следующих входных данных:

F=1000H  m=200 кг   m’=1 кг/сек   k=2   t0=0 сек  V0=0 м/сек

b=50    n=50

V1(t) – результаты, полученные с помощью написанной программы

V2(t) – результаты, полученные способом, опис.  в п. 3.1

V2(t) – результаты, полученные способом, опис.  в п. 3.2

 

 

 

 

 

    1.  Вычисления для следующих входных данных:

F=1000H

m=200 кг

m’=1 кг/сек

k=2

t0=0 сек

V0=0 м/сек

b=50

n=25

 

 

 

    1. Вычисления для следующих входных данных:

F=500H

m=150 кг

m’=2 кг/сек   k=1

t0=1 сек     V0=1м/сек    b=20    n=20

 

    1. Вычисления для следующих входных данных:

F=500H

m=150 кг

m’=2 кг/сек

k=1

t0=1 сек

V0=1м/сек

b=20

n=5

 

  1. Сравнение результатов

В данной работе был исследован метод  Рунге-Кутты четвертого порядка  для решения дифференциальных уравнений. Для этого была написана программа, с помощью которой можно получить решения уравнения данным методом. Результаты, полученные при помощи данной программы сопоставлены с результатами, полученными в системе компьютерной алгебры MathCad 14.

При анализе результатов стоит отметить, что при низкой заданной точности (малое количество отрезков на интервале) у результатов вычислений возникает  серьезная погрешность. Однако, при  высокой точности результаты, полученные с использованием написанной программы  и с помощью системы компьютерной алгебры MathCad 14 практически идентичны, что говорит о том, что написанная программа вполне пригодна для вычислений на высокой точности.

Так же стоит отметить, что метод Рунге-Кутты  достаточно прост для реализации на языках программирования, что, несомненно, можно назвать его преимуществом.

Приложение

  1. Описание применения

    1. Техническое задание

Составить программу решения методом Рунге-Кутты уравнения вида y’=f(x,y)

с начальным  условием

                                         y(x0)=y0

 

Исследование провести на следующем уравнении:

 

    1. Назначение программы

Данная программа предназначена  для решения конкретного дифференциального уравнения первого порядка, приближенно описывающего движение ракеты, для различных заданных входных параметров.

    1. Условие применения

Программа была отлажена и проверена на персональном компьютере c процессором AMD Athlon(tm) 64 X2 Dual Core Processor 4000+, работающем под управлением операционной системы Windows 7 Ultimate, 1 Гб ОЗУ. На других вычислительных установках программа не проверялась.

Для выполнения программы достаточно вычислительной установки типа PC с P2-400, 128MB RAM, 16MB 3D Card , оснащенной любой из следующих операционных систем: Windows NT и выше.

Для компиляции исходного кода в  исполняемый файл  необходим компилятор MS Visual Studio версии 2005 и выше, совместимость с другими компиляторами не гарантируется.

 

  1. Программа и методика испытаний

    1. Объект испытаний

Объектом испытаний является исполняемый модуль программы Runge_Kutt. Программа Runge_Kutt применяется для исследования решения задачи Коши на заданном дифференциальном уравнении первого порядка с заданной точностью.

    1. Цель испытаний

Целью испытаний является проверка точности работы программы на конкретной вычислительной установке.

    1. Требования к программе

Во время испытаний следует  справильное нахождение корней уравнения в каждом из методов.

    1. Средства и порядок испытаний

Для испытания необходимо:

1) Программа Runge_Kutt;

2) ЭВМ, соответствующую указанным выше техническим требованиям.

Необходимо запустить программу Runge_Kutt и следовать действиям представленным в контрольном примере, затем проверить полученный результат.

    1. Методы испытаний

Тестирование работы написанной программы проводилось с помощью  системы компьютерной алгебры MathCad 14. Тестирование проводилось двумя способами:

  1. При использовании встроенной функции rkfixed.
  2. Сравнение результатов численного решения уравнения с аналитическим.

 

  • Описание тестирования с использованием функции rkfixed.
  •  

    Приведем  описание стандартной функции rkfixed с указанием параметров функции.

    rkfixed(y, x1, x2, p, D)

    Аргументы функции:

     y – вектор начальных условий из k элементов (k – количество уравнений в системе);

    x1 и x2 – левая и правая границы интервала, на котором ищется решение ОДУ или системы ОДУ;

    p – число точек внутри интервала (x1, x2), в которых ищется решение;

    D – вектор, состоящий из k-элементов, который содержит первую производную искомой функции или первые производные искомых функций, если речь идет о решении системы.

    Для поставленной задачи запись в среде MathCad в общем виде будет выглядеть следующим образом:

     

     

     

  • Описание тестирования с использованием результатов решения аналитического уравнения.
  •  

    Аналитическое решение исходного уравнения  имеет вид:



     

     

     

     

    Приведем пример вычисления для следующих исходных данных:

    F=1000H;  m=200кг;  m1=1кг/сек;  k=2

     

    1. Руководство пользователя

      1. Назначение программы

    Программа предназначена для нахождения корней уравнений, с заданной точностью и указанным методом.

      1. Условия и характеристики выполнения программы

    Программа была отлажена и проверена на персональном компьютере c процессором AMD Athlon(tm) 64 X2 Dual Core Processor 4000+, работающем под управлением операционной системы Windows 7 Ultimate, ОЗУ 1Гб. На других вычислительных установках программа не проверялась.

    Для выполнения программы достаточно вычислительной установки типа PC с P2-400, 128MB RAM, 16MB 3D Card , оснащенной любой из следующих операционных систем: Windows NT и выше.

      1. Выполнение программы

    Для выполнения программы Runge_Kutt необходимо открыть директорию, в которой находится программа, и использовать (двойной или одиночный клик, в зависимости от настроек ОС) для запуска файл Runge_Kutt.exe. После чего должна запуститься данная программа.

      1. Входные и выходные данные

    Входные данные поступают с клавиатуры. После  ввода требуемой величины необходимо нажать Enter. Входными данными являются:

     

     

    -Сила, действующая на тело

    -Масса тела

    -Скорость изменения массы 

    -Начальная скорость тела,

    -Время начала отсчета,

    -Правая граница интервала, на котором ищется решение уравнения

    -Количество отрезков на  интервале, на котором ищется решение

     

    Пример  входных данных:

     

     

     

     

     

    Выходными данными является файл в программе MS Excel, где в свою очередь строятся графики.

      1. Сборка программы

    Сборка программы осуществляется путем компиляции и компоновки файла  с исходным текстом программы Runge, stdlib.h, stdio.h, locale.h, math.h, string.h, stdafx.h, iostream в среде компилятора MS Visual Studio.

    1. Описание программы

      Программа написана на языке С++ и является консольным приложением.

    Программа позволяет получить решение вышеуказанного уравнения  при введенных с клавиатуры параметрах:

     

    -Сила, действующая на тело

    -Масса тела

    -Скорость изменения массы 

    -Начальная скорость тела,

    -Время начала отсчета,

    -Правая граница интервала, на котором ищется решение уравнения

    -Количество отрезков на  интервале, на котором ищется решение

     

    Для выполнения программы достаточно вычислительной установки типа PC с P2-400, 128MB RAM, 16MB 3D Card , оснащенной любой из следующих операционных систем: Windows NT и выше.

    4.1.Функциональное назначение

    Программа Runge_Kutt предназначена для нахождения корней уравнений.

    Программа может значительно сократить  время расчета, а также построения зависимостей.

    4.2.Используемые технические средства

    Для выполнения программы достаточно вычислительной установки типа PC с P2-400, 128MB RAM, 16MB 3D Card , оснащенной любой из следующих операционных систем: Windows NT и выше.

       4.3.Вызов и загрузка

    Для запуска программы Runge_Kutt необходимо открыть директорию, в которой находится программа, и использовать (двойной или одиночный клик, в зависимости от настроек ОС) для запуска файл Runge_Kutt.exe. После чего должна запуститься данная программа.

     

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

    // runge_kutta.cpp : Defines the entry point for the console application.

    //

     

    #include "stdafx.h"

    #include <stdio.h>

    #include <math.h>

    #include <stdlib.h>

    #include <locale.h>

    #include "iostream"

    using namespace std;

     

    float f(float x, float y, int F, int k, int m, int m1, int v0)

    {

    float Fr;

    Fr=(F-k*y)/(m-x*m1);

    return Fr;

    }

     

    void main()

    { setlocale( LC_ALL, "Russian" );

    float x[1000], y[1000], d, K1, K2,K3,K4;

    double h,b,t,n;

    int v0, k, m, m1, F, i;

    printf("Введите начальную скорость V(0)  ");

         cin>>v0;

         printf("Введите коэфициент k  ");

         cin>>k;

         printf("Введите время t0  ");

         cin>>t;

    Информация о работе Численное нахождение корня уравнения методом Рунге-Кутта