Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VB График диф.ур. (общ.решение) 
:(
    Опции темы
Nikel343
Дата 17.5.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.5.2010

Репутация: нет
Всего: нет



Добрый день.
нужно решить диф. уравнение методом Эйлера и методом Эйлера(Модифицированного), а также общим решением. Методами я решил , графики получились нормальными, а в общем решении график получается совсем не такой каким должен быть. (все вроде пробывал).
Диф. ур. f = (4 * a) - (2 * b)

Общ. решение y=c*exp(-2*x)-2*x-1
Code 
Код

Dim x(), e(), em(), o() As Single
Private i, n As Integer
Private x0, xk, y0, h, miny, maxy, minx, maxx As Single

Function f(a, b) As Single
f = (4 * a) - (2 * b)
End Function

Private Sub Eiler()
ReDim x(n + 1)
ReDim e(n + 1)
e(0) = y0
For i = 0 To n
  x(i) = Round(x0 + (i * h), 3)
  e(i + 1) = Round(e(i) + h * f(x(i), e(i)), 3)
Next i
End Sub

Private Sub EilerM()
ReDim x(n + 1)
ReDim em(n + 1)
em(0) = y0
For i = 0 To n
  x(i) = Round(x0 + (i * h), 3)
  em(i + 1) = Round(em(i) + h * f(x(i) + h / 2, em(i) + h / 2 * f(x(i), em(i))), 3)
Next i
End Sub

Private Sub Obhee()
ReDim x(n + 1)
ReDim o(n + 1)
maxy = y0
miny = y0
maxx = x0
minx = x0
For i = 0 To n
  x(i) = Round(x0 + (i * h), 3)
  o(i) = Round((y0 / (Exp(-2 * x(i)) + 2 * x(i) - 1)) * Exp(-2 * x(i)) + 2 * x(i) - 1, 3)
Next i
End Sub

Private Sub Command1_Click()
x0 = Val(Text1.Text)
y0 = Val(Text2.Text)
xk = Val(Text3.Text)
h = Val(Text4.Text)
n = Round((xk - x0) / h)
MSFlexGrid1.Cols = 4
MSFlexGrid1.Rows = n + 2
MSFlexGrid1.TextMatrix(0, 0) = "x"
MSFlexGrid1.TextMatrix(0, 1) = "Общее рещение"
MSFlexGrid1.TextMatrix(0, 2) = "Эйлер"
MSFlexGrid1.TextMatrix(0, 3) = "Эйлер модиф."

Eiler
EilerM
Obhee

For i = 0 To n
  MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))
  MSFlexGrid1.TextMatrix(i + 1, 1) = Str(o(i))
  MSFlexGrid1.TextMatrix(i + 1, 2) = Str(e(i))
  MSFlexGrid1.TextMatrix(i + 1, 3) = Str(em(i))
Next i
minx = x(0)
maxx = x(n)
miny = o(0)
maxy = o(n)
If e(n) > o(n) Then maxy = e(n)
If em(n) > o(n) Then maxy = em(n)
If e(n) > em(n) Then maxy = e(n)
Label10.Caption = Str(miny)
Label11.Caption = Str(maxy)
Label8.Caption = Str(minx)
Label12.Caption = Str(maxx)
Picture1.Cls
kx = (Picture1.Width - 1200) / (xk - x0)
ky = (Picture1.Height - 1000) / (maxy - miny)
For i = 0 To n - 1
  z1 = Round(720 + (x(i) - x0) * kx)
  z2 = Round(5400 - (e(i) - miny) * ky)
  z3 = Round(720 + (x(i + 1) - x0) * kx)
  z4 = Round(5400 - (e(i + 1) - miny) * ky)
  Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)
Next i
For i = 0 To n - 1
  z1 = Round(720 + (x(i) - x0) * kx)
  z2 = Round(5400 - (em(i) - miny) * ky)
  z3 = Round(720 + (x(i + 1) - x0) * kx)
  z4 = Round(5400 - (em(i + 1) - miny) * ky)
  Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)
Next i
For i = 0 To n - 1
  z1 = Round(720 + (x(i) - x0) * kx)
  z2 = Round(5400 - (o(i) - miny) * ky)
  z3 = Round(720 + (x(i + 1) - x0) * kx)
  z4 = Round(5400 - (o(i + 1) - miny) * ky)
  Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)
Next i
End Sub 

Графики должны быть одинаковыми (или почти)...
Прошу помощи, курсач :(

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Basic.rar 2,80 Kb
PM MAIL   Вверх
Nikel343
Дата 18.5.2010, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.5.2010

Репутация: нет
Всего: нет



Забыл указать исходные данные 
X0=1.2;Y0=2.4;h=0.1;Xk=2
PM MAIL   Вверх
ProgramerForever
  Дата 1.6.2010, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Nikel343, ты пишешь что
Общ. решение y=c*exp(-2*x)-2*x-1
Но в формуле уже "+"
o(i) = Round((y0 / (Exp(-2 * x(i)) + 2 * x(i) - 1)) * Exp(-2 * x(i)) + 2 * x(i) - 1, 3)
И, насколько я понимаю, 
Код

с=(y0 / (Exp(-2 * x(i)) + 2 * x(i) - 1)) 

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.2089 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.