284
.pdfСПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
Основной
1.Информатика. Базовый курс: учеб. пособие для втузов / С.В. Симонович [и др.]; под ред. С.В. Симоновича. – 2-е изд. –
СПб.: Питер, 2009. – 639 с.
2.Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: учеб. пособие для вузов; под ред. Е.К. Хеннера. – 6-е изд.,
стер. – М.: Академия, 2008. – 841 с.
3.Куликов Р.Г., Куликова Т.Г. Информатика: основы программирования на языке Pascal: учеб. пособие. – Пермь: Издво Перм. гос. техн. ун-та, 2008. – 176 с.
4.Острейковский В.А. Информатика: учебник для вузов. – 4-е изд., стер. – М.: Высш. школа, 2007. – 511 с.
5.Информатика: учебник для вузов / Н.В. Макарова [и др.]; под ред. Н.В. Макаровой. – 3-е изд., перераб. – М.: Финансы и статистика, 2007. – 765 с.
6.Хабрейкен Д. Microsoft Office 2003. Все в одном: пер.
сангл. – М.: Вильямс, 2006. – 850 с.
Дополнительный
1.Симонович С.В. Общая информатика: универсальный курс. – нов. изд. – СПб.: Питер, 2008. – 431 с.
2.Меняев М.Ф. Информатика и основы программирования: учеб. пособие. – 3-е изд., стер. – М.: Омега-Л, 2007. – 458 с.
3.Горячев А.В., Шафрин Ю.А. Практикум по информационным технологиям. – М.: Лаб. базовых знаний, 2003. – 272 с.
4.Леоненков А.В. Решение задач оптимизации в среде
MS EXCEL. – СПб.: БХВ-Петербург, 2005. – 690 с.
5.Миллхоллон М., Мюррей К. Microsoft Office Word 2003. – СПб.: Питер, 2005. – 970 с.
6.Льюис Н.Д. Визуальный курс Microsoft Office 2003: пер. с
англ. – М.: ДМК Пресс, 2005. – 325 с.
181
elib.pstu.ru
ПРИЛОЖЕНИЕ
Пример выполнения задания «Планирование инвестиций капитала для получения заданных прибылей»
Постановка задачи
Функциональная зависимость прибыли z некоторого предприятия от начального капиталовложения x имеет вид
z 85 x2 sin2 x .
Известно, что при капиталовложении x0 5 прибыль составляет z0 36,781 . Предприятие работает n 10 сезонов.
Предполагая дальнейший рост прибыли предприятия на 10% за сезон, определим ряд необходимых сезонных значений прибыли, табл. П1.
Таблица П1 Ряд необходимых сезонных значений прибыли
k |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
|
|
|
|
|
|
|
zk |
36,781 |
40,459 |
44,505 |
48,956 |
53,851 |
59,236 |
65,160 |
71,676 |
78,843 |
86,728 |
95,400 |
Нужно определить необходимые капиталовложения xk на каждый сезон работы, позволяющие получить предприятию заданные прибыли zk , где индекс k указывает номер рассматриваемого сезона и меняется от 1 до n.
Расчет сезонных значений капиталовложений
Для решения поставленной задачи необходимо разрешить уравнение zk f x . Решение данного уравнения будем производить последовательно для каждого сезона методом хорд.
182
elib.pstu.ru
Выбранный численный метод позволяет определить решение (если оно существует) уравнения вида F x 0 .
Приведем исходное уравнение к указанному виду:
F x |
8 x2 sin2 |
x zk . |
(П1) |
|
5 |
|
|
Суть метода хорд
Пусть задана функция F x непрерывная на отрезке a;b . Необходимо отыскать значение аргумента x, которое обращает уравнение F x 0 в тождество. При этом подразумевается, что на отрезке a;b такое значение существует и единственно.
Для определенности примем F a 0 , F b 0 (рис. П1). В данном методе итерационный процесс состоит в том, что в качестве приближений к корню уравнения F x 0 принимаются значения c0 , c1 , c2 ,… точек пересечения хорды с осью
абсцисс.
Сначала находим уравнение хорды АВ:
|
|
y F a |
x a |
|
|
||||
|
|
|
|
|
. |
|
|
||
|
|
F b F a |
b a |
|
|
||||
Для точки пересечения ее с осью абсцисс ( x c0 |
, y 0 ) по- |
||||||||
лучим уравнение |
|
|
|
|
|
|
|
|
|
c0 |
a |
b a |
|
F a . |
|
||||
F b F a |
|
||||||||
|
|
|
|
|
|
|
|||
Далее, сравнивая знаки величин |
F a , |
F b и |
F c0 , оп- |
ределяем, на каком отрезке лежит корень уравнения, то есть выбираем тот отрезок, на концах которого значения функции имеют разные знаки.
Для случая, рассмотренного на рис. П1, приходим к выводу, что корень находится на отрезке a;c0 , так как
183
elib.pstu.ru
F a F c0 0 . |
Отрезок c0 ;b |
отбрасываем, то есть b c0 . |
Следующая итерация состоит в определении нового приближения c1 как точки пересечения хорды AB1 с осью абсцисс и т.д.
y
A
a |
c1 |
c0 |
b |
|
ck |
|
x |
|
y F x |
|
|
|
|
B1 |
B |
|
|
|
Рис. П1. Иллюстрация метода хорд
Условие окончания итерационного процесса будет заключаться в близости двух последовательных приближений
ck ck 1 ,
или в близости значения функции в точке ck к нулю
F ck .
Блок-схема алгоритма представлена на рис. П2.
Метод хорд в ряде случаев дает более быструю сходимость итерационного процесса, нежели метод половинного деления. Рассмотренный метод не требует знания дополнительной ин-
формации о функции F x . Например, не требуется, чтобы функция была дифференцируема. Непрерывность F x гарантирует успех применения метода хорд.
184
elib.pstu.ru
|
|
|
|
|
|
|
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a , b , |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F a , |
|
F b , c0 , |
F c0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c1 c0 |
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
F |
a F c0 0 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b c0 , |
F b , c0 , |
F c0 |
|
|
|
|
|
|
a c0 , |
F a , c0 , |
F c0 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
–
c1 c0
+ c0
Конец
Рис. П2. Блок-схема алгоритма метода хорд
В случае если отрезок a;b содержит несколько корней,
данный метод все равно позволит найти какой-либо из них при условии, что знаки функции на концах отрезка a;b будут
различны.
В случае когда знаки функции на концах отрезка a;b бу-
дут одинаковы, но известно, что решение уравнения внутри отрезка существует, нужно разделить заданный отрезок пополам точкой x и проверить знаки функций на концах отрезка и в точке деления. Если это не приводит к положительным результатам, то производят деление пополам каждого из полученных отрезков a; x и x ;b . Такое деление проделывают до тех пор,
пока не будет найден отрезок, на концах которого знаки функции будут различны.
185
elib.pstu.ru
Реализация численного метода на языке Pascal
Применим к уравнению (П1) для каждого значения k 1..n численную процедуру метода хорд. Составим программу на языке Turbo Pascal, реализующую метод хорд применительно к поставленной задаче, используя приведенный выше алгоритм метода.
В первую очередь нужно определить, в каком диапазоне значений x нужно разыскивать корень уравнения (П1), то есть
определить значения отрезка a;b , где содержится хотя бы
один корень. Левую границу можно принять равной начальному значению капиталовложения a x0 . Для нашей задачи a 5 .
Так как по виду функции сложно судить о том, как сильно изменяется функция в зависимости от изменения аргумента, то для определения правой границы отрезка построим график
исходной функции z f x на отрезке 5;15 . Для построения используем табличный процессор MS Excel. Таблица значений
функции z 85 x2 sin2 x и ее график изображены на рис. П3.
По рис. П3 легко увидеть, что все значения из ряда необходимых сезонных значений прибыли табл. П1 достигаются
на отрезке x 5;8 . Таким образом, в качестве правой границы отрезка для поиска решения уравнения (П1) можно
принять значение 8, т.е. b 8 .
Итак, нам необходимо получить решение уравнения
85 x2 sin2 x zk 0
для всех значений zk на отрезке x 5;8 .
186
elib.pstu.ru
z =f (x )
x |
z |
350 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
5 |
36,78 |
300 |
|
|
|
|
|
|
|
|
|
|
6 |
4,497 |
250 |
|
|
|
|
|
|
|
|
|
|
7 |
33,84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
8 |
100,2 |
200 |
|
|
|
|
|
|
|
|
|
|
9 |
22,01 |
z |
|
|
|
|
|
|
|
|
|
|
10 |
47,35 |
150 |
|
|
|
|
|
|
|
|
|
|
11 |
193,6 |
100 |
|
|
|
|
|
|
|
|
|
|
12 |
66,33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
13 |
47,74 |
50 |
|
|
|
|
|
|
|
|
|
|
14 |
307,7 |
0 |
|
|
|
|
|
|
|
|
|
|
15 |
152,2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
|
|
5 |
x
Рис. П3. График функции z f x
Приведем текст программы на языке Turbo Pascal, реализующей алгоритм метода хорд для отыскания корней уравнения (П1) для каждого заданного значения zk на отрезке
x 5;8 .
Текст программы
Program Metod_Chord;
Uses Crt;
Const n=10; a=5; b=8; eps=1e-5;
Var
Fail:Text; Z:Array[1..n+1] of real; k:integer;
c0:real;
187
elib.pstu.ru
Function F(x:real):real;
Begin
F:=8*sqr(x*sin(Pi-x))/5;
End;
Procedure M_Chord(a,b,y0:real;Var c0:real);
Var
Fail:Text;
i:integer;
ya,yb,yc,c1,a1,b1,pogr:real;
Begin
Assign(Fail,'C:\TP\Error.dat');
Rewrite(Fail);
i:=1; ya:=F(a)-y0; yb:=F(b)-y0;
c0:=a-(b-a)/(yb-ya)*ya; yc:=F(c0)-y0;
Repeat c1:=c0;
If ya*yc<0 then begin
b:=c0;
yb:=yc; c0:=a-(b-a)/(yb-ya)*ya; yc:=F(c0)-y0;
end else
begin a:=c0; ya:=yc;
c0:=a-(b-a)/(yb-ya)*ya; yc:=F(c0)-y0;
end; pogr:=abs(c1-c0);
188
elib.pstu.ru
Writeln(Fail,i,pogr:8:5);
i:=i+1;
Until pogr<=eps; Close(Fail);
End;
BEGIN clrscr; Z[1]:=F(a);
For k:=2 to n+1 do begin
Z[k]:=Z[k-1]*1.1; end;
Assign(Fail,'C:\TP\Root.dat');
Rewrite(Fail);
For k:=2 to n+1 do begin
M_Chord(a,b,Z[k],c0); Writeln(Fail,c0:7:5,F(c0):10:5);
end; Close(Fail); readln;
END.
Приведенная выше программа содержит, помимо основного блока, одну функцию и одну процедуру. Функция с именем F имеет одни входной параметр x и возвращает значение функции
85 x2 sin2 x , зависящей от этого параметра. Процедура
M_Chord реализует численный алгоритм метода хорд для отыскания решения уравнения (П1) при заданном значении zk
на отрезке a;b . Входными параметрами процедуры являются
константы a, b и переменная Z[k] (в самой процедуре эта переменная носит название y0), а выходным параметром
189
elib.pstu.ru
является переменная c0, которая и хранит значение решения уравнения (П1).
Константа n отвечает за количество сезонов работы предприятия. Константы a, b хранят значения концов отрезка, на котором производится поиск решения. Константа eps является мерой точности определения решения. Как только разница значений решения уравнения на последующем и предыдущем шаге по модулю будет меньше заданного в константе eps значения, так сразу прекращается поиск решения. Значение решения выбирается в качестве значения, полученного на последнем шаге – c0.
Одномерный массив Z, состоящий из n 1 элемента, предназначен для хранения необходимых значений прибыли для каждого сезона работы предприятия.
Найденные методом хорд значения необходимых на каждый сезон капиталовложений записываются в текстовый файл, путь доступа к которому имеет вид «C:\TP\Root.dat». Номера итераций и погрешности метода на каждой из них записываются в текстовый файл: «C:\TP\Error.dat». Перезапись этого файла производится для каждого сезона и в конечном счете хранит значения, полученные при поиске решения для последнего сезона.
Поиск решения при помощи MS Excel
Открываем программу MS Excel. Для передачи данных из текстовых файлов Root.dat и Error.dat воспользуемся импортом внешних данных. После импорта оформляем данные в виде двух таблиц: таблица значений необходимых капиталовложений и прибыли (табл. П2), и таблица погрешности и номеров итераций (табл. П3).
190
elib.pstu.ru