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

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

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024

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

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

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

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

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

ИНФОРМАТИКА

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

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

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

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

Группа ТЕ-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. 101 Россия Челябинск Введение- Некоторые страны представляются нам хорошо знакомыми
3. 2013 г ХАРАКТЕРИСТИКА Слушателястажёра в должности начальнирка дежурной смены караула Не
4. Первомайская сош Первомайского района Тамбовской области Халяпина Л.1
5. на тему Влияние личностных характеристик на поведение в конфликтной ситуации и возможности коррекции этого
6. Тема Розташування України на планеті Земля Мета- продовжувати формувати уявлення про глобус і карти пр
7. . Экологические проблемы питания 11
8. Контрольна робота з дисципліни ldquo;БАНКІВСЬКИЙ ОБЛІК І АУДИТ rdquo; з спеціальності Банківська і ст
9.  Обратная сила действия международных договоров по авторскому праву
10. Тема- Воспроизводство населения Задание 2
11. Разработка программы формирования нравственно-эстетической культуры подростков
12. .1. Настоящая инструкция регламентирует основные требования безопасности при выполнении слесарных работ по
13. Безстикова колія зі зрівнювальними рейками
14. тематически изложить его довольно сложно так как приходится реконструировать мысли Платона из отдельных вы
15. Контрольные вопросы Какие реакции называются необратимыми Приведите примеры
16. 2012г Методы и средства защиты информации Электронная цифровая подпись Методи
17. тема диспетчерского управления Автоматизированная система диспетчерского управления пассажирским т
18. Природа издержек 2
19. дополнить марксизм подведя под него фундамент экзистенциалистской антропологии и психоанализа
20. Женщины в древнем мире