Задача № 4

Составить программы табулирования функции (см. задачу 2) на отрезке в точках , где , используя в качестве переменной цикла x и операторы цикла :

1. For – Next ,

2. Do While – Loop ,

3. Do – Loop While ,

4. Do Until – Loop ,

5. Do – Loop Until ,

приняв .

Предполагаем, что заголовки таблицы x и y записываем в ячейки A1 и B1 соответственно, а значения переменных x и y записываем в соответствующих колонках, начиная с третьей строчки.

1. Программу с оператором цикла For - Next можно представить в виде

Private Sub Workbook_Open()

Const a = -1, b = 5, m = 20

Const pi = 3.1415926

Dim i As Integer

Dim x, y, h As Single

Range("A1").Value = "x"

Range("C1").Value = "y"

h = (b - a) / m

i = 3

For x = a To b + h / 2 Step h

If x <= 0 Then

y = 2 * x ^ 3 + x - 1

Else

If x < pi Then

y = Log(1 + x ^ 2)

Else

y = Sin(x ^ 2)

End If

End If

Cells(i, 1).Value = x

Cells(i, 3).Value = y

i = i + 1

Next x

End Sub

 

Результат счета по предложенной программе имеет вид:

 

 
 

 

2. Программу с циклом Do While – Loop можно представить в виде

Private Sub Workbook_Open()

Const a = -1, b = 5, m = 20

Const pi = 3.1415926

Dim i As Integer

Dim x, y, h As Single

Range("A1").Value = "x"

Range("C1").Value = "y"

h = (b - a) / m

i = 3

x = a

Do While x < b + h / 2

If x <= 0 Then

y = 2 * x ^ 3 + x - 1

Else

If x < pi Then

y = Log(1 + x ^ 2)

Else

y = Sin(x ^ 2)

End If

End If

Cells(i, 1).Value = x

Cells(i, 3).Value = y

i = i + 1

x = x + h

Loop

End Sub

 

3. Программу с циклом Do – Loop While можно представить в виде

Private Sub Workbook_Open()

Const a = -1, b = 5, m = 20

Const pi = 3.1415926

Dim i As Integer

Dim x, y, h As Single

Range("A1").Value = "x"

Range("C1").Value = "y"

h = (b - a) / m

i = 3

x = a

Do

If x <= 0 Then

y = 2 * x ^ 3 + x - 1

Else

If x < pi Then

y = Log(1 + x ^ 2)

Else

y = Sin(x ^ 2)

End If

End If

Cells(i, 1).Value = x

Cells(i, 3).Value = y

i = i + 1

x = x + h

Loop While x < b + h / 2

End Sub

 

4. Программу с циклом Do Until – Loop можно представить в виде

Private Sub Workbook_Open()

Const a = -1, b = 5, m = 20

Const pi = 3.1415926

Dim i As Integer

Dim x, y, h As Single

Range("A1").Value = "x"

Range("C1").Value = "y"

h = (b - a) / m

i = 3

x = a

Do Until x > b + h / 2

If x <= 0 Then

y = 2 * x ^ 3 + x - 1

Else

If x < pi Then

y = Log(1 + x ^ 2)

Else

y = Sin(x ^ 2)

End If

End If

Cells(i, 1).Value = x

Cells(i, 3).Value = y

i = i + 1

x = x + h

Loop

End Sub

 

5. Программу с циклом Do – Loop Until можно представить в виде

Private Sub Workbook_Open()

Const a = -1, b = 5, m = 20

Const pi = 3.1415926

Dim i As Integer

Dim x, y, h As Single

Range("A1").Value = "x"

Range("C1").Value = "y"

h = (b - a) / m

i = 3

x = a

Do

If x <= 0 Then

y = 2 * x ^ 3 + x - 1

Else

If x < pi Then

y = Log(1 + x ^ 2)

Else

y = Sin(x ^ 2)

End If

End If

Cells(i, 1).Value = x

Cells(i, 3).Value = y

i = i + 1

x = x + h

Loop Until x > b + h / 2

End Sub

 

Следует отметить, что логические неравенства в условиях окончания циклов берутся не x<=b ( x>=b ), а с запасом в h/2 . Это связано с тем, что величина h может быть переведена в двоичный код с избытком , а проверка логического оператора проводится точно. При этой ситуации последнее значение x=b может оказаться не просчитанным.

Результаты счета по всем программам табулирования рассматриваемой функции одинаковые. Поэтому распечатка результатов работы программы приводится только для одной из рассмотренных.

В качестве контрольных вопросов студенту предлагается разобрать :

1. как изменятся программы последней задачи, если кроме функции требуется одновременно с ней при тех же значениях просчитать и ;

2. как изменятся программы последней задачи, если требуется протабулировать функцию от до с шагом -h, то есть в порядке убывания .