Будь умным!


У вас вопросы?
У нас ответы:) SamZan.ru

Курсовой проект является важнейшей составляющей курса и первой объемной самостоятельной инженернорасчетно

Работа добавлена на сайт samzan.ru: 2015-07-05


Министерство информационных технологий и связи РФ

Федеральное агентство связи

ГОУ ВПО «Сибирский государственный университет

Телекоммуникаций и информатики»

Уральский технический институт связи и информатики (филиал)

ИНФОРМАТИКА

ВИЗУАЛИЗАЦИЯ ЧИСЛЕННЫХ МЕТОДОВ.

РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

Доцент________ Минина Е. Е.

Студент_________ Быстров С. А.

Группа ТЕ-71

4.05.2008

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


Введение

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

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

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

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

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

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


Метод Эйлера

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

Данный метод одношаговый. Табулирование функции происходит поочередно в каждой точке. Для расчета значения функции в очередном узле необходимо использовать значение функции в одном предыдущем узле. Дано дифференциальное уравнение первого порядка  y`=(3*y)/x с начальным условием y(1)=2. Выберем шаг h=0.05 и введем обозначения:xi=x0+i*h и yi=y(xi), где  i=0,1,2,… , где xi – узлы сетки, yi – значение интегральной функции в узлах. Иллюстрация к решения приведена на рис. 1. Проведем прямую АВ через точку (xi,yi) под углом α. При этом tg α=(3*yi)*xi. (1)

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

Тогда yi+1= yiy. (2)

Из прямоугольного треугольника АВС tg α.= Δy/h. (3)

Приравняем правые части (1) и (3). Получим Δy/h=(3*yi)*xi.

Отсюда Δy=h*(3*yi)*xi.

Подставим в это выражение формулу (2), а затем преобразуем его. В результате получаем формулу для расчета очередной точки интегральной функции:

yi+1= yi+ h*(3*yi)*xi. (4)

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

По аналогии с общим примером найдем первую точку для нашего примера. Найдем tg(α0)=f(x0,y0)=6, где α0 – угол наклона касательной. Найдем x1=x0+h=1.05, где x0 – начальное условие, а h – шаг. По общей формуле найдем y1=y0+h*tg(α0)=2+0.05*6=2.3, где y0 – начальное условие, y1 – точка, найденная с помощью метода Эйлера. Результаты можно найти на рис. 1.

Блок-схема процедуры решения дифференциального уравнения методом Эйлера приведена на рисунке 2.

Рисунок 2. Блок-схема процедуры решения дифференциального уравнения методом Эйлера.

Входные параметры:

X0,XK – начальное и конечное значения независимой переменной;

Y0 – значение y0 из начального условия y(0)=1;

N – количество отрезков разбиения;

Выходные параметры:

Y – массив значений искомого решения в узлах сетки.

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


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


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

Private kx, ky, h, c, x0, y0, xk, min, max, z1, z2, a1, a2, x, y, a As Single

Private i, n As Integer

Dim x1() As Single

Dim y1() As Single

Dim y2() As Single

Dim y3() As Single

Private Function f(x, y) As Single

f = (3 * y) / x

End Function

Private Sub Eiler()

x = x1(0)

y = y1(0)

MSFlexGrid1.TextMatrix(1, 0) = x

MSFlexGrid1.TextMatrix(1, 1) = y

For i = 1 To n

a = f(x, y)

x1(i) = x1(i - 1) + h

y1(i) = y1(i - 1) + h * a

x = x1(i)

y = y1(i)

MSFlexGrid1.TextMatrix(i + 1, 0) = x1(i)

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

Next i

End Sub

Private Sub EilerM()

x = x1(0)

y = y2(0)

MSFlexGrid2.TextMatrix(1, 0) = x1(0)

MSFlexGrid2.TextMatrix(1, 1) = y2(0)

For i = 1 To n

a = f(x, y)

x = x1(i - 1) + h / 2

y = y2(i - 1) + (h / 2) * a

a = f(x, y)

x1(i) = x1(i - 1) + h

y2(i) = y2(i - 1) + h * a

x = x1(i)

y = y2(i)

MSFlexGrid2.TextMatrix(i + 1, 0) = x1(i)

MSFlexGrid2.TextMatrix(i + 1, 1) = y2(i)

Next i

End Sub

Private Sub Grafic()

Picture1.Cls

kx = (5400 - 240) / (xk - x0)

min = y1(0)

max = y2(0)

For i = 1 To n

If max < y1(i) Then max = y1(i)

If min > y1(i) Then min = y1(i)

Next i

For i = 1 To n

If max < y2(i) Then max = y2(i)

If min > y2(i) Then min = y2(i)

Next i

For i = 1 To n

If max < y3(i) Then max = y3(i)

If min > y3(i) Then min = y3(i)

Next i

ky = (4920 - 120) / (max - min)

For i = 1 To n - 1

z1 = 240 + (x1(i - 1) - x0) * kx

z2 = 240 + (x1(i) - x0) * kx

a1 = 4920 + (y0 - y1(i - 1)) * ky

a2 = 4920 + (y0 - y1(i)) * ky

Picture1.Line (z1, a1)-(z2, a2)

z1 = 240 + (x1(i - 1) - x0) * kx

z2 = 240 + (x1(i) - x0) * kx

a1 = 4920 + (y0 - y2(i - 1)) * ky

a2 = 4920 + (y0 - y2(i)) * ky

Picture1.Line (z1, a1)-(z2, a2)

z1 = 240 + (x1(i - 1) - x0) * kx

z2 = 240 + (x1(i) - x0) * kx

a1 = 4920 + (y0 - y3(i - 1)) * ky

a2 = 4920 + (y0 - y3(i)) * ky

Picture1.Line (z1, a1)-(z2, a2)

Next i

End Sub

Private Sub Chasnoe()

c = y0 / (x0 * x0 * x0)

Label14.Caption = c

For i = 0 To n

y3(i) = c * (x1(i) ^ 3)

MSFlexGrid3.TextMatrix(i + 1, 0) = x1(i)

MSFlexGrid3.TextMatrix(i + 1, 1) = y3(i)

Next i

End Sub

Private Sub Command1_Click()

h = Val(Text1.Text)

x0 = Val(Text2.Text)

xk = Val(Text3.Text)

y0 = Val(Text4.Text)

n = (xk - x0) / h

MSFlexGrid1.Rows = n + 2

MSFlexGrid2.Rows = n + 2

MSFlexGrid3.Rows = n + 2

ReDim x1(n)

ReDim y1(n)

ReDim y2(n)

ReDim y3(n)

x1(0) = x0

y1(0) = y0

y2(0) = y0

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

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

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

MSFlexGrid2.TextMatrix(0, 1) = "y"

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

MSFlexGrid3.TextMatrix(0, 1) = "y"

Eiler

x1(0) = x0

EilerM

Chasnoe

Grafic

Label7.Caption = max

Label8.Caption = min

Label9.Caption = x0

Label10.Caption = xk

End Sub

Private Sub Command2_Click()

End

End Sub


Заключение

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

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

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

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

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

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


Eiler(X0,XK,Y0,N,Y)

h= (XK-X0/N)

i= 0, … , N-1

i= X0+i*h

Yi+1= Yi+ h*(3*Yi)/Xi

End

y´(x)=(3*y)/x

Рис. 1. Метод Эйлера.




1. Модуль 2 Патент в інноваціях ~ це- документ що засвідчує право власності на щонебудь; свідчення
2. Вариант V 254.Отметьте особенности строения нервной системы ланцетника- 1
3. Моя безбожная Россия, священная моя страна
4. Античне красномовство
5. Реферат- Монако
6. Модуль 2 3 курс лечебный факультет вопросы на 3 1
7. Загальна характеристика витрат на вирбництво продукції надання послуг Витрати виникають в процесі форму
8. ГорноАлтайский государственный университет Юридический факультет Кафедра уголовного административн
9. Интеграция стран Западной Европы- взгляд в будущее
10. БудСтрой является выпуск такой продукции как окна двери витражи и прочие металлопластиковые ограждающие
11. Уменьшение количества льда в Антарктиде связано с глобальным потеплением За последние полвека темпер
12. аналітичні аспекти мистецтвознавства Інструментальні методи дослідження в митній справі Ідентифіка
13. и микро количественный анализ
14. мм боковые края языка прижаты к верхним коренным зубам кончик языка касается резцов средняя часть спинк
15.  Пиковые нагрузки их определение
16. Лабораторна робота 2 ПРИГОТУВАННЯ РЕПЛІК ДЛЯ ЕЛЕКТРОННОМІКРОСКОПІЧНИХ ДОСЛІДЖЕНЬ Техніка без
17. зображення коїтальних дій групового характеру з повною або фрагментарною частковою неакцентованою демон
18. Вариант 3 Тест 1
19. тема комплекс взаимосвязанная совокупность принципов и подходов исследовательской деятельности на котор
20. Бухгалтерский учет на предприятии ООО Сямженские молочные продукты