Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

284

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
2.76 Mб
Скачать

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

Основной

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

a;b

Реализация численного метода на языке 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