Автор работы: Пользователь скрыл имя, 26 Мая 2015 в 22:40, курсовая работа
Существует множество технических систем и технологических процессов, характеристики которых непрерывно меняются со временем t. Такие явления обычно подчиняются физическим законам, которые формулируются в виде дифференциальных уравнений.
Дифференциальными называются уравнения, содержащие одну или несколько производных. Лишь очень немногие из них удаётся решить без помощи вычислительной техники. Поэтому численные методы решения дифференциальных уравнений играют важную роль в практике инженерных расчётов.
Yi+1=Yi+h*f(xi+h/2,Yi+h/2*f(xi
Yi+1
Рисунок 7 – Блок схема вычисления функции по методу Эйлера модифицированного
Рисунок 8. Форма проекта
Рисунок 9. Результат работы программы
Рисунок 10 - Решение задачи в MathCad
При расчете уравнения двумя методами (Эйлера и Эйлера модифицированного), были получены значения сходные с общим, хотя метод Эйлера модифицированного является наиболее точным. Это совпадение обуславливается маленьким шагом и небольшим диапазоном конечных значений.
Public Class Form1
Dim x() As Single
Dim y1() As Single
Dim y2() As Single
Dim ob() As Single
Private x0 As Single
Private y0 As Single
Private xk As Single
Private h As Single
Private i, n As Integer
Private Function f(ByVal x As Single, ByVal y As Single)
f = (3 * y) / x
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
x0 = Val(TextBox1.Text)
xk = Val(TextBox2.Text)
h = Val(TextBox3.Text)
y0 = Val(TextBox4.Text)
Dim c As Single = y0 / ((x0) ^ 3)
n = Math.Round((xk - x0) / h)
ReDim x(n)
ReDim y1(n)
ReDim y2(n)
ReDim ob(n)
DataGridView1.RowCount = n + 1
y1(0) = y0
y2(0) = y0
x(0) = x0
ob(0) = c * (x(i)) ^ 3
i = 0
DataGridView1.Item(0, i).Value = i
DataGridView1.Item(1, i).Value = Str(x(i))
DataGridView1.Item(2, i).Value = Str(y1(i))
DataGridView1.Item(3, i).Value = Str(y2(i))
DataGridView1.Item(4, i).Value = Str(ob(i))
For i As Integer = 1 To n
x(i) = x0 + i * h
y1(i) = y1(i - 1) + h * f(x(i - 1), y1(i - 1))
y2(i) = y2(i - 1) + h * f(x(i - 1) + h / 2, y2(i - 1) + (h / 2) * f(x(i - 1), y2(i - 1)))
ob(i) = c * (x(i)) ^ 3
DataGridView1.Item(0, i).Value = Str(i)
DataGridView1.Item(1, i).Value = Str(x(i))
DataGridView1.Item(2, i).Value = Str(y1(i))
DataGridView1.Item(3, i).Value = Str(y2(i))
DataGridView1.Item(4, i).Value = Str(ob(i))
Next i
For i As Integer = 0 To n
Chart1.Series("Series1").
Chart1.Series("Series2").
Chart1.Series("Series3").
Next i
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Информация о работе Визуализация численных методов. Решение обыкновенных дифференциальных уравнений