Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2008, 10:20   #1
XenoS
 
Аватар для XenoS
 
Регистрация: 19.05.2008
Сообщений: 6
Вопрос VB6.0 График зависимости погрешности от количества отрезков интегрирования.

В чем косяк?=( От меня требовалось: Для двух методов построить на одном графике зависимость разности между точным решением, и результатом, полученным по методу (ось у), от количества разбиений N (ось х), N изменяется на интервале [ 10,200] с шагом 10.

Private Sub Command1_Click()
Dim s As Double
Dim h As Double
Dim n As Long
Dim n1 As Long
a = Val(Form2.Text1.Text)
b = Val(Form2.Text2.Text)
Picture1.Scale (0, 60)-(215, -5)
Picture1.Line (0, 0)-(215, 0)
Picture1.Line (10, 0)-(10, 60)
Label3.Visible = True
Label4.Visible = True

j = 0
For n = 10 To 200 Step 10

'Метод трапеций
h = (b - a) / n
s = 0
X1 = a
For i = 1 To n - 1
X1 = X1 + h
s = s + F(X1)
Next
F1 = h * (F(a) + F(b) + 2 * s) / 2
'Метод Симпсона
n1 = 2 * n
h = (b - a) / n1
s = 0
x = a
C = 1
For i = 1 To n1 - 1
x = x + h
s = s + (3 + C) * F(x)
C = -C
Next
F2 = h * (F(a) + F(b) + s) / 3
'Точное решение
F3 = Abs(Log(Log(b)) - Log(Log(a)))
НИЖЕ - СОБСТВЕННО КУСОК, КОТОРОГО НЕ ПОНИМАЮ
Et(j) = Abs(F1 - F3) * 100000
es(j) = Abs(F2 - F3) * 100000000
j = j + 1
Next n

n = 10
For i = 0 To j
Picture1.Line (n, Et(i))-(n + 10, Et(i + 1)), vbRed
Picture1.Line (n, es(i))-(n + 10, es(i + 1)), vbBlue
Picture1.Line (n, 0)-(n, -1.5)
Picture1.Print n
n = n + 10
If n = 210 Then Exit For
Next

For i = 0 To 60 Step 5
Picture1.Line (8, i)-(10, i)
Picture1.Print i
Next

End Sub

ЧТО ПОЛУЧАЕТСЯ...В приведенном коде метод трапеций заменили на метод левых прямоугольников. Зависимость метода Симпсона вычерчивается, а вторая получается вертикальной чертой с краю справа...Смущает...Не могу найти косяк!!Вопрос:
Et(j) = Abs(F1 - F3) * 100000
es(j) = Abs(F2 - F3) * 100000000 Чем обусловлено количество этих нулей?Ведь если его поменять,существенно изменяется наклон графика...

Последний раз редактировалось XenoS; 22.05.2008 в 10:41.
XenoS вне форума Ответить с цитированием
Старый 22.05.2008, 10:22   #2
XenoS
 
Аватар для XenoS
 
Регистрация: 19.05.2008
Сообщений: 6
По умолчанию Модуль к моей программе

Public Et(200) As Double
Public es(200) As Double
Public b As Integer
Public a As Integer
Public Function F(x)
F = (Sin(x)) ^ 2 'Функция
End Function
Public Function Q(x)
Q = (x - Sin(2 * x) / 2) / 2 'Производная
End Function
XenoS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Литература в помощь при работе с базами данных Speeker БД в Delphi 15 10.07.2014 09:39
Подсчитать количества знака в числе valerij Microsoft Office Excel 5 17.08.2008 16:52
Подсчет количества и частоты Ensoph Помощь студентам 6 08.05.2008 10:16
диапазон double и погрешности вычислений ilyagoo Общие вопросы C/C++ 4 13.12.2007 17:29
Нахождение количества понедельников в XX веке Omedus Паскаль, Turbo Pascal, PascalABC.NET 5 28.11.2007 22:17