Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример табулирования функции и ряда



Постановка задачи.

Протабулировать ряд суммы и функцию y =sin2 x на отрезке [ а, b ] с шагом h. Функциональный ряд S вычисляется с точностью e. Суммируются все члены ряда, значения которых больше e, то есть | Uk |>e, где Uk - k - й член функционального ряда, который вычисляется по рекуррентной формуле

.

Рекуррентной называется всякая формула, выражающая каждый член последовательности через предыдущие члены этой последовательности.

Настройка интерфейса.

Сформируйте на форме объекты Text1, Text2, Text3, Label1, Label2, Label3, Command1 и Command2 как на следующем рисунке. Для полей Text1 - Text3 установите свойства MultiLine=True и ScrollBars=Vertical. Для остальных объектов заполните свойство Caption соответствующим значением.

Код программы.

Private Sub Command1_Click()

Const e = 0.00001 ' Точность вычисления

a! = Val(InputBox("Введите нижнюю границу Х",, 1))

b! = Val(InputBox("Введите верхнюю границу Х",, 10))

h! = Val(InputBox("Введите шаг",, 0.005))

x! = a

s1$ = "": s2$ = "": s3$ = ""

Do

k% = 1

U! = x ^ 2

S! = U

Do

U = U * (-1) * 4 * x ^ 2 / (2 * k + 1) / (2 * k + 2)

S = S + U

k = k + 1

Loop Until Abs(U) < e

s1 = s1 + CStr(x) & vbCrLf

s2 = s2 + Format(S, "#0.00000") & vbCrLf

s3 = s3 + Format(Sin(x) ^ 2, "#0.00000") & vbCrLf

x = x + h

Loop Until x > b + h

Text1 = s1 ' Вывод в текстовые поля результатов табулирования

Text2 = s2

Text3 = s3

End Sub

Private Sub Form_Load()

Text1 = "" ' Обнуление текстовых полей

Text2 = ""

Text3 = ""

End Sub

Private Sub Command2_Click()

End ' Команда входа из приложения

End Sub

Комментарии к программе.

Программа содержит ряд функций:

Val(<Строка>) – функция, преобразующая строку в число.

CStr(<Переменная>) – функция, преобразующая число в строку.

Format(<Переменная>, <Формат>) – функция, преобразующая число в строку по формату.

В программе константой vbCrLf программно проставляется маркер конца абзаца (это все равно, что если бы Вы нажали клавишу Enter).

Второй вариант решения предыдущей задачи выполнен без использования рекуррентной формулы. Однако время, затраченное на выполнение следующей программы, будет больше, так как при вычислении y в цикле участвуют функции возведения в степень и рекурсивное обращение к функции (fact) факториал:

Private Function fact(m As Integer) As Double

If m < 0 Then

MsgBox ("Параметр факториала меньше нуля")

End If

If m = 0 Then

fact = 1

Else

f# = fact(m - 1)

fact = f * m

End If

End Function

Private Sub Command1_Click()

Const e = 0.00001

a! = Val(InputBox("Введите нижнюю границу х",, 1))

b! = Val(InputBox("Введите верхнюю границу Х",, 10))

h! = Val(InputBox("Введите шаг",, 0.005))

x! = a

s1$ = "": s2$ = "": s3$ = ""

Do

k% = 1

S! = 0

Do

y = (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * x ^ (2 * k) / fact(2 * k)

S = S + y

k = k + 1

Loop Until Abs(y) < e

s1 = s1 + CStr(x) & vbCrLf

s2 = s2 + Format(S, "#0.00000") & vbCrLf

s3 = s3 + Format(Sin(x) ^ 2, "#0.00000") & vbCrLf

x = x + h

Loop Until x > b + h

Text1 = s1

Text2 = s2

Text3 = s3

End Sub

Private Sub Form_Load()

Text1 = ""

Text2 = ""

Text3 = ""

End Sub

Private Sub Command2_Click()

End ' Команда входа из приложения

End Sub

Задание на самостоятельную работу.

Выполнить табулирование варианта задания двумя способами. Если ряд суммы содержит факториал, то получить результаты в текстовых полях по рекуррентной формуле и с использованием функции факториал. Если ряд суммы не содержит факториал, то табулирование осуществить по рекуррентной формуле в текстовые поля и в объект MSFlexGrid. Объект MSFlexGrid загружается на панель ToolBox General через команду Project/Components/опция Microsoft FlexGrid Control 6.0.

Вот некоторые команды по управлению объектом MSFlexGrid, которые могут Вам пригодиться:

MSFlexGrid1.Cols=5 ‘ Формирование 5 столбцов

MSFlexGrid1.Rows=5 ‘ Формирование 5 строк

‘Формирование строки заголовка (определяется символом <)

U$=”<| 1 | 2 | 3 | 4 |”

MSFlexGrid1.FormatString=U

‘Формирование столбца заголовка (определяется символом;)

U$=”;|Массив|Влево|Вправо|Центр|” ‘Формирование столбца заголовка

MSFlexGrid1.FormatString=U

MSFlexGrid1.Row=0 ‘ Текущая нулевая строка

MSFlexGrid1.Col=0 ‘ Текущий нулевой столбец

MSFlexGrid1.Text=”X” ‘ Вывод в ячейку 0,0 символа Х

MSFlexGrid1.ColWidth(0)=700 ‘ Ширина нулевой колонки=700 Twip

For I=1 to 5 ‘ Ширина остальных колонок=500 Twip

MSFlexGrid1.Col=I

MSFlexGrid1.ColWidth(0)=500

MSFlexGrid1.Text=I

Next

Варианты заданий

Таблица 4

  №   Сумма Диапазон изменения аргумента   Точность, e   Функция y
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
     
 
 
 
           

Контрольные вопросы

Что такое цикл, и какие операторы цикла в Visual Basic существуют?

Будет ли результат в примере №1 тем же, если использовать обратный цикл? For I=100 to 1 Step –1?

Можно ли в примере №1 записать цикл в виде: For I = 0.1 To 10 Step 0.1? Если да, то, что в программе следует исправить?

Что измениться в программе примера №2, если использовать Do…Loop Until?

Что измениться в программе примера №3, если использовать Do…Loop While?

Можно ли в примерах №2 и 3 использовать цикл For? Если да, то, что в программах следует исправить?

Поясните назначение операторов Exit For и Exit Do?

Что такое табулирование функции?

Что такое факториал и для чего необходима рекуррентная формула?





Дата публикования: 2014-12-28; Прочитано: 571 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...