Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Лабораторная работа по информатике (Visual Basic)

Автор: Bigben 18.11.2010, 15:27

Помогите, пожалуйста, правильно завершить лаб. работу. Задание ниже :

http://radikal.ru/F/s57.radikal.ru/i155/1011/32/52a06bfd7a88.png.html

Вот мой текст программы, который должен быть дополнен после места, выделенным красным. Там насколько я знаю нужно использовать точность, которую я ввожу, но как это сделать ? Подскажите, пожалуйста. Программа - Visual Basic 6

Private Sub Form_Load()
t = 0.1
For i = 1 To 6
Combo1.AddItem (t)
t = t / 10
Next
Combo1.Text = Combo1.List(0)
End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "exit"
End
Case "run"
1:
m = Slider1.Value
Ii1 = 0
iter = 1
If Combo1.Text = Combo1.List(0) Then t = 0.1
If Combo1.Text = Combo1.List(1) Then t = 0.01
If Combo1.Text = Combo1.List(2) Then t = 0.001
If Combo1.Text = Combo1.List(3) Then t = 0.0001
If Combo1.Text = Combo1.List(4) Then t = 0.00001
If Combo1.Text = Combo1.List(5) Then t = 0.000001
h = (1.5 - 0.5) / m
2: For x = 1 To m - 1
Ii1i = h / (Cos(x) ^ 2 + Exp(x) * Abs(x + Log(x)))
Ii1 = Ii1 + Ii1i
Next
If Abs(Ii1i) > t Then
h = h / 2

End If

Label7.Caption = Str(Ii1)
Case "rect"
MsgBox ("Метод выбран.")
Case "trap"
MsgBox ("Выбранный метод не поддерживается.")
Case "simpson"
MsgBox ("Выбранный метод не поддерживается.")
Case "help"

End Select
End Sub

Автор: Vahappaday 18.11.2010, 20:30

можно задание перезалить? радикал упал чегой-то...

Автор: Vahappaday 19.11.2010, 13:04

вообще-то неулучшаемая оценка погрешности для метода прямоугольников рассчитывается через максимум второй производной на интервале интегрирования...
но 3-я производная... да и вторая.. тут будут очень забавные, посему предлагаю оценить через значение максимального прямоугольника. То есть максимальное абсолютное значение функции*величину шага должно быть меньше погрешности. При соблюдении такого условия заданная точность будет точно соблюдена.

Автор: Bigben 20.11.2010, 12:22

Хм, а могли бы вы показать как это сделать ?
В плане как код доделать?

Автор: Vahappaday 21.11.2010, 7:37

Такс.... значение функции на заданном промежутке не превышает 1.0457.
Если кто-то из математиков поможет найти абсолютный максимум (он же единственный локальный) было бы здорово.
Но будем исходить из этого.
Функция строго положительна на заданном промежутке, отсюда можем сказать, что ошибка для любого из прямоугольников не будет превышать величины h*1.0457.
Отсюда получаем h*1.0457<=t*(1/1.0457).
h = t/(1.0457^2).
Таким образом мы нашли максимально допустимый шаг.
Находим целое количество шагов и округляем его вверх.
m = -Int(-1/h) '-Int(-x) - это округление вверх в VB.
Для такого количества шагов рассчитываем новую величину шага
h=1/m
Вот с этим шагом и рассчитываем. Дальше разберетесь?

Осторожно, у меня тут в многих местах единички только потому, что у Вас промежуток равен 1.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)