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

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

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
по информатике
ВИЗУАЛИЗАЦИЯ ЧИСЛЕННЫХ МЕТОДОВ.
РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
Руководитель: Минина Е.Е.
Екатеринбург, 2008
Введение
Целью моей работы является изучение основ системы программирования Microsoft Visual Basic и приобретение начальных навыков разработки программного обеспечения для операционных систем Windows.
В данной курсовой работе требуется вычислить дифференциальное уравнение способами Эйлера и Эйлера модифицированный:
2*x*y*dx-(x+1)=0
Результаты :
1. выводится 3 решения одного дифференциального уравнения
2. Решение уравнения в пакете MathCAD
3. Бумажный вариант
4. «Пояснительная записка»
1.1 Актуальность.
Программирование в наши дни очень сильно развивается. Наш институт не обошел стороной. Программирование нужно для создания программ, расчета функций.
Теоретическое описание методов
Дифференциальные уравнения - уравнения, связывающие между собой переменную и производную
Если решить сложно или невозможно, используют числовые методы, то есть приближенные значения. В числовых методах обязательно используют начальные условия, чтобы исключить константу.
Числовые методы позволяют построить интегральную кривую по точкам. В зависимости от того, сколько точек используется для расчета очередной точки интегральной кривой, все численные методы делятся на одношаговые и многошаговые. В нашем случае мы используем одношаговые численные методы.
Иногда этот метод называют методом Рунге-Кутта первого порядка точности.
Данный метод одношаговый. Табулирование функции происходит поочередно в каждой точке. Для расчета значения функции в очередном узле необходимо использовать значение функции в одном предыдущем узле.
Метод Эйлера один из простейших методов численного решения обыкновенных дифференциальных уравнений. Но существенным его недостатком является большая погрешность вычислений. С каждым шагом погрешность вычислений увеличивается.
В нашем случае x0 = 0, y0 = 0,8 и теоретическое общее решение выглядит следующим образом у=(е2*х*С)/(х+1)2 . Найдём С:
С=у*(х+1)2/е2*х ;
С=4*(0+1)2/е2*0
С=4
первая точка: x1 = x0+h = 0+0,05 = 0,05
tgα0=2*0*4/0+1
tgα0=0
α0=0
y1-y0=Δx* tgα0
y1=h*f(x0,y0)+y0
y1=0.05*0+4
Этот метод имеет так же следующие названия: метод Эйлера-Коши или метод Рунге-Кутта второго порядка точности.
Модифицированный метод Эйлера дает меньшую погрешность.
первая точка: x1 = x0+h = 0+ 0.05 = 0.05
yB=4+0.025*0=4
yC=4+0.025*0.1977
Dim x(50) As Single, y(50) As Single, k(50) As Single, z(50) As Single, p(50) As Single
Private y0 As Single
Private x0 As Single
Private xk As Single
Private C As Single
Function f(t As Single, q As Single) As Single
f = 2 * t * q / q + 1
End Function
Private Sub Command2_Click()
x0 = Val(Text1.Text)
xk = Val(Text2.Text)
y(0) = Val(Text4.Text)
h = Val(Text3.Text)
p(0) = y(0)
z(0) = y(0)
n = Round((xk - x0) / h)
C = (y(0) * (x0 + 1) ^ 2) / Exp(2 * x0)
Max = y(0)
Min = y(0)
For i = 0 To n
x(i) = x0 + i * h
p(i) = Round(C * (x(i) * x(i) * x(i)), 4)
y(i + 1) = Round(y(i) + f(x(i), y(i)) * h, 4)
z(i + 1) = Round(z(i) + f(x(i) + h / 2, z(i) + h / 2 * f(x(i), z(i))) * h, 4)
If y(i) > Max Then Max = y(i)
If y(i) < Min Then Min = y(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(720 + (x(i + 1) - x0) * kx)
z4 = Round(5400 - (y(i + 1) - Min) * ky)
z5 = Round(5400 - (p(i) - Min) * ky)
z6 = Round(5400 - (p(i + 1) - Min) * ky)
z7 = Round(5400 - (z(i) - Min) * ky)
z8 = Round(5400 - (z(i + 1) - Min) * ky)
Picture1.Line (z1, z7)-(z3, z8)
Picture1.Line (z1, z5)-(z3, z6)
Picture1.Line (z1, z2)-(z3, z4)
Next i
End Sub
Private Sub Command1_Click()
End
End Sub
По окончании работы я научился работать в среде программирования Visual Basic 6.0. и MathCad.
Я, в своей курсовой работе решал уравнение двумя методами: методом Эйлера и методом Эйлера модифицированного.Я выяснил, что метод Эйлера модифицированный имеет меньшую погрешность, чем метод Эйлера.