Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Автоматизация измерений, контроля и испытаний. Курсовое проектирование
.pdf
91
Рис. 8.1. График функции у = –(х – 3)2 и результат поиска
max
X
.
(8.9)
y(x)
y(X
max
)
0
–100
–200
–10 0
10
x, X
max
Для примера выберем функцию у = х3 – 75x.
Для поиска экстремума в MathCAD методом дихотомии (от греч.
– на две части и … – сечение) воспользуемся программой-
функцией. Чтобы её записать, введём имя будущей программы-функции
X
. Затем нужно создать тело программы-функции, для чего открыть
max
панель «Programming», выбрав в главном меню «Вид – Панели инструментов – Программирование», и на появившейся панели щёлкнуть левой
кнопкой мыши на «Add line». После чего на экране появится вертикальная черта и вертикальный столбец с двумя полями для ввода операторов,
образующих тело программы-функции.
Теперь заполним поля программы-функции операторами. Чтобы перейти в первое сверху поле, нужно щёлкнуть на нём мышью, после чего
ввести первый оператор тела программы-функции. Так как самое нижнее
поле всегда предназначено для определения возвращаемого программой
значения, то поля ввода для дополнительных операторов открываются с
помощью щелчка на кнопке «Add line» панели программирования. При
этом поле ввода добавляется внизу выделенного к этому моменту оператора. Итак, нам потребуется 5 полей. В первое поле вводим начальное
значение диапазона а = –10, во второе – конечное b = 10, в третье – погрешность ε = 0,01. В четвёртое поле тела программы-функции запишем
экстремума (максимума) методом сканирования
Метод деления отрезка пополам (дихотомии)

92
a
ba
xyxyxb
xyxyxa
xx
ba
x
ba
b
a
X
max
.ε10ifbreak
)1()2(if2
)1()2(if1
ε12
2
1
εwhile
01.0ε
10
10
:
(8.10)
оператор цикла «while», для чего нужно на панели «Programming» выбрать «while». Оператор «while» состоит из условия выполнения цикла и
тела. В пятое поле программы-функции запишем переменную a, значению которой будет соответствовать значение программы-функции.
Для построения графика необходимо выбрать в главном меню «Вид –
Панели инструментов – График», далее на появившейся панели «Graph»
выбрать элемент «Декартов график», после чего на рабочей области программы MathCAD появится область построения графика. По оси ординат
области построения графика необходимо ввести «y(x), y(X
абсцисс – «x, X
». Далее двойным щелчком левой кнопки мыши по об-
max
)», а по оси
max
ласти построения графика необходимо вызвать панель форматирования
графика, на которой выбрать закладку «Трассировки», выделить мышью
«trace2» и в поле «Символ» выбрать «dmnd». Кроме того, для удобства
можно установить диапазон значений по оси абсцисс путём ввода соответствующих значений в области на оси x графика. Поскольку значения
по оси х изменяются от a = –10 до b =10, их и введём.
написать в рабочей области MathCAD интересующую нас переменную и
поставить знак равенства, после чего программа автоматически выведет
значение экстремума. При Х
75x
водную y' = 3х2 – 75. При y' = 0 получаем x = ±5, что совпадает с расчё-
Чтобы получить численное значение экстремума функции y(x), нужно
Проверить результат машинного поиска экстремума функции у = х3 –
можно аналитически. Для этого приравняем нулю её первую произ-
= –5,063 получим у
max
max(Хmax
) = 249,94.

93
тами, сделанными на MathCAD. Тогда у
3
х
max
X
.
(8.11)
y(x)
y(X
max
)
x, X
max
400
200
0
–200
–400
–10 0 10
max(Хmax
= –5) = 250, что соответ-
ствует машинному расчёту.
График функции и результат поиска экстремума показан на рис. 8.2.
Рис. 8.2. График функции у = х3 – 75x и результат поиска
экстремума (максимума) методом деления отрезка пополам
Для примера возьмём функцию у = х – 6sin
Для поиска экстремума в MathCAD воспользуемся программойфункцией. Чтобы её записать, введём имя будущей программы-функции
X
. Затем нужно создать тело программы-функции, для чего открыть
max
панель «Programming», выбрав в главном меню «Вид – Панели инструментов – Программирование», и на появившейся панели щёлкнуть левой
кнопкой мыши на «Add line». После чего на экране появится вертикальная черта и вертикальный столбец с двумя полями для ввода операторов,
образующих тело программы-функции.
Теперь заполним поля программы-функции операторами. Чтобы перейти в первое сверху поле, нужно щёлкнуть на нём мышью, после чего
ввести первый оператор тела программы-функции. Так как самое нижнее
поле всегда предназначено для определения возвращаемого программой
значения, то поля ввода для дополнительных операторов открываются с
помощью щелчка на кнопке «Add line» панели программирования. При
этом поле ввода добавляется внизу выделенного к этому моменту опера-
Метод золотого сечения
.

94
тора. Итак, нам потребуется 8 полей. В первое поле мы вводим началь-
2
53
a
ba
abzax
xx
xb
xyxy
axbx
xx
xa
xyxy
ba
axbx
abzax
z
b
a
X
max
εifbreak
)(1
12
2
)1()2(if
)1(2
21
1
)1()2(if
εwhile
)1(2
)(1
2
53
01.0ε
10
10
:
.
(8.12)
ное значение диапазона а = –10, во второе – конечное, т.е. b = 10, в третье – погрешность ε = 0,01, в четвёртое – коэффициент деления отрезков
z =
, в пятое и шестое – начальные значения точек x1 = a + z(b –
a), x2 = b – (x1 – a).
В седьмом поле тела программы-функции запишем оператор цикла
«while», для чего нужно на панели «Programming» выбрать «while». Оператор «while» состоит из условия выполнения цикла и тела. В восьмом
поле программы-функции запишем переменную a, которой будет соответствовать значение программы-функции.
Для построения графика необходимо выбрать в главном меню «Вид –
Панели инструментов – График», далее на появившейся панели «Graph»

95
выбрать элемент «Декартов график», после чего на рабочей области про-
3
х
3
х
3
х
2
1
y(x)
y(X
max
)
x, X
20
10
0
–10
–20
–10 –5 0 5 10
граммы MathCAD появится область построения графика. По оси ординат
области построения графика необходимо ввести «y(x), y(X
абсцисс – «x, X
». Далее двойным щелчком левой кнопки мыши по об-
max
)», а по оси
max
ласти построения графика необходимо вызвать панель форматирования
графика, на которой выбрать закладку «Трассировки», выделить мышью
«trace2» и в поле «Символ» выбрать «dmnd».
Кроме того, для удобства можно установить диапазон значений по
оси абсцисс путём ввода соответствующих значений в области на оси x
графика. Поскольку значения по оси х изменяются от a = –10 до b = 10,
их и введём. В результате получим график, изображённый на рис. 8.3.
Чтобы получить численное значение экстремума функции y(x), нужно
написать в рабочей области MathCAD интересующую нас переменную и
поставить знак равенства, после чего программа автоматически выведет
значение экстремума. При Х
Проверить результат поиска экстремума функции у = х – 6sin
но аналитически. Для этого приравняем нулю её первую производную
y' = 1 – 2cos(
2пπ. Поскольку данная функция периодическая, то можно говорить о ло-
кальном экстремуме (максимуме) на отрезке [–10, 10]. Ему будет соответствовать значение аргумента х = –π, что совпадает с расчётами, сде-
Рис. 8.3. График функции у = х – 6sin
и
результат поиска экстремума (максимума)
методом «золотого сечения»
= –3,144 у
max
max(Хmax
). При y' = 0 получим x = 3arccos(
) = 2,055.
) ± 2пπ, или х = π ±
мож-

96
ланными на MathCAD. Тогда у
max
X
.
(8.13)
max(Хmax
= –π) = 2,055, что полностью соот-
ветствует машинному расчёту.
Метод квадратичной интерполяции
Для примера снова выберем функцию у = –(x – 3)2 при–10 < х <10.
Для поиска экстремума в MathCAD воспользуемся программойфункцией. Чтобы записать её, введём имя будущей программы-функции
X
. Затем нужно создать тело программы-функции, для чего открыть
max
панель «Programming», выбрав в главном меню «Вид – Панели инструментов – Программирование», и на появившейся панели щёлкнуть левой
кнопкой мыши на «Add line». После чего на экране появится вертикальная черта и вертикальный столбец с двумя полями для ввода операторов,
образующих тело программы-функции.
Теперь заполним поля программы-функции операторами. Чтобы перейти в первое сверху поле, нужно щёлкнуть на нём мышью, после чего
ввести первый оператор тела программы-функции. Так как самое нижнее
поле всегда предназначено для определения возвращаемого программой
значения, то поля ввода для дополнительных операторов открываются с
помощью щелчка на кнопке «Add line» панели программирования. При
этом поле ввода добавляется внизу выделенного к этому моменту оператора. Итак, нам потребуется 6 полей. В первое поле вводим предполагаемое значение экстремума x1 = 1, во второе – начальное значение расчётного экстремума, не равное x1: xm = 777, в третье – шаг h = 1, в четвёртое – погрешность ε = 0,01. В пятом поле тела программы-функции
запишем оператор цикла «while», для чего нужно на панели «Programming» выбрать «while». Оператор «while» состоит из условия выполнения цикла и тела. В шестом поле программы-функции запишем переменную xm, которой будет соответствовать значение программы-функции.

97
xm
xmx
xxm
c
b
xm
h
hxxyxxyhxxy
b
xyxyxy
h
c
hxx
hxx
xxm
h
xm
x
X
max
1
ε1ifbreak
2
2
)12)(2(1)1(4)12)(0(
))2()1(2)0((
2
1
12
10
ε1while
01.0ε
1
777
11
:
2
2
.
(8.14)
Панели инструментов – График», далее на появившейся панели «Graph»
выбрать элемент «Декартов график», после чего на рабочей области программы MathCAD появится область построения графика. По оси ординат
области построения графика необходимо ввести «y(x), y(X
абсцисс «x, X
сти построения графика необходимо вызвать панель форматирования
графика, на которой выбрать закладку «Трассировки», выделить мышью
«trace2» и в поле «Символ» выбрать «dmnd». Кроме того, для удобства
можно установить диапазон значений по оси абсцисс путём ввода соответствующих значений в области на оси x графика. Поскольку значения
по оси х изменяются от a = –10 до b = 10, их и введём.
Для построения графика необходимо выбрать в главном меню «Вид –
». Далее двойным щелчком левой кнопки мыши по обла-
max
Этот график показан на рис. 8.4.
)», а по оси
max

98
Рис. 8.4. График функции у = –(х – 3)2
y(x)
y(X
max
)
x, X
max
0
–100
–200
–10 –5 0 5 10
и результат поиска экстремума (максимума)
методом квадратичной интерполяции
Чтобы получить численное значение экстремума функции y(x), нужно
написать в рабочей области MathCAD интересующую нас переменную и
поставить знак равенства, после чего программа автоматически выведет
значение экстремума. При Х
Проверить результат поиска экстремума функции у = –(х – 3)
max
= 3 у
max(Хmax
) = 0.
2
можно
аналитически. Для этого приравняем нулю её первую производную y' =
–2(х – 3). При y' = 0 получаем x = 3, что совпадает с расчётами, сделанными на MathCAD. Тогда у
max(Хmax
= 3) = 0, что полностью соответ-
ствует машинному расчёту.
Задание
Для каждого варианта заданы: метод оптимизации, функция оптимизации.
Необходимо найти экстремум (максимум) функции в соответствии с
вариантом, приведенным в табл. 8.1, построить график зависимости исходных данных y = f(x) и нанести на него найденный экстремум.

99
Варианты заданий
Номер
вари-
анта
Метод оптимизации
Функция
1
Сканирования
y(x) = x3 – 30x2 + 3x + 1
2
Дихотомии
y(x) = x3 – 30x2 + 9x + 8
3
Золотого сечения
y(x) = x3 – 30x2 + 4x + 1
4
Квадратичной интерполяции
y(x) = x3 – 30x2 + 8x + 6
5
Сканирования
y(x) = x3 – 30x2 + 25x + 10
6
Дихотомии
y(x) = x3 – 30x2 + 16x + 2
7
Золотого сечения
y(x) = x3 – 30x2 + 37x + 49
8
Квадратичной интерполяции
y(x) = x3 – 30x2 + 6x + 12
9
Сканирования
y(x) = x3 – 30x2 + 29x + 35
10
Дихотомии
y(x) = x3 – 30x2 + 10x + 17
11
Золотого сечения
y(x) = x3 – 30x2 +2x + 3
12
Квадратичной интерполяции
y(x) = x3 – 30x2 +12x + 8
13
Сканирования
y(x) = x3 – 30x2 +34x + 13
14
Дихотомии
y(x) = x3 – 30x2 +19x + 14
15
Золотого сечения
y(x) = x3 – 30x2 +11x + 27
16
Квадратичной интерполяции
y(x) = x3 – 30x2 + 20x + 8
17
Сканирования
y(x) = x3 – 30x2 + 5x + 3
18
Дихотомии
y(x) = x3 – 30x
2
+ x + 18
19
Золотого сечения
y(x) = x3 – 30x2 + 7x + 5
20
Квадратичной интерполяции
y(x) = x3 – 30x2 + 33x + 2
21
Сканирования
y(x) = x3 – 30x2 + 15x + 10
Таблица 8.1

100
Окончание табл. 8.1
Номер
вари-
анта
Метод оптимизации
Функция
22
Дихотомии
y(x) = x3 – 30x2 + 36x + 6
23
Золотого сечения
y(x) = x3 – 30x2 + 40x + 35
24
Квадратичной интерполяции
y(x) = x3 – 30x2 + 18x + 6
25
Сканирования
y(x) = x3 – 30x2 + 39x + 25
26
Дихотомии
y(x) = x3 – 30x2 + 17x + 4
27
Золотого сечения
y(x) = x3 – 30x2 + 31x + 29
28
Квадратичной интерполяции
y(x) = x3 – 30x2 + 35x + 14
29
Сканирования
y(x) = x3 – 30x2 + 22x + 5
30
Дихотомии
y(x) = x3 – 30x2 + 38x + 30
31
Золотого сечения
y(x) = x3 – 30x2 + 14x + 19
32
Квадратичной интерполяции
y(x) = x3 – 30x2 + 32x + 32
33
Сканирования
y(x) = x3 – 30x2 + 21x + 37
34
Дихотомии
y(x) = x3 – 30x2 + 13x + 24
35
Золотого сечения
y(x) = x3 – 30x2 + 27x + 10
36
Квадратичной интерполяции
y(x) = x3 – 30x2 + 30x + 26
37
Сканирования
y(x) = x3 – 30x2 + 23x + 37
38
Дихотомии
y(x) = x3 – 30x2 + 28x + 39
39
Золотого сечения
y(x) = x3 – 30x2 + 24x + 19
40
Квадратичной интерполяции
y(x)= x
3
– 30x2 + 26x + 40
1. Экстремум каких функций R(х) можно найти методом сканиро-
вания?
2. В чем заключается основное достоинство метода сканирования?
3. Каким способом можно повысить точность нахождения реше-
ния?
4. Для каких функций пригоден метод половинного деления?
5. Каково основное достоинство метода половинного деления?
Контрольные вопросы
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
