16236

Визуализация численных методов

Курсовая

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

Курсовая работа Визуализация численных методов Cсодержание Содержание Введение 1. Постановка задачи и математическая модель 2. Описание используемых методов 3. Блоксхемы основных процедур 4. Виды формы проекта 5.Листинг программы на языке Visual Basic 6.Ре

Русский

2013-06-20

449.83 KB

4 чел.

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

Визуализация численных методов


Cсодержание

Содержание

Введение

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

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

3. Блок-схемы основных процедур

4. Виды формы проекта

5.Листинг программы на языке Visual Basic

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

Вывод


Введение

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

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

 Целью курсовой работы является решение дифференциального уравнения 1-го порядка  на отрезке  методом Эйлера и методом Рунге-Кутта четвёртого порядка. Выполнив все расчёты выяснить, какой из методов более точный, сравнив выведенные значения с общим решением.


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

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

  

Дифференциальное уравнение

X0

Xk

h

Y0

Общее решение

y`+2*x*y=x*exp(-x2)

0

1

0,1

1

y=exp(-x2)*(C+x2/2)


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

Метод Эйлера модифицированный

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

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

.

Выберем шаг =0,1 и введём обозначения:

и , где =0,1,2…,

        -узлы сетки,

        -значение интегральной функции в узлах.

При использовании модифицированного метода Эйлера шаг делится на два отрезка.

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

Для большего уменьшения погрешности используется метод Рунге-Кутта.

Пусть дано дифференциальное уравнение первого порядка     с начальным условием .

Выберем шаг =0,1 и введём обозначения:

и , где =0,1,2…,

      -узлы сетки,

      -значение интегральной функции в узлах.

     

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

, где

     ,

А числа    на каждом шаге вычисляются по формулам:

Метод Рунге-Кутта даёт погрешность меньше, чем методы Эйлера и Эйлера модифицированного.

 


3. Блок-схемы основных процедур 

3.1. Блок-схема основной процедуры


3.2. Блок-схема функции

4.Виды формы проекта

Исходный вид для ввода данных


Итоговый вид с решением и графиком


5.Листинг программы на языке Visual Basic

Dim X() As Single

Dim Y() As Single

Dim g() As Single

Dim t() As Single

Private n, i As Integer

Private xk, x0, kx, ky As Single

Private k, k1, k2, k3, k4 As Single

Private h, max, min, y0 As Single

Private Function f(a, b As Single) As Single

f = a * Exp(-a ^ 2) - 2 * a * b

End Function

Private Sub EilerMod()

ReDim Y(n)

Y(0) = y0

For i = 0 To n - 1

Y(i + 1) = Y(i) + h * f(X(i) + h / 2, Y(i) + h / 2 * f(X(i), Y(i)))

Next i

End Sub

Private Sub RungeKutt()

ReDim g(n)

g(0) = y0

For i = 0 To n - 1

k1 = h * f(X(i), g(i))

k2 = h * f(X(i) + h / 2, g(i) + k1 / 2)

k3 = h * f(X(i) + h / 2, g(i) + k2 / 2)

k4 = h * f(X(i) + h, g(i) + k3)

k = (k1 + 2 * k2 + 2 * k3 + k4) / 6

g(i + 1) = g(i) + k

Next i

End Sub

Private Sub Obchee()

ReDim t(n)

For i = 0 To n

t(0) = y0

c = 1

t(i) = Exp(-X(i) ^ 2) * (c + (X(i) ^ 2) / 2)

Next i

End Sub

Private Sub Command1_Click()

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

h = Val(Text3.Text)

y0 = Val(Text4.Text)

n = (xk - x0) / h

MSFlexGrid1.Rows = n + 4

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

MSFlexGrid1.TextMatrix(0, 1) = "Эйлер Модиф."

MSFlexGrid1.TextMatrix(0, 2) = "Рунге-Кутт"

MSFlexGrid1.TextMatrix(0, 3) = "Общее решение"

MSFlexGrid1.TextMatrix(1, 0) = Str(x0)

MSFlexGrid1.TextMatrix(0, 1) = Str(y0)

ReDim X(n)

For i = 0 To n

X(i) = x0 + h * i

Next i

EilerMod

RungeKutt

Obchee

For i = 0 To n

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

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

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

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

Next i

max = y0

min = y0

For i = 0 To n

If Y(i) > max Then max = Y(i)

If Y(i) < min Then min = Y(i)

If g(i) > max Then max = g(i)

If g(i) < min Then min = g(i)

If t(i) > max Then max = t(i)

If t(i) < min Then min = t(i)

Next i

Label7.Caption = Str(max)

Label8.Caption = Str(min)

Label9.Caption = Str(x0)

Label10.Caption = Str(xk)

kx = (6600 - 360) / (xk - x0)

ky = (5280 - 480) / (max - min)

Picture1.Cls

For i = 1 To n - 1

X1 = 840 + Round(kx * (X(i - 1) - x0))

X2 = 840 + Round(kx * (X(i) - x0))

Y1 = 5280 - Round(ky * (Y(i - 1) - min))

Y2 = 5280 - Round(ky * (Y(i) - min))

Picture1.Line (X1, Y1)-(X2, Y2), RGB(9999, 0, 0)

X1 = 840 + Round(kx * (X(i - 1) - x0))

X2 = 840 + Round(kx * (X(i) - x0))

Y1 = 5280 - Round(ky * (g(i - 1) - min))

Y2 = 5280 - Round(ky * (g(i) - min))

Picture1.Line (X1, Y1)-(X2, Y2), RGB(0, 9999, 0)

X1 = 840 + Round(kx * (X(i - 1) - x0))

X2 = 840 + Round(kx * (X(i) - x0))

Y1 = 5280 - Round(ky * (t(i - 1) - min))

Y2 = 5280 - Round(ky * (t(i) - min))

Picture1.Line (X1, Y1)-(X2, Y2), RGB(0, 0, 9999)

Next i

End Sub

Private Sub Command2_Click()

End

End Sub


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


Вывод

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

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

 

.


 

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

20615. Анализ потока 121.5 KB
  Управление распределением памяти и сборка мусора Задачи решаемые компиляторами: выделение памяти инициализация выделенной памяти некоторыми начальными значениями предоставление возможности программисту использования этой памяти при прекращении использования памяти ее освобождение обеспечение повторного использования освобождающей памяти. Проблемы управления памятью: ограниченность памяти ошибки явного управления памятью особенности возникновения ошибок при работе с памятью труднонаходимость проблема освобождения ресурсов...
20616. Фазы трансляции 328 KB
  Группы символов соответствующие элементам языка называются токенами. Контекстносвободная грамматика имеет 4 компоненты: множество токенов терминальных символов множество нетерминальных символов множество продукций где слева всегда нетерминал а справа последовательность терминалов нетерминалов указание одного из нетерминалов в качестве стартового символа грамматики. На вход лексического анализатора поступает цепочка символов. Каждый шаг переключение автомата состоит в том что при нахождении в определенном состоянии при...
20617. Магазинные автоматы 86.5 KB
  I входная строка I текущий символ входной строки M стек M символ в вершине стека pushM операция записи в стек popM операция выталкивания из стека M=0 проверка стека на пустоту I=0 проверка на пустоту входной строки nextI переход к следующему символу в строке {Si} множество состояний конечного автомата Текущее состояние автомата описывается тремя системами: Si M I При переводе автомата в новое состояние получим Si M ISj . Если текущий символ строки совпадает с символом в вершине...
20618. Восходящий синтаксический метод 180.5 KB
  Значения атрибутов вычисляются согласно семантическим правилам которые связаны с продукциями грамматики. В этом обобщении с каждым грамматическим символом связываются множество атрибутов. Синтезируемые атрибуты Наследуемые атрибуты каждому символу грамматики можно поставить ряд атрибутов Синтезируемые атрибуты значение вычисляется по значению атрибутов в дочерних по отношению к данному узлу узлах. Наследуемые атрибуты значение определяется значением атрибутов соседних узлов и родительского узла.
20619. Синтаксическое дерево 93.5 KB
  Синтаксическое дерево. Синтаксическое дерево представляет собой дерево синтаксического разбора сжатом виде и может быть построено на основе синтаксически управляемых определений. Грамматическое правило Семантическое правило Синтаксическое дерево узлы которого могут иметь одного родителя называется направленным ациклическим графом выражений DAG. Для ускорения поиска используется ХЭШ функция по сигнатуре op l r Пример: Построить дерево синтаксического разбора синтаксическое дерево и DAG для выражения.
20620. Семантический анализ 144.5 KB
  Генерация промежуточного кода Основные формы промежуточного кода6 Для примитивных трансляторов используется синтаксическое дерево или DAG Постфиксная запись Трехадресный код: x:=y op z Пример: синтаксическое дерево t1=c t2=bt1 t4=c t5=bt4 t3=t5t2 a=t3 DAG t1=c t2=bt1 t3=t2t2 a=t3 постфиксная запись Трехадресный код представляет собой выражение типа Типы трехадресных конструкций инструкции присвоения где op арифметическая или логическая операция где op унарная операция инструкции копирования инструкции...
20621. Этап генерация кода исполняемой машины 58 KB
  1 a:=bc d:=ac mov R0 b add R0 c → mov a R0 mov R0 b add R0 c mov d R0 2 t:=ab t:=tc t:=t d mov R0 a add R0 b mov R1 c mul R0 R1 mov R1 d div R0 R1 mov t R0 не помещая переменные в регистры Характеристики описывающие целевую машину: набор инструкций вида op destination source способы адресации прямая регистровая абсолютная косвенная Адресация Обозначение Адрес Добавочная стоимость абсолютная регистровая индексированная косвеннорегистровая косвенноиндексированная константа в команде M R CR R CR C M...
20622. Базовые блоки 111.5 KB
  Говорят что трехадресная инструкция вида определяет x и использует y и z. Выход: список базовых блоков такой что каждая трех адресная инструкция принадлежит только одному блоку. Правила: первая инструкция является лидером. любая инструкция являющаяся целевой инструкцией условного или безусловного переходов является лидером.
20623. Многообразие и единство мира 92 KB
  Элементарные частицы фундаментальные частицы и частицы переносчики фундаментальных взаимодействий3. В соответствии с этими представлениями выделяются следующие уровни: Уровни Условные границы Размер м Масса кг Микромир r =108 m = 1010 Макромир r 108 107 m 1010 1020 Мегамир r 107 m 1020 Понятие микромир охватывает фундаментальные и элементарные частицы ядра атомы и молекулы. Элементарные частицы фундаментальные частицы и частицы переносчики фундаментальных взаимодействий Элементарные частицы это частицы входящие в состав...