Скачать .docx  

Курсовая работа: Разработка программных средств анализа графика функции и решение оптимизационных задач

СОДЕРЖАНИЕ

Введение

1 Введение в MicrosoftExcel

2 Основные функции в MicrosoftExcel

3 Формулы в MicrosoftExcel

4 Общие сведения об алгоритмах

5 Метод половинного деления

6 Решение задачи

7 Понятие оптимизационных задач и оптимизационных моделей

8 Решение задачи

Заключение

Приложение А

Приложение Б

Приложение В

Приложение Г

Приложение Д


ВВЕДЕНИЕ

Задачи, требующие оптимизации, встречаются в самых различных сферах человеческой деятельности, так как на их решении базируется принятие решений. Всегда люди, приступая к реализации своих действий, раздумывали над их возможными последствиями и принимали решения, выбирая тем или другим образом способы осуществления конкретных мероприятий. Каждое разумное действие является в определенном смысле и оптимальным, ибо оно, как правило, выбирается после сравнения с другими вариантами.

В связи со сложностью прикладных оптимизационных задач принятие решений в них все в меньшей мере стало основываться на «здоровом смысле», интуиции и опыте человека. Необходим научный подход, базирующийся на математическом описании решаемых проблем.

Первые задачи по изучению экстремальных свойств геометрических фигур (круг, квадрат и т.д.) были решены еще в древние века. Мощным толчком к развитию методов оптимизации послужило создание дифференциального и интегрального исчислений. В течение короткого промежутка времени были созданы новые разделы теории (линейное программирование, теория оптимального управления и т. д.), которые привели к разработке ряда эффективных численных методов решения разнообразных экстремальных задач.

В настоящее время для решения сложных статистических, коммерческих, научных и инженерных задач используют компьютер, который позволяет решать задачи со многими переменными. Входящий в наиболее широко распространенный программный пакет MicrosoftOffice табличный процессор Excel располагает средствами для решения широкого круга задач оптимизации:

1. Ассортимент продукции. Максимизация выпуска товаров при ограничениях на сырье для производства этих товаров.

2. Штатное расписание. Составление штатного расписания для достижения наилучших результатов при наименьших расходах.

3. Планирование перевозок. Минимизация затрат на транспортировку товаров.

4. Составление смеси. Достижение заданного качества смеси при наименьших расходах.


1 ВВЕДЕНИЕ В MicrosoftExcel

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

MicrosoftExcel – это программа, предназначенная для организации данных в таблицы для документирования, сопоставления и графического представления информации. Например, можно использовать Excel для суммирования, вычисления среднего или максимального числа продаж за день; создание графика, показывающего определенный процент продаж, сравнения общего объема продаж за день с тем же показателем других дней недели. Excel освобождает от проведения этих вычислений вручную.

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

Главной составной частью документа MicrosoftExcel является поле, которое содержит определенную информацию. В Excel это поле называется ячейкой. Каждая ячейка находится на пересечении строки (горизонтальной последовательности ячеек) и столбцов (вертикальной последовательности ячеек); строки обозначены числами, а столбцы – буквами. Номер строки и буква столбца, обозначающие определенную ячейку, называется ссылкой на ячейку.

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


2 ОСНОВНЫЕ ФУНКЦИИ В MicrosoftExcel

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

Работая в Excel, почти всегда можно найти подходящую функцию, которая предназначена для решения самых разнообразных вычислительных задач. Эти функции разделены на следующие категории:

- финансовые;

- дата и время;

- математические;

- статистические;

- ссылки и массивы;

- работа с базой данных;

- текстовые;

- логические;

- инженерные.

Каждая функция имеет один или несколько аргументов. Аргументом называются значения, с которыми оперирует функция. В зависимости от формулы аргументом могут быть ссылка на ячейку, имя ячейки, диапазон ячеек, число, логическое значение или текст. У некоторых функций нет аргумента (например, функция ПИ).

Логические функции это функции типа если, и, не, истина, ложь. Эти функции используются для проверки условий и для определения, является ли то или иное утверждение истинным или ложным. Для оценки логических условий используются функции если, и, или, не.

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

Функция ИЛИ возвращает ИСТИНА, если хотя бы один из аргументов имеет значение ИСТИНА; возвращает ЛОЖЬ, если все аргументы имеют значение ЛОЖЬ.

Функция НЕ меняет на противоположное значение своего аргумента. Если аргумент имеет значение ИСТИНА, функция НЕ возвращает значение ЛОЖЬ и наоборот.

С помощью функции ЕСЛИ можно оценить до 30 логических условий и возвратить различные числовые или текстовые значения, в зависимости от того, будут ли логические условия истинными или ложными.

В MicrosoftExcel имеется только одна категория математических функций, но для удобства рассмотрения ее можно разбить на три типа:

1) арифметические функции;

2) алгебраические функции;

3) тригонометрические функции.

Арифметические функции используют такие математические действия, как сложение, вычитание, умножение и деление.

Алгебраические функции позволяют вычислять логарифмы, экспоненты, квадратные корни и другие.

Тригонометрические функции позволяют вычислить синусы, косинусы, тангенсы и так далее.

3 ФОРМУЛЫ В MICROSOFTEXCEL

Формулы представляют собой выражения, по которым выполняются вычисления на странице. Формула начинается со знака равенства (=).

Формула также может включать следующие элементы:

- функции;

- ссылки;

- операторы (знак или символ, задающий тип вычисления в формуле. Существуют математические, логические операторы, операторы сравнения и ссылок);

- константы (постоянное (не вычисляемое) значение).

Ссылка указывает на ячейку или диапазон ячеек листа и передает в Microsoft Excel сведения о расположении значений или данных, которые требуется использовать в формуле. При помощи ссылок можно использовать в одной формуле данные, находящиеся в разных частях листа, а также использовать в нескольких формулах значение одной ячейки. Кроме того, можно задавать ссылки на ячейки других листов той же книги и на другие книги. Ссылки на ячейки других книг называются связями.

Существуют относительные, абсолютные и смешанные ссылки.

Относительная ссылка в формуле, например A1, основана на относительной позиции ячейки, содержащей формулу, и ячейку, на которую указывает ссылка. При изменении позиции ячейки, содержащей формулу, изменяется и ссылка.

Абсолютная ссылка ячейки в формуле, например $A$1, всегда ссылается на ячейку, расположенную в определенном месте. При изменении позиции ячейки, содержащей формулу, абсолютная ссылка не изменяется.

Смешанная ссылка содержит либо абсолютный столбец и относительную строку, либо абсолютную строку и относительный столбец. Абсолютная ссылка столбцов приобретает вид $A1, $B1 и т. д. Абсолютная ссылка строки приобретает вид A$1, B$1 и т. д.

4 Общие сведения об алгоритмах.

Алгоритм – предписание последовательности действий, направленных на решение поставленной задачи. В Exel алгоритм записывается в виде последовательности операторов, включающих значение, ссылки и формулы.

Алгоритм обладает свойствами:

1) однозначности – исключает произвольное толкование и приводит к одному и тому же результату при одинаковых исходных данных;

2) массовости – применяется к другим подобным задачам;

3) результативность – пошаговое выполнение задачи приводит к конечному результату.

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

1. Линейная структура.

2. Разветвляющая структура:

а) с одной ветвью;

б) с двумя ветвями;

в) со множеством ветвей.

3. Циклическая структура.

Принято выделять две циклические структуры с логическим условием дои после тела цикла.

Применительно к электронным таблицам это не совсем точно и справедливо, так как важен и способ организации выхода из цикла, а это:

- бесконечный цикл;

- вложенные циклические структуры;

- цикл с заданным заранее количеством повторений;

-расчетно-динамический цикл (новый, характерный для электронной таблицы), количество повторений которого определяется в ходе пересчета таблицы, а параметры задаются в результате ссылки на ячейку, где содержаться расчетно-переменные данные.

- итерационный цикл (количество повторений заранее неизвестно и зависит от осуществления или достижения заданной точности или последовательности приближений к искомому значению, где вычисление последующего члена производится через предыдущий член);


5 Метод половинного деления

Этот метод отличается от выше рассмотренных методов тем, что для него не требуется выполнения условия, что первая и вторая производная сохраняют знак на интервале [a , b ]. Метод половинного деления сходится для любых непрерывных функций f (x ) в том числе недифференцируемых.

Разделим отрезок [a , b ] пополам точкой Если (что практически наиболее вероятно), то возможны два случая: либо f (x ) меняет знак на отрезке [a , c ] (Рис. 1), либо на отрезке [c , b ] (Рис. 2)

Рис. 1

Рис. 2

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

6 РЕШЕНИЕ ЗАДАЧИ

Дана следующая функция:

F(х)=60*sin(5.5*x*pi/180)-69*cos(2.7*x*pi/180)-exp(x/192)-181/x

где Х изменяется от 0 до 400. Найти точки пересечения функции с точкой А (А=0).

Для нахождения точек пересечения используем метод половинного деления. Для этого от данной функции отнимем А (F(x)-А).

Построим алгоритм (приложение А).

Для того, что бы найти точки пересечения функции с точкой А , построим график (приложение В) по данным приведенным в таблице (приложение Г).

В графе Е2 введем формулу для нахождения значений где происходит смена знака =ЕСЛИ(В2*В3<=0; “смена знака”;” “).

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

Например, смена знака происходит при значении Х=15, тогда в ячейку G 2 введем значение Х1=15,а в ячейку G3 введем формулу =ЕСЛИ(J2*L2<=0;G2;I2). В ячейку Н2-значение Х2=20, а в ячейку Н3 введем формулу =ЕСЛИ(J2*L2<=0;I2;H2), это значит, что на этом интервале про исходит пересечение функции с координатной осью, то есть с точкой А. Для нахождения среднего значения в ячейку I2 введем формулу =(G2+H2)/2. В ячейки J2, K2, L2 введем формулы заданной в условии функции, где Х, для каждой из заданных ячеек, будет принимать значение Х1, Х2, Хср. соответственно.

Для того, чтобы определить на какой половине происходит смена знака в ячейку М2 введем формулу

=ЕСЛИ(J2*L2<=0;”смена знака на 1-ой половине”;”cмена знака на 2-ой половине”).

В столбце N приведено количество шагов, за которое будит достигнута точность определения значения (х) не ниже 0,001.

Для определения погрешности, в ячейку О2 введем формулу =0-L2. Таким образом из приведенной таблицы видно, что значение Х с точностью до 0,001 определено за 14 шагов.

X1 X2 Xср F(x1) F(x2) F(xcр) Кол-во шагов Погреш-ность
15,000 20,000 17,500 -6,129 5,665 1,368 смена знака на 1-ой половине 1 -1,3678
15,000 17,500 16,250 -6,129 1,368 -1,969 смена знака на 2-ой половине 2 1,9692
16,250 17,500 16,875 -1,969 1,368 -0,199 смена знака на 2-ой половине 3 0,1991
16,875 17,500 17,188 -0,199 1,368 0,610 смена знака на 1-ой половине 4 -0,6096
16,875 17,188 17,031 -0,199 0,610 0,212 смена знака на 1-ой половине 5 -0,2116
16,875 17,031 16,953 -0,199 0,212 0,008 смена знака на 1-ой половине 6 -0,0078
16,875 16,953 16,914 -0,199 0,008 -0,095 смена знака на 2-ой половине 7 0,0952
16,914 16,953 16,934 -0,095 0,008 -0,044 смена знака на 2-ой половине 8 0,0436
16,934 16,953 16,943 -0,044 0,008 -0,018 смена знака на 2-ой половине 9 0,0179
16,943 16,953 16,948 -0,018 0,008 -0,005 смена знака на 2-ой половине 10 0,0050
16,948 16,953 16,951 -0,005 0,008 0,001 смена знака на 1-ой половине 11 -0,0014
16,948 16,951 16,949 -0,005 0,001 -0,002 смена знака на 2-ой половине 12 0,0018
16,949 16,951 16,950 -0,002 0,001 0,000 смена знака на 2-ой половине 13 0,0002
16,950 16,951 16,950 0,000 0,001 0,001 смена знака на 1-ой половине 14 -0,0006

GHIJKLMNO

По полученным данным с помощью мастера диаграмм построим график погрешности.

Для определения правильности решения произведем проверку с помощью подбора параметров.

Для этого в ячейку А107 введем формулу заданной функции, а в ячейку В107 введем значение Х при котором происходит смена знака. Далее необходимо поставить курсор в ячейку А107 и из меню сервис выбрать подбор параметра . В появившемся окне ввести необходимые данные, нажать кнопку ОК .

А В
105 Подбор параметров
106 F(X) X
107 0,0000 16,950
108 0,0005 28,806
109 0,0003 54,235
110 0,0000 98,448
111 -0,0002 146,365
112 0,0000 158,039
113 0,0000 185,884
114 0,0001 230,163
115 0,0000 318,118
116 0,0009 361,607

В появившемся окне Результат подбора параметра нужно нажать

кнопку ОК, после чего в ячейках А107 и В107 появится результат поиска.


7 Понятие оптимизационных задач и оптимизационных моделей

Экономико-математические задачи, цель которых состоит в нахождении наилучшего, то есть оптимального с точки зрения одного или нескольких критериев варианта использования имеющихся ресурсов, называются оптимизационными.

Оптимизационные задачи решаются с помощью оптимизационных моделей методами математического программирования.

Математическое программирование – это раздел прикладной математики, который изучает задачи оптимизации и методы их решения с ориентацией на современные средства компьютерной техники.

Структура оптимизационной модели включает целевую функцию, области допустимых решений и системы ограничений, определяющих эту область. Целевая функция в самом общем виде также состоит из трех элементов:

· управляемых переменных;

· неуправляемых переменных;

· формы функции (вида зависимости между ними).

Область допустимых решений – это область, в пределах которой осуществляется выбор решений. В экономических задачах она ограничена наличными ресурсами и условиями, которые записываются в виде системы ограничений, состоящей из уравнений и неравенств.

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

Сущность задач оптимизации: определить значение переменных х1 , х2 ,..., хn , которые обеспечивают экстремум целевой функции Е, с учетом ограничений, наложенных на аргументы этой функции. При этом сложность решения задач зависит:

· от вида функциональных зависимостей, то есть от связи функции Е с элементами решения;

· от размерности задачи, то есть от количества элементов решения;

· от вида и количества ограничений, накладываемых на элементы решения.

8 РЕШЕНИЕ ЗАДАЧИ

Кондитерская фабрика для производства трех видов карамели А, В и С использует три вида сырья: сахарный песок, патоку и фруктовое пюре. Нормы расхода сырья на производство 1 кг. Карамели заданы в таблице.

Наименование сырья Нормы расхода (кг./кг.)
A B C
Сахарный песок 0,6 0,5 0,6
Патока 0,4 0,4 0,3
Фруктовое пюре 0,1 0,2 0,2

Запасы сырья на складе соответственно равны V1, V2 и V3 кг. Прибыль от реализации 1 кг. Продукции каждого вида определяется значениями РА, РВ и РС. Найти план производства карамели, обеспечивающий максимальную прибыль.

Запасы сырья (кг.) Прибыль от реализации (руб./кг.)
V1 V2 V3 Pa Pb Pc
800 600 120 1,08 1,12 1,28

Подготовим задачу к решению.

Пусть х1 – карамель вида А (кг.)

х2 – карамель вида В (кг.)

х3 – карамель вида С (кг.).

Тогда система ограничений и целевая функция запишутся следующим образом:

Ра*Х1+Рв*Х2+Рс*Х3 =>mах (целевая функция);

х1*0,6+х2*0,5+х3*0,6<=800

х1*0,4+х2*0,4+х3*0,3<=600 ограничения на запасы сырья (сахарный

х1*0.1+х2*0,2+х3*0,2<=120 песок, патока, фруктовое пюре)

х1>=0; x2>=0; x3>=0;

x1, x2, x3- целые числа.

Для решения задачи в Excel запишем ее в виде, представленном на таблице 1.

Таблица 1 – Таблица для решения задачи

Кг. ограничение
х1 0 800 >= 0
х2 0 600 >= 0
х3 0 120 >= 0
Mах прибыль: 0

В соответствии с условием прибыль должна быть максимальной, поэтому в таблице 1 добавлена строка «Mах прибыль». В ней буду суммировать прибыль от реализации продукции.

Вызываю Поиск решения из меню Сервис.

Определяю целевую ячейку – $D$8, устанавливаю переключатель в максимальное значение. Ввожу диапазон изменяемых ячеек ($B$11:$В$13) и вношу ограничения. Прежде всего, количество продукта не может быть отрицательным ($B$11:$В$13>=0), далее добавляю ограничения на запасы сырья, которое должно быть не более нормативного (800>=G$5; 600>=G$6; 120>=G$7). Нажимаю кнопку Выполнить .

В появившемся окне Результаты поиска решения нажимаю кнопку ОК и получаю решение задачи (приложение Д).Из полученных данных видно, что максимальная прибыль при производстве карамели составила 1296 рублей, причем такая прибыль будет получена при производстве 1200кг. Карамели вида А.

Для проверки правильности решения введем дополнительные ограничения.

В первом варианте я ввела ограничение на карамель вида В и получила результат приведенный в таблице 1.

Таблица 1

Вариант 1 Запасы сырья (кг.) Ограничение
Х1 1170 800 >= 709,5
Х2 15 600 >= 474
Х3 0 120 >= 120
Целевая функция 1280,4 Дополнительное ограничение Х2>=15

Из таблицы видно, что прибыль по сравнению с данными полученными в приложении Д уменьшилась на 15,6 рублей, при этом уменьшилось и производство карамели вида А на 30кг.

Во втором варианте я ввела ограничение на карамель вида С и получила следующий результат

Вариант 2 Запасы сырья (кг.) Ограничение
Х1 1180 800 >= 714
Х2 0 600 >= 475
Х3 10 120 >= 120
Целевая функция 1287,2 Дополнительное ограничение Х3>=10

Из полученных данных видно, что прибыль, так же как и в первом варианте, уменьшилась относительно данных из приложения Д на 8,8 рубля, а производство карамели вида А уменьшилось на 20кг.

По полученным данным можно сделать вывод, что исходное решение задачи было верным.


ЗАКЛЮЧЕНИЕ

В данной курсовой работе были решены оптимизационные задачи с использованием программных средств MicrosoftExcel.

В процессе решения первой задачи были построены: график функции F(x) с учетом параметра А=0 в заданном диапазоне значений переменной Х, которые изменяются в диапазоне от 0 до 400. Были найдены интервалы значений переменной Х в пределах, которых функция принимает значение параметра А. При использовании метода половинного деления были найдены значения переменной Х, при которых функция принимает значение параметра А, в соответствии с заданной точностью, равной 0,001. Проверка правильности вычислений была осуществлена с помощью «Подбора параметра».

Решение второй задачи осуществлялось с помощью «Поиска решений» средствами MicrosoftExcel. Была составлена целевая функция и ограничения (соответствующие условию задачи). В результате был выбран оптимальный вариант решения задачи. Для проверки этого варианта были внесены дополнительные ограничения, которые показали, что исходно оптимальный вариант решения был верен.


ПРИЛОЖЕНИЕ А

Начало

Описание F(х), А, ∆


Ввод а, b


с=(a+b)/2

F(a), F(b), F(c)


нет да

(F(a)-A)+(F(c)-A)<=0

a: = cb: = c

нет да

(b-a)<=∆

Выво с,F(c), F(c)-A


Конец


ПРИЛОЖЕНИЕ Б


ПРИЛОЖЕНИЕ В


ПРИЛОЖЕНИЕ Г

А В С D E

X F(x) A F(x)-A Смена знака
5 -76,6150 0 -76,6150
10 -31,4838 0 -31,4838
15 -6,1292 0 -6,1292 смена знака
20 5,6646 0 5,6646
25 5,7512 0 5,7512 смена знака
30 -2,4673 0 -2,4673
35 -13,9441 0 -13,9441
40 -23,0017 0 -23,0017
45 -24,6667 0 -24,6667
50 -15,8988 0 -15,8988 смена знака
55 3,6061 0 3,6061
60 31,2394 0 31,2394
65 61,9826 0 61,9826
70 89,4820 0 89,4820
75 107,4577 0 107,4577
80 111,1312 0 111,1312
85 98,3486 0 98,3486
90 70,1426 0 70,1426
95 30,6047 0 30,6047 смена знака
100 -13,9123 0 -13,9123
105 -56,0851 0 -56,0851
110 -89,1227 0 -89,1227
115 -108,1489 0 -108,1489
120 -111,1603 0 -111,1603
125 -99,3512 0 -99,3512
130 -76,7403 0 -76,7403
135 -49,1871 0 -49,1871
140 -23,0264 0 -23,0264
145 -3,6307 0 -3,6307 смена знака
150 5,7743 0 5,7743
155 4,7747 0 4,7747 смена знака
160 -4,2332 0 -4,2332
165 -16,7039 0 -16,7039
170 -27,1093 0 -27,1093
175 -30,3377 0 -30,3377
180 -23,0020 0 -23,0020
185 -4,3520 0 -4,3520 смена знака
190 23,4221 0 23,4221
195 55,5727 0 55,5727
200 85,7823 0 85,7823
205 107,5385 0 107,5385
210 115,5876 0 115,5876
215 107,1397 0 107,1397
220 82,5521 0 82,5521
225 45,3337 0 45,3337
230 1,4645 0 1,4645 смена знака
235 -41,8225 0 -41,8225
240 -77,5282 0 -77,5282
245 -100,3165 0 -100,3165
250 -107,5698 0 -107,5698
255 -99,8416 0 -99,8416
260 -80,6115 0 -80,6115
265 -55,4037 0 -55,4037
270 -30,4751 0 -30,4751
275 -11,3711 0 -11,3711
280 -1,6789 0 -1,6789
285 -2,2580 0 -2,2580
290 -11,1210 0 -11,1210
295 -23,9866 0 -23,9866
300 -35,3741 0 -35,3741
305 -39,9858 0 -39,9858
310 -34,0560 0 -34,0560
315 -16,3539 0 -16,3539 смена знака
320 11,3948 0 11,3948
325 44,7702 0 44,7702
330 77,5536 0 77,5536
335 103,0577 0 103,0577
340 115,5964 0 115,5964
345 111,7635 0 111,7635
350 91,2325 0 91,2325
355 56,8943 0 56,8943
360 14,2986 0 14,2986 смена знака
365 -29,4800 0 -29,4800
370 -67,3017 0 -67,3017
375 -93,4252 0 -93,4252
380 -104,6518 0 -104,6518
385 -100,9012 0 -100,9012
390 -85,0963 0 -85,0963
395 -62,3901 0 -62,3901
400 -38,9164 0 -38,9164 смена знака

ПРИЛОЖЕНИЕ Д

B C D E F G
Наименование сырья Нормы расхода (кг./кг.) Запасы сырья (кг.) Ограничение
A B C
Сахарный песок 0,6 0,5 0,6 800 >= 720
Патока 0,4 0,4 0,3 600 >= 480
Фруктовое пюре 0,1 0,2 0,2 120 >= 120
Прибыль от реализации (руб./кг.) 1,08 1,12 1,28
Целевая функция 1296
x1 1200 А=х1
x2 0 В=х2
x3 0 С=х3

Литература

1. Банди Б. Основы линейного программирования. – М.: Радио и связь, 1989.

2. Карпов Б. MicrosoftExcel 2000. Справочник.- Питер, 2002.

3. Семенищенков А. MicrosoftExcel. Параметры и методы практического программирования. – Брянск, 1998.

4. РычковВ. Microsoft Excel 2000. – Питер, 2000.