Rem Описание переменных
Dim x(), y(), Ei(), Run(), Ob() As Single
Private n, i As Integer
Private x0, xk, y0, h, minx, maxx, miny, maxy As Single
Rem Описание функции
Function f(a, b) As Single
f = b * (1 / Tan(a))
End Function
Rem Метод Эйлера
Private Sub Eiler()
ReDim x(n + 1)
ReDim Ei(n + 1)
Ei(0) = y0
For i = 0 To n
x(i) = Round(x0 + (i * h), 4)
Ei(i + 1) = Round(Ei(i) + h * f(x(i), Ei(i)), 4)
Next i
End Sub
Rem Метод Рунге-кутта
Private Sub RungeKutta()
ReDim x(n + 1)
ReDim Run(n + 1)
Run(0) = y0
For i = 0 To n
x(i) = Round(x0 + i * h, 4)
k1 = h * f(x(i), Run(i))
k2 = h * f(x(i) + (h / 2), Run(i) + (k1 / 2))
k3 = h * f(x(i) + (h / 2), Run(i) + (k2 / 2))
k4 = h * f(x(i) + h, Run(i) + k3)
k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
Run(i + 1) = Round(Run(i) + k, 4)
Next i
End Sub
Rem Общее решение
Private Sub Obhee()
ReDim x(n + 1)
ReDim Ob(n + 1)
For i = 0 To n
x(i) = Round(x0 + i * h, 4)
Ob(i) = Sin(x(i))
Next i
End Sub
Private Sub Command1_Click()
Rem Ввод данных
x0 = 3.14 / 2
y0 = 1
xk = 3 * 3.14 / 4
h = 3.14 / 20
Text1.Text = x0
Text2.Text = y0
Text3.Text = xk
Text4.Text = h
Rem Расчет количества отрезков табулирования
n = Round((xk - x0) / h)
ReDim x(n), y(n)
Rem расчет количества строк в таблице
MSFlexGrid1.Cols = 4
MSFlexGrid1.Rows = n + 2
Rem Подписи заголовков страницы
MSFlexGrid1.TextMatrix(0, 0) = "x"
MSFlexGrid1.TextMatrix(0, 1) = "Общее рещение"
MSFlexGrid1.TextMatrix(0, 2) = "Эйлер"
MSFlexGrid1.TextMatrix(0, 3) = "Рунге-Кутт"
Rem Формирование массивов и поиск экстремумов
Eiler
RungeKutta
Obhee
For i = 0 To n
minx = x0
maxx = xk
miny = y0
maxy = Run(i)
If Ei(i) < Ob(i) Then miny = Ei(i)
If Run(i) < Ob(i) Then maxy = Run(i)
If Ei(i) > Run(i) Then maxy = Ei(i)
MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))
MSFlexGrid1.TextMatrix(i + 1, 1) = Str(Ob(i))
MSFlexGrid1.TextMatrix(i + 1, 2) = Str(Ei(i))
MSFlexGrid1.TextMatrix(i + 1, 3) = Str(Run(i))
Next i
Rem очистка картинки
Picture1.Cls
Rem Расчет коэффициентов масштабирования
kx = Round((Picture1.Height - 1200) / (xk - x0), 4)
ky = Round((Picture1.Width - 1000) / (maxy - miny), 4)
Rem Запись значений экстремумов на шаблон графика
Label16.Caption = Str(miny)
Label15.Caption = Str(maxy)
Label17.Caption = Str(minx)
Label18.Caption = Str(maxx)
Rem Расчет экранных координат, построение графика и определение цвета
Picture1.DrawWidth = 1
For i = 0 To n - 1
z1 = 720 + (x(i) - x0) * kx
z2 = 5400 - (Ei(i) - miny) * ky
z3 = 720 + (x(i + 1) - x0) * kx
z4 = 5400 - (Ei(i + 1) - miny) * ky
Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)
Next i
Picture1.DrawWidth = 2
For i = 0 To n - 1
z1 = Round(720 + (x(i) - x0) * kx)
z2 = Round(5400 - (Run(i) - miny) * ky)
z3 = Round(720 + (x(i + 1) - x0) * kx)
z4 = Round(5400 - (Run(i + 1) - miny) * ky)
Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)
Next i
Picture1.DrawWidth = 1
For i = 0 To n - 1
z1 = 720 + (x(i) - x0) * kx
z2 = 5400 - (Ob(i) - miny) * ky
z3 = 720 + (x(i + 1) - x0) * kx
z4 = 5400 - (Ob(i + 1) - miny) * ky
Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)
Next i
End Sub
Это решение дифференциального уравнения в среде VISUAL BASIK 6.0
помогите найти ошибку в формировании массивов и в поиске экстремумов.
Другие языки программирования и технологии
Ну, я думаю.. . думаю... не торопи!
Срочно нужна помощь. помогите пожалуйста найти ошибку
Option Explicit
Option Base 0
Const RX As Integer = 4 ' округление
Dim x0 As Single, xk As Single, y0 As Single, h As Single ' входные параметры
Dim kfx As Single, kfy As Single ' коэффиценты сжатия графика
Dim max As Single, min As Single ' экстремумы
Dim i As Integer
'описание функции, график которой необходимо построить
Function f(a As Single, b As Single) As Single
f = b * (1 / Tan(a))
End Function
'Метод Эйлера
Private Sub Eiler(ARR() As Single, XAR() As Single)
ARR(0) = y0
For i = 0 To UBound(ARR) - 1
ARR(i + 1) = Round(ARR(i) + h * f(XAR(i), ARR(i)), RX)
Next
End Sub
'Метод Рунге-кутта
Private Sub RungeKutta(ARR() As Single, XAR() As Single)
Dim k1 As Single, k2 As Single, k3 As Single, k4 As Single, k As Single
ARR(0) = y0
For i = 0 To UBound(ARR) - 1
k1 = h * f(XAR(i), ARR(i))
k2 = h * f(XAR(i) + h / 2, ARR(i) + k1 / 2)
k3 = h * f(XAR(i) + h / 2, ARR(i) + k2 / 2)
k4 = h * f(XAR(i) + h, ARR(i) + k3)
k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
ARR(i + 1) = Round(ARR(i) + k, RX)
Next
End Sub
' Общее решение
Private Sub Obhee(ARR() As Single, XAR() As Single)
For i = 0 To UBound(ARR)
ARR(i) = Round(Sin(XAR(i)), RX)
Next
End Sub
Private Sub Command1_Click()
Dim n As Integer
Picture1.Cls ' очистка картинки
' ввод данных
x0 = Val(Text1.Text)
y0 = Val(Text2.Text)
xk = Val(Text3.Text)
h = Val(Text4.Text)
' расчет количества отрезков
n = (xk - x0) / h
If n <= 0 Then Exit Sub '
' расклад таблицы
With MSFlexGrid1
.Cols = 4
.Rows = n + 2
.TextMatrix(0, 0) = "x"
.TextMatrix(0, 1) = "Общее"
.TextMatrix(0, 2) = "Эйлер"
.TextMatrix(0, 3) = "Рунге-Кутт"
End With
' определение динамических массивов
ReDim X(n) As Single, Ei(n) As Single, Run(n) As Single, Ob(n) As Single
' заполнить массив X
For i = 0 To n
X(i) = x0 + (i * h)
Next
' формирование массивов
Eiler Ei, X
RungeKutta Run, X
Obhee Ob, X
' заполнение таблицы и поиск экстремумов
max = Ob(0): min = Ob(0) ' произвольное из существующих значений
FlexFill X, 0, False ' массив, столбец, искать экстремум
FlexFill Ob, 1, True ' ...
FlexFill Ei, 2, True ' ...
FlexFill Run, 3, True ' ...
' расчет коэффициэнтов масштабирования
' привязка к габаритам линий абциссы и ординаты (250 - это поправка на концевые стрелки)
If X(n) <> X(0) Then kfx = (LineAbsciss.X2 - LineOrdinat.X1 - 250) / (X(n) - X(0))
If max <> min Then kfy = (LineAbsciss.Y2 - LineOrdinat.Y1 - 250) / (max - min)
' запись значений экстремумов на шаблон графика
minXlabel.Caption = x0
maxXlabel.Caption = xk
minYlabel.Caption = min
maxYlabel.Caption = max
' построение графика функций
Picture1.DrawWidth = 3
DrawGrapf Ob, X, RGB(255, 0, 0)
Picture1.DrawWidth = 2
DrawGrapf Ei, X, RGB(0, 0, 255)
Picture1.DrawWidth = 1
DrawGrapf Run, X, RGB(0, 255, 0)
End Sub
' заполнение таблицы и поиск экстремумов
Private Sub FlexFill(ARR() As Single, column As Integer, exc As Boolean) ' exc - false - не выполнять поиск
For i = 0 To UBound(ARR)
MSFlexGrid1.TextMatrix(i + 1, column) = Format(ARR(i), "0." & String(RX, "0"))
If exc And min > ARR(i) Then min = ARR(i)
If exc And max < ARR(i) Then max = ARR(i)
Next
End Sub
' рисование графика
Private Sub DrawGrapf(ARR() As Single, XAR() As Single, clr As OLE_COLOR)
Dim z1 As Single, z2 As Single, z3 As Single, z4 As Single
For i = 0 To UBound(ARR) - 1
z1 = LineOrdinat.X1 + (XAR(i) - x0) * kfx
z2 = LineAbsciss.Y2 - (ARR(i) - min) * kfy
z3 = LineOrdinat.X1 + (XAR(i + 1) - x0) * kfx
z4 = LineAbsciss.Y2 - (ARR(i + 1) - min) * kfy
Picture1.Line (z1, z2)-(z3, z4), clr
Next
End Sub
Option Base 0
Const RX As Integer = 4 ' округление
Dim x0 As Single, xk As Single, y0 As Single, h As Single ' входные параметры
Dim kfx As Single, kfy As Single ' коэффиценты сжатия графика
Dim max As Single, min As Single ' экстремумы
Dim i As Integer
'описание функции, график которой необходимо построить
Function f(a As Single, b As Single) As Single
f = b * (1 / Tan(a))
End Function
'Метод Эйлера
Private Sub Eiler(ARR() As Single, XAR() As Single)
ARR(0) = y0
For i = 0 To UBound(ARR) - 1
ARR(i + 1) = Round(ARR(i) + h * f(XAR(i), ARR(i)), RX)
Next
End Sub
'Метод Рунге-кутта
Private Sub RungeKutta(ARR() As Single, XAR() As Single)
Dim k1 As Single, k2 As Single, k3 As Single, k4 As Single, k As Single
ARR(0) = y0
For i = 0 To UBound(ARR) - 1
k1 = h * f(XAR(i), ARR(i))
k2 = h * f(XAR(i) + h / 2, ARR(i) + k1 / 2)
k3 = h * f(XAR(i) + h / 2, ARR(i) + k2 / 2)
k4 = h * f(XAR(i) + h, ARR(i) + k3)
k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
ARR(i + 1) = Round(ARR(i) + k, RX)
Next
End Sub
' Общее решение
Private Sub Obhee(ARR() As Single, XAR() As Single)
For i = 0 To UBound(ARR)
ARR(i) = Round(Sin(XAR(i)), RX)
Next
End Sub
Private Sub Command1_Click()
Dim n As Integer
Picture1.Cls ' очистка картинки
' ввод данных
x0 = Val(Text1.Text)
y0 = Val(Text2.Text)
xk = Val(Text3.Text)
h = Val(Text4.Text)
' расчет количества отрезков
n = (xk - x0) / h
If n <= 0 Then Exit Sub '
' расклад таблицы
With MSFlexGrid1
.Cols = 4
.Rows = n + 2
.TextMatrix(0, 0) = "x"
.TextMatrix(0, 1) = "Общее"
.TextMatrix(0, 2) = "Эйлер"
.TextMatrix(0, 3) = "Рунге-Кутт"
End With
' определение динамических массивов
ReDim X(n) As Single, Ei(n) As Single, Run(n) As Single, Ob(n) As Single
' заполнить массив X
For i = 0 To n
X(i) = x0 + (i * h)
Next
' формирование массивов
Eiler Ei, X
RungeKutta Run, X
Obhee Ob, X
' заполнение таблицы и поиск экстремумов
max = Ob(0): min = Ob(0) ' произвольное из существующих значений
FlexFill X, 0, False ' массив, столбец, искать экстремум
FlexFill Ob, 1, True ' ...
FlexFill Ei, 2, True ' ...
FlexFill Run, 3, True ' ...
' расчет коэффициэнтов масштабирования
' привязка к габаритам линий абциссы и ординаты (250 - это поправка на концевые стрелки)
If X(n) <> X(0) Then kfx = (LineAbsciss.X2 - LineOrdinat.X1 - 250) / (X(n) - X(0))
If max <> min Then kfy = (LineAbsciss.Y2 - LineOrdinat.Y1 - 250) / (max - min)
' запись значений экстремумов на шаблон графика
minXlabel.Caption = x0
maxXlabel.Caption = xk
minYlabel.Caption = min
maxYlabel.Caption = max
' построение графика функций
Picture1.DrawWidth = 3
DrawGrapf Ob, X, RGB(255, 0, 0)
Picture1.DrawWidth = 2
DrawGrapf Ei, X, RGB(0, 0, 255)
Picture1.DrawWidth = 1
DrawGrapf Run, X, RGB(0, 255, 0)
End Sub
' заполнение таблицы и поиск экстремумов
Private Sub FlexFill(ARR() As Single, column As Integer, exc As Boolean) ' exc - false - не выполнять поиск
For i = 0 To UBound(ARR)
MSFlexGrid1.TextMatrix(i + 1, column) = Format(ARR(i), "0." & String(RX, "0"))
If exc And min > ARR(i) Then min = ARR(i)
If exc And max < ARR(i) Then max = ARR(i)
Next
End Sub
' рисование графика
Private Sub DrawGrapf(ARR() As Single, XAR() As Single, clr As OLE_COLOR)
Dim z1 As Single, z2 As Single, z3 As Single, z4 As Single
For i = 0 To UBound(ARR) - 1
z1 = LineOrdinat.X1 + (XAR(i) - x0) * kfx
z2 = LineAbsciss.Y2 - (ARR(i) - min) * kfy
z3 = LineOrdinat.X1 + (XAR(i + 1) - x0) * kfx
z4 = LineAbsciss.Y2 - (ARR(i + 1) - min) * kfy
Picture1.Line (z1, z2)-(z3, z4), clr
Next
End Sub
для меня это сложно
Скинь ка прогу?? ? Подумаем!!!:)))
запусти в пошаговом режиме отладки и ищи ошибку.. . где непонятно что происходит - выводи на экран содержимое переменных, индексов массивов и тд если отладчик такой инфы не даёт на лету при наведении курсора на переменную в тексте программы в режиме отладки.
Работает все. Проверил. Скидывать не надо. Уже сам скинул. Не стоит пугать людей из деревни и рабочих заводов, которые программный код впервые в жизни видят. А то не дай бог челюсть отвиснет до самого пола от шока.
Вот так вот читаешь, читаешь.... Чем больше читаешь, тем большим дибилом себе кажешься Оо
что за неведома ёбана хрень? Х)
что за неведома ёбана хрень? Х)
и что же не так?
Лучше обратиться на сайт с нужной тематикой, здесь не все такие умные.
это расчёт самГонного аппарата....
Бог поможет.
сбрось исходник на мыло посмотрю

Ну, я думаю.. . думаю... не торопи!
Синхрофазатрон!
не фига не поняла... вам никто не ответит...
Ceргей Рассадников
Считаешь себя самой умной во вселенной?
нужно обработать исключения. там в 3 строке ошибка
Скинь прогу
Думаю, лучше задать вопрос на тематическом форуме
Похожие вопросы
- Помогите пожалуйста найти ошибку, с++
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Помогите пожалуйста найти ошибку. Паскаль. Оператор Case of
- Здравствуйте всем! Помогите пожалуйста найти ошибку в моем коде
- Помогите пожалуйста найти ошибку в решении задачи по информатике(паскаль) !!!Прошу очень нужно!!!задача простая!!!
- Pascal помогите пожалуйста найти ошибку в задаче.
- Помогите, пожалуйста, найти ошибки в коде. Нужно выбрать из массива минимальное значение и вывести индексы его позиции.
- Помогите, пожалуйста, найти ошибку в программе сортировки стека (по убыванию ) на Си.
- Очень срочно нужна помощь в написании кода С++. Всё не вмещается, поэтому задание в пояснении. Помогите, пожалуйста!!
- Срочно нужна помощь, С# накрылся ноутбук, нужно написать простенький код, помогите пожалуйста!
http://file.qip.ru/file/-kGMWeNj/Курсовая_25_вариант_.html ( 317,79 Кб )