
Тема:
«Реализация разветвляющихся вычислительных процессов средствами Excel »
|
Лабораторная работа №2.
Реализация разветвляющихся вычислительных процессов средствами Excel.
Разработать алгоритм для вычисления значений функции
и реализовать его в Excel.
Алгоритм
В задаче требуется вычислить функцию, вид которой зависит от значения аргумента. Поэтому разобьем числовую ось значениями, указанными в
формуле на несколько промежутков, указав при этом, какой должен быть
результат вычислений на каждом промежутке:
![]()
![]()
![]()
![]()
5 ФНЗФНЗ 150
ФНЗ-функция неопределенна на промежутках
При разработке алгоритма будем рассматривать промежутки числовой оси слева направо. Обозначения: ФНЗ – функция не задана; ФНО – функция не определена.
Записывая основной алгоритм решения задачи, вместо вычислений каждой части функции для упрощения будем писать блок1, блок2 и блок3. Поставим в соответствие каждому блоку алгоритм вычисления конкретной функции с учетом её области определения. Последний этап разработки алгоритма решения исходной задачи – подстановка в основной алгоритм вместо блоков 1,2,3 соответствующих вычислительных алгоритмов.
Разбитие функций на блоки
· блок 1=1/2x
· блок 2 = cos x
· блок 3 = (205 – x)^0,5
Составление алгоритма
ввод х
если х<5
блок1
иначе
еслиx<10
«ФНЗ»
иначе
еслиx<20
блок2
иначе
если х<=150
«ФНЗ»
иначе
блок3
все_если
все_если
все_если
все_если
вычисления в каждом из блоков
Блок1. Требуется вычислить функцию
. При вычислении учитываем, что знаменатель не должен равняться нулю. Таким образом, получаем:
Если x-3 <> 0
![]()
печать у
иначе
«ФНО»
все_если
Блок2. Требуется вычислить функцию y=cosx. Здесь никаких ограничений на вычисления нет. Таким образом, получаем:
y = cos x
печать у
Блок3. Требуется вычислить функцию
. При вычислении учитываем, что подкоренное выражение должно быть больше или равно. Получаем:
если 205-х>=1

печать у
иначе
«ФНО»
все_если
В основной алгоритм вместо блоков 1,2,3 подставим алгоритмы вычисления соответствующих частей функции. В итоге получаем алгоритм решения исходной задачи.
ввод х
если х<5
если x-3<>0
![]()
печать у
иначе
«ФНО»
все_если
иначе
если x<10
«ФНЗ»
иначе
если x<20

печать у
иначе
если х<=150
«ФНЗ»
иначе
если 205-х>=1

печать у
иначе
«ФНО»
все_если
все_если
все_если
все_если
все_если
реализация кода в VBA и в excel
1.Excel
=ECKB(B2-3=0;”ФНО”
ЕСЛИB2<5ИB2-3<>0;1/(1\2*2B);
ЕСЛИ(B2<10;"ФНЗ";
ЕСЛИ(B2<20;cos(B2);
ЕСЛИ(B2<150;"ФНЗ";
ЕСЛИ((250-B2)>0; (250-B2);"ФНО"
)
)
)
)
)
)
2.VBA(ObjectRange)
Private Sub CommandButton1_Click()
Dim res As range
Dim x, yAs Single
x = range("B4").Value
If x < 5 and 2*x<>0 Then
y= 1/(2*x)
Else
Ifx -3=0 Then
range("C4").Value = "FNO" '
Else
Ifx<10Then
range("C4").Value = "ФНЗ"
Else
Ifx<20 Then
y = cos x
range("C4").Value = y
Else
Ifx<= 150 Then
range("C4").Value = "ФНЗ"
Else
If250 - x<> 0 and 250 – x >0Then
y = sqr(250-x)
range("C4").Value = y
Else
range("C4").Value = "FNO"
End If
End If
End If
End If
EndIf
EndSub
3.VBA(cells)
Private Sub CommandButton1_Click()
Dimx, yAsSingle
x = cells(2,4).Value
If x < 5 and 2*x <>0 Then
y= 1/(2*x)
Else
Ifx -3 = 0 Then
cells(3,4).Value = "FNO" '
Else
Ifx<10Then
cells(3,4).Value= "ФНЗ"
Else
Ifx<20 Then
y = cos x
cells(3,4).Value= y
Else
Ifx<= 150 Then
cells(3,4).Value= "ФНЗ"
Else
If 250 - x<> 0 and 250 – x >0Then
y = sqr(250-x)
cells(3,4).Value= y
Else
cells(3,4).Value = "FNO"
End If
End If
End If
End If
EndIf
EndSub
4.VBA(MsgBox)
Private Sub CommandButton1_Click()
Dimx, yAsSingle
x = cells(2,4).Value
If x < 5 and 2*x <>0 Then
y= 1/(2*x)
MsgBox "y=" &CStr(y)
Else
If 2*x= 0 Then
cells(3,4).Value = "FNO" '
Else
Ifx<10Then
cells(3,4).Value= "ФНЗ"
Else
Ifx<20 Then
y = cos x
MsgBox "y=" & CStr(y)
Else
Ifx<=1 50 Then
cells(3,4).Value= "ФНЗ"
Else
If 250 - x<> 0 and 250 – x >0Then
y = sqr(250-x)
MsgBox "y=" &CStr(y)
Else
cells(3,4).Value = "FNO"
End If
End If
End If
End If
EndIf
EndSub


