30060

Визуализация численных методов путем написания программы на языке Visual Basic проверки решения с помощью приложения MathCAD

Книга

Информатика, кибернетика и программирование

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

Русский

2016-08-04

144.5 KB

19 чел.

СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ

УРАЛЬСКИЙ ТЕХНИЧЕСКИЙ ИНСТИТУТ СВЯЗИ И

ИНФОРМАТИКИ

ФАКУЛЬТЕТ ТЕЛЕКОММУНИКАЦИЙ, ИНФОРМАТИКИ И УПРАВЛЕНИЯ

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

по информатике

на тему:

Визуализация численных методов. Решение обыкновенных дифференциальных  уравнений.

Руководитель:                                                                          Выполнил:

Минина Е. Е.                                                                             Садовой К.С.                                                                                         Группа №  ОЕ-71

Екатеринбург 2008г.

Содержание

Техническое задание…………………………………..………….-3-

1.Введение…………………………………………………………-4-

2.Постановка задачи………………………………………………-5-

3.Описание используемых методов……..……………………….-7-

4. Формы.………………………………………….………………-10-

5.  Блок-схемы ………………………………….…………...……-11-

6.  Решение задачи в MathCAD…………………………….....…-15-

7.Листинг программы……………………………………...……..-16-

8.Заключение……………………..……………………....………..-18-

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

Решить дифференциальное уравнение

                             y' + y = cos(x)

c начальным условием y0 = 1 и общим решением

на отрезке х0 = 0  до хk =   с шагом h =  методом Эйлера и Рунге-Кутта.. 

Введение

Курсовой проект является важнейшей составляющей курса и первой объемной самостоятельной инженерно-расчетной работой студента. Курсовой проект завершает подготовку по дисциплине «Информатика» и становится базой для выполнения последующих курсовых проектов по специальным дисциплинам.

Темой курсового проекта является «Визуализация численных методов» путём:

  •  написания программы на языке Visual Basic;
  •  проверки решения с помощью приложения MathCAD.

В ходе выполнения курсовой работы предполагается решение дифференциального уравнения с помощью численных методов:

  •  метода Эйлера или метода Рунге-Кутта 1 порядка точности;
    •  метода Рунге-Кутта 4 порядка точности.

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

Если искомая функция зависит от одной переменной, то дифференциальное уравнение называют обыкновенным; в противном случае – дифференциальное уравнение в частных производных. В данной курсовой работе рассматриваются методы решения обыкновенных дифференциальных уравнений.

Актуальность курсового проекта: в настоящее время можно решать дифференциальные уравнения с помощью различных приложений. Существует множество математических пакетов, например, MathCAD, Mathematica и другие, позволяющих решать дифференциальные уравнения. Не сложно решить их и в среде программирования Visual Basic, причем Visual Basic позволяет решать уравнения разными методами с требуемой точностью и представить результаты также наглядно, как и в математических пакетах.

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

В курсовой работе необходимо двумя методами (Эйлер, Рунге-Кутта) решить задачу Коши для дифференциального уравнения 1-го порядка y'+y=cos(x)   на отрезке [0,π/2] с шагом h=π/10 и начальным условием Y(X0)=Y0(1), Y0=1,  

Ответ должен быть получен в виде таблицы результатов:

X

Y(1)

Y(2)

Y(T)

X0

Y0(1)

Y0(2)

Y(X0)

X1

Y1(1)

Y1(2)

Y(X1)

Xk

Yk(1)

Yk(2)

Y(Xk)

Где: Y(1) , Y(2) - решения, полученные различными численными методами,

Y(T) – точное решение дифференциального уравнения.

Возможно представление результатов решения не в виде таблицы, а в виде списков.

Данные таблицы визуализировать на форме в виде графиков.

Перед вычислением последнего столбца таблицы результатов необходимо из начальных условий вычислить значение коэффициента С, используемого в общем решении.

Входные данные: x0, xk, y0, h.

Выходные данные: массив значений y в каждой точке узла.

3.Описание используемых методов

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

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

3.1 Метод Эйлера

Иногда  этот  метод  называют   методом  Рунге-Кутта  первого   порядка точности.

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

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

  •  Строим оси координат;
  •  Отмечаем точку A(1; 1) – первую точку интегральной кривой;
  •   Ищем угол наклона касательной к графику в точке A:

  •  Строим касательную AB в точке А под углом α0;
  •  Находим х1 по формуле: xi = х0 + ih, где h – шаг интегрирования

x1 = 1 + 1 · 0,1 = 1,1;

  •  Проводим прямую x = x1 = 1,1  до пересечения с прямой AB, отмечаем точку B(x1; y1);
  •  Ищем  y1:

Из прямоугольного треугольника ABC ,

Δy = y1 y0,

 y1 y0= Δx· tg α0

Δx = x1 – x0 = h => y1 = y0 + h · (f(x0; y0)) = 4 + 0,1  f(1;4) = 4 + 0,1 · 1,718 = 1,172

Следовательно, точка B имеет координаты (1,1; 1,172).

Следующую точку будем искать аналогичным способом по формуле расчета очередной точки интегральной функции:

(*)

Рис1. Решение задачи методом Эйлера.

Из формулы (*) видно, что для расчета каждой следующей точки интегральной функции необходимо знать значение только одной предыдущей точки. Таким образом, зная начальные условия, можно построить интегральную кривую на заданном промежутке.

Метод Эйлера - один из простейших методов численного решения обыкновенных дифференциальных уравнений. Но существенным его недостатком является большая погрешность вычислений.

3.2 Метод Рунге-Кутта

 

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

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

  •  Строим оси координат;
  •  Отмечаем А(1; 1) – первую точку интегральной кривой;
  •  Ищем угол наклона касательной к графику в точке A:

  •  Строим касательную AB в точке А под углом α0;
  •  Находим х1 по формуле: xi = х0 + ih, где h – шаг интегрирования

x1 = 1 + 1 · 0,1 = 1,1;

  •  Делим шаг интегрирования на четыре отрезка и отмечаем x1/4= x0 + h/4, проводим прямую из этой точки  до прямой AB, отмечаем точку B(x1/4; y1/4);
  •  Ищем координаты В:

x1/4 = x0 + h/4 = 1 + 0,1/2 = 1,05

y1/4 = y0 + h/4 · f(x0; y0) = 1 + 0,1/2 · 1,718 = 1,086

Следовательно, точка B имеет координаты (1,05; 1,086);

Ищем угол наклона касательной к графику в точке B:

α1 = arctg(f(x1/4; y1/4)) = arctg(( 1,718– 1,086)/1,05)) = arctg(1,687) = 59,3°

  •  Строим касательную BC в точке B под углом α1;
  •  Проводим прямую x1 = 1,1 до пересечения с прямой BC,   отмечаем точку C с координатами (x1; y1);
  •  Ищем y1 :

y1 = y1/4 + h/4(f(x1/4;y1/4)) = 1,086 + 0,1/2 · 1,687 = 1,169

Следовательно, точка C имеет координаты (1,1; 1,169).

yi+1 = yi + hf(xi + h/4, yi + h/4 ∙ f(xi, yi))

Рис2.  Решение задачи методом Рунге-Кутта

4. Формы

   

6.Решение задачи в MathCad

7.Листинг программы

Dim x(50) As Single

Dim y(50) As Single

Dim y1(50) As Single

Dim y2(50) As Single

Private y0 As Single

Private x0 As Single

Private xk As Single

Function f(l As Single, q As Single) As Single

f = Cos(l) - q

End Function

Private Sub Command1_Click()

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

y0 = Val(Text4.Text)

h = Val(Text3.Text)

N = Round((xk - x0) / h)

MSFlexGrid1.Rows = N + 2

MSFlexGrid1.TextMatrix(0, 0) = "X"

MSFlexGrid1.TextMatrix(0, 1) = "Ye"

MSFlexGrid1.TextMatrix(0, 2) = "Yrk"

MSFlexGrid1.TextMatrix(0, 3) = "Yt"

Max = 1

Min = 0.55

y(0) = y0

y1(0) = y0

y2(0) = y0

For i = 0 To N

x(i) = x0 + i * h

y(i + 1) = Round(y(i) + f(x(i), y(i)) * h, 4)

K1 = h * f(x(i), y1(i))

K2 = h * f(x(i) + h / 2, y1(i) + K1 / 2)

K3 = h * f(x(i) + h / 2, y1(i) + K2 / 2)

K4 = h * f(x(i) + h, y1(i) + K3)

K = (K1 + 2 * K2 + 2 * K3 + K4) / 6

y1(i + 1) = y1(i) + K4

y2(i) = Round(0.5 * Exp(-x(i)) + ((Cos(x(i)) + Sin(x(i))) / 2), 4)

If y(i) > Max Then Max = y(i)

If y(i) < Min Then Min = y(i)

MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))

MSFlexGrid1.TextMatrix(i + 1, 1) = Str(y(i))

MSFlexGrid1.TextMatrix(i + 1, 2) = Str(y1(i))

MSFlexGrid1.TextMatrix(i + 1, 3) = Str(y2(i))

Next i

Picture1.Cls

kx = (Picture1.Width - 1200) / (xk - x0)

ky = (Picture1.Height - 1000) / (Max - Min)

Label4.Caption = Str(Min)

Label5.Caption = Str(Max)

Label6.Caption = Str(x0)

Label7.Caption = Str(xk)

For i = 0 To N - 1

z1 = Round(720 + (x(i) - x0) * kx)

z2 = Round(5400 - (y(i) - Min) * ky)

z3 = Round(5400 - (y1(i) - Min) * ky)

z4 = Round(5400 - (y2(i) - Min) * ky)

z5 = Round(720 + (x(i + 1) - x0) * kx)

z6 = Round(5400 - (y(i + 1) - Min) * ky)

z7 = Round(5400 - (y1(i + 1) - Min) * ky)

z8 = Round(5400 - (y2(i + 1) - Min) * ky)

Picture1.Line (z1, z2)-(z5, z6), vbGreen

Picture1.Line (z1, z3)-(z5, z7), vbRed

Picture1.Line (z1, z4)-(z5, z8)

Next i

End Sub

Private Sub Command2_Click()

End

End Sub


8.Заключение

В ходе выполнения курсовой работы  я решила дифференциальное уравнение с помощью численных методов:

а) метода Эйлера или метода Рунге-Кутта 1 порядка;

б) метода Рунге-Кутта 4 порядка.

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

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

В пояснительной записке приведены блок-схемы основных процедур, листинг и формы программы на языке Visual Basic.

Правильность решения проверила с помощью математического пакета MathCAD.


 

А также другие работы, которые могут Вас заинтересовать

32505. ПРЕПОДАВАНИЕ БАЗОВОГО КУРСА ИНФОРМАТИКИ В СРЕДНИХ УЧЕБНЫХ ЗАВЕДЕНИЯХ 47 KB
  Среди них: теория информации теория алгоритмов теоретическая кибернетика математическое и информационное моделирование дискретная математика искусственный интеллект и др. К аппаратным средствам относятся компьютеры технические средства хранения и отображения информации передачи данных по сетям. Она заключается в формировании представлений об информации информационных процессах как одного из трех основополагающих понятий: вещества энергии информации на основе которых строится современная научная картина мира. В этом отношении...
32506. МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: «ИНФОРМАЦИЯ И ИНФОРМАЦИОННЫЕ ПРОЦЕССЫ». 83 KB
  Ключевыми вопросами данной содержательной линии являются: определение информации; измерение информации; хранение информации; передача информации; обработка информации. Проблемы определения и измерения информации Нельзя дать единого универсального определения информации. Но в науке и в практике известны различные подходы к информации и в рамках каждого из них дается определение этого понятия Субъективный подход. При раскрытии понятия информация с точки зрения субъективного бытового человеческого подхода следует отталкиваться...
32507. МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: «АРИФМЕТИЧЕСКИЕ ОСНОВЫ КОМПЬЮТЕРА» 63.5 KB
  Система счисления это определенный способ представления чисел и соответствующие ему правила действия над числами. Римский способ записи чисел является примером непозиционной системы счисления а арабский это позиционная система счисления. Позиционных систем счисления существует множество и отличаются они друг от друга алфавитом множеством используемых цифр. Размер алфавита число цифр называется основанием системы счисления.
32508. МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: «КОМПЬЮТЕР» 142 KB
  Одна из содержательных линий базового курса информатики линия компьютера. Линия компьютера проходит через весь курс и по двум целевым направлениям: 1 теоретическое изучение устройства принципов функционирования и организации данных в ЭВМ; 2 практическое освоение компьютера; получение навыков применения компьютера для выполнения различных видов работы с информацией. Представление данных в компьютере Информация хранимая в памяти компьютера и предназначенная для обработки называется данными. Для представления всех видов данных в памяти...
32509. МЕТОДИКА ВВЕДЕНИЯ ПОНЯТИЯ АЛГОРИТМИЗАЦИЯ С ПОМОЩЬЮ УЧЕБНЫХ ИСПОЛНИТЕЛЕЙ 134.5 KB
  Основной характеристикой исполнителя с точки зрения управления является система команд исполнителя СКИ. Схема функционирования исполнителя алгоритмов Для выполнения всякой работы решения поставленной задачи исполнитель на входе получает алгоритм и исходные данные а на выходе получаются требуемые результаты. Всякая команда должна быть сформулирована так чтобы определить однозначное действие исполнителя. Работа исполнителя состоит в последовательном выполнении команд алгоритма.
32510. МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: «ФОРМАЛИЗАЦИЯ И МОДЕЛИРОВАНИЕ» 80 KB
  Теория и методика обучения информатики МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: ФОРМАЛИЗАЦИЯ И МОДЕЛИРОВАНИЕ. Линия моделирования наряду с линией информации и информационных процессов является теоретической основой базового курса информатики. Тема натуральных моделей затрагивается лишь в самом начале в определением понятия модели и разделением моделей на материальные натурные и информационные. Важнейшим понятием в моделировании является понятие цели.
32511. МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: «ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ КОМПЬЮТЕРНЫЕ СЕТИ. ИНТЕРНЕТ» 81.5 KB
  Теория и методика обучения информатики МЕТОДИКА ИЗУЧЕНИЯ СОДЕРЖАТЕЛЬНОЙ ЛИНИИ: ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ КОМПЬЮТЕРНЫЕ СЕТИ. Содержание данного подраздела делится на две части по принципу деления компьютерных сетей на два типа: локальные сети; глобальные сети. Локальные сети. Локальные сети в зависимости от назначения и технических решений могут иметь различные структуры объединения компьютеров.
32512. ДИСТАНЦИОННЫЕ ОЛИМПИАДЫ ПО ИНФОРМАТИКЕ 145.5 KB
  Избранные вопросы методики преподавания информатики ДИСТАНЦИОННЫЕ ОЛИМПИАДЫ ПО ИНФОРМАТИКЕ Дистанционные олимпиады по информатике этапы их проведения. Целью проведения компьютерной дистанционной олимпиады по какомулибо предмету школьной подготовки является улучшение преподавания этого предмета. Это улучшение достигается благодаря стимулирование интереса к изучаемому предмету с помощью Интернеттехнологий и использования сравнительного аспекта обучения; внедрение в учебную практику новых и эффективных методов обучения; методической...
32513. ГОРОДСКИЕ ОЛИМПИАДЫ И ПОДГОТОВКА К НИМ 388 KB
  Избранные вопросы методики преподавания информатики ГОРОДСКИЕ ОЛИМПИАДЫ И ПОДГОТОВКА К НИМ Олимпиадная информатика . Олимпиады это тот срез в образовании который проверяет не только владение предметом но и формирует тенденции развития этого предмета определяет требования к школе через этот предмет со стороны общества то есть то что называют социальным запросом. Школьные олимпиады по информатике как по содержанию так и по методике проведения можно считать сформировавшимся явлениям. Олимпиады по информатике Олимпиады...