Matlab  |  Mathcad  |  Maple  |  Mathematica  |  Statistica  |  Другие пакеты
Internet-класс  |  Примеры  |  Методики  |  Банк задач  |  Консультации & Форум  |  Download  |  Ссылки  |  Конкурсы
 
"Экономическое моделирование и прогнозирование на компьютере"
1.3. В банк – с пакетом MATHEMATICA
Э.Ю.Лернер, О.А.Кашина

Вернуться на страницу <Методические разработки>
archive.gif (75 bytes) Архив параграфа 1.3 (304 Кб, формат RTF)

Владение MATHEMATICой
“…свелось к рудиментарному владению латинским и греческим алфавитами”

Да простит нас известный физик Р.Йост за столь вольную интерпретацию его высказывания (в нем речь шла о математическом уровне физика-теоретика). Дело в том, что пользователи старых версий пакета MATHEMATICA должны были так же свободно владеть ключевыми словами, как физики-теоретики – своими закорючками вроде "j" и "y" . Теперь же благодаря более развитому интерфейсу новых версий пакета это требование не является столь жестким.

Рассмотрим интерфейс пакета MATHEMATICA на примере решения одной несложной задачи.

Расчет сложных процентов

Представьте себе, что Вы положили 1 млн. рублей в банк “Золотые горы” под 100% годовых. Для простоты будем считать, что Вы пришли 1 января 2000 года. Придя через год, Вы получите в 2 раза большую сумму, – то есть на 1 января 2001 года Вы будете иметь 2 млн. рублей. Если же Вы придете не через год, а через полгода, то есть 1 июля 2000 года, то получите сумму в 1,5 раза большую первоначальной, то есть 1,5 млн. рублей. Еще через полгода она увеличится в 1,5 раза и составит 2,25 млн. рублей. А если приходить в банк каждый месяц? 1 февраля 2001 года сумма Вашего вклада составит 1 млн., увеличенный в раз, то есть млн. рублей. Нетрудно видеть, что каждый месяц мы будем увеличивать сумму вклада в раз. Таким образом, 1 января 2001 года сумма вклада составит , то есть, как нетрудно посчитать на калькуляторе, примерно 2 млн. 613 305 рублей. Вы видите, что это значительно больше, чем сумма, полученная в первом или во втором случае. Не ошибка ли это? Ведь при работе с дробями калькулятор производит округления. Проверим наши расчеты в пакете MATHEMATICA.

Мы считаем, что MATHEMATICA уже установлена на Вашем компьютере. Если ее фирменного значка еще нет на Вашем рабочем столе, найдите файл Mathematica.exe с соответствующей пиктограммой и перетащите ее на рабочий стол.

Двойной щелчок по пиктограмме – и пакет запущен. Перед Вами ненадолго появляется заставка, а затем – чистый лист (Notebook, записная книжка) и меню с панелью инструментов наверху.

Просто пишем на нем (13/12)^12 и нажимаем Shift+Enter.

Замечание. В пакете MATHEMATICA существуют множество приемов, облегчающих ввод формул. Так, например, для возведения в степень некоторого выражения его нужно выделить и нажать Ctrl+^. Скобки рисуются сами собой и курсор переходит в верхний индекс, куда следует ввести показатель степени. Ctrl+пробел возвращает курсор в строку. Вообще, многие клавиши, будучи нажаты вместе с Ctrl, создают шаблон формулы – поэкспериментируйте.

Вы увидите следующую картину:

Image1061.jpg (2881 bytes)

Рисунок 1.3.1. Фрагмент рабочего документа пакета MATHEMATICA.

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

Ну как тут не вспомнить анекдот про математика, который на вопрос “Где мы?”, заданный ему с воздушного шара заблудившимися путешественниками, немного подумав, дал абсолютно точный, но совершенно бесполезный ответ. (Догадайтесь, какой). Но не спешите обвинять пакет MATHEMATICA – Вы задали вопрос в терминах целых чисел – в них же и выражен ответ. Если бы после числа 13 Вы поставили точку, ответ был бы в 10-ичных дробях: 2.61304, то есть примерно то же, что и было получено с помощью калькулятора. Но мы помним, что это число получено в результате расчетов с округленными значениями.

Как же представить точное значение (дробь) в удобоваримом виде? В пакете MATHEMATICA есть возможность записать результаты вычислений со сколь угодно высокой степенью точности (она ограничивается лишь возможностями компьютера). Здесь нужно иметь в виду следующее: в пакете MATHEMATICA хранится протокол всех сделанных в процессе данного сеанса работы вычислений. (Как говорил один известный персонаж Ильфа и Петрова, "У меня все ходы записаны”). In[номер] обозначает ввод, Out[номер] – вывод при обращении с указанным номером. Так как мы обращались к системе лишь однажды, Out[1] содержит полученную нами дробь. Обращение: N[Out[1]] будет означать, что результат первого вычисления переводится в 10-ичную дробь. Точность при этом выбирается автоматически. Обращение: N[Out[1],10] будет означать, что мы хотим получить в результате 10 знаков (всего). Такой же результат был получен нами с помощью калькулятора. Как и при работе с калькулятором, мы можем использовать результаты предыдущего вычисления. Обращение к предыдущей выходной ячейке осуществляется с помощью знака процента: %. Так, ввод N[%,10] на втором шаге эквивалентен N[Out[1],10].

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

Вернемся в наш банк “Золотые горы”. Что если пересчитывать вклад каждый день, а еще лучше – каждый чаc, каждую минуту, каждую секунду? Cоздается впечатление, что если пересчет будет производиться очень часто, то через год сумма возрастет в очень много раз. Хватит ли принесенных нами мешков, чтобы унести все деньги? Прикинем: при ежесекундном пересчете вклада итоговая сумма составит 2 млн. 718 281 рубль. Хм, мы думали, будет больше. Возникает смутное подозрение – не существует ли предела этой суммы при сколь угодно частом посещении банка? Разберемся: пусть n – количество наших временных интервалов в году (дней, минут, секунд,…). Соответствующие формулы имеют вид: . Существует ли при ? Спросим об этом пакет MATHEMATICA. Сначала выясним, знает ли MATHEMATICA пределы. Это можно сделать с помощью электронного учебника, встроенного в пакет и вызываемого при помощи опции Help . (См. В.П.Дьяконов, Системы символьной математики Mathematica 2 и Mathematica 3. // М.: “CК Пресс”, 1998.стр. 87)

Нужно сказать, что MATHEMATICA – очень дружественный пакет. В нем существует несколько способов поиска вспомогательной информации. Так, достаточно набрать ??Limit, (или, например, только ??Li* или ??*imit), и перед нами появится список всех ключевых слов, содержащих данную подстроку. Выделим мышкой нужное нам слово и нажмем F1 – откроется соответствующая страница Help. Можно было сделать и так: HelpHelp – ввести слово Limit в предлагаемое поле и нажать Enter.

Help содержит не только описание синтаксиса обращения к функции, но и, что очень удобно, примеры ее использования. Так, мы увидим пример вычисления предела, общий вид обращения к функции вычисления предела: Limit[expr, ], описание действия оператора и (в рубрике Futher Examples) соответствующие примеры.

Замечание. В пакете MATHEMATICA стремление аргумента обозначается знаком “” (дефис и “строго больше”), бесконечность – словом Infinity. Стрелочку и бесконечность можно изобразить покрасивее, если до и после “” и “inf” нажать Esc. Если одни и те же операции вызываются неоднократно, удобно использовать входящие панели инструментов пакета (Palettes). Их вызов осуществляется через меню: FilesPalettes. В палитре 2 Basic CalculationsCalculusCommon Operations существует шаблон для задания предела, в 5 Complete Characters – знаки бесконечности и стремления.

На рисунке 1.3.2 показан результат применения двух способов написания выражения для вычисления предела: ручного, требующего “рудиментарного владения латинским и греческим алфавитами”, и шаблонного. Там же изображены две инструментальные палитры – отыщите на них шаблончик для показателя степени и символ бесконечности.

Image1068.jpg (22795 bytes)

Рисунок 1.3.2. Фрагмент рабочего документа и две палитры.

Итак, сколь бы часто мы ни пересчитывали сумму нашего (извините, конечно же, Вашего) вклада, существует предел ее увеличения. Он равен числу е, свойства которого были установлены в 18 веке великим математиком Леонардом Эйлером. (Подробности – см., например, в Гарднер М. Математические досуги. М.: Оникс, 1995. )

Здесь речь шла о 100% годовых. К сожалению, такая ставка нереальна даже для банка “Золотые горы”. Предположим, что процентная ставка равна x. (Ранее x=1.) Будет ли существовать предел суммы вклада в этом случае? Опять обратимся к пакету MATHEMATICA: Результатом вычисления: Limit[(1+x/n)^n,n->Infinity] является . Таким образом, независимо от процентной ставки сумма вклада будет стабилизироваться при сколь угодно большом значении n. При каждом значении x мы будем получать свое значение предела. Это и будет та предельная сумма, которую Вы получили бы через год после оформления вклада, если бы вообще не покидали стен банка и непрерывно осуществляли пересчет вклада.

Что же делать тем вкладчикам, у кого нет под рукой компьютера с пакетом MATHEMATICA и даже нет калькулятора? Давайте сделаем для них следующее: распечатаем в пакете MATHEMATICA график предельной суммы как функции от процентной ставки x. С этим графиком они для любого значения x легко узнают предел своих финансовых возможностей. Функция Plot[E^x,{x, 0,1.2}] построит картинку, изображенную на рисунке 1.3.3.

Image1070.jpg (6931 bytes)

Рисунок 1.3.3. График зависимости предельного годового дохода (т.е. дохода, полученного в конце года при бесконечно частом пересчете суммы вклада) от процентной ставки.

Процентная ставка изменяется здесь от 0 до 120%.

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

Таблица 1.3.1. Параметры функции Plot

PlotLabel->"INCOME DEPENDING ON X RATE"

Заголовок графика

PlotRange->{0,3.5}

Диапазон изменения переменной y на графике. По умолчанию он представляет собой отрезок от минимального до максимального значения функции. Если точка y=0 не попадает в этот диапазон, ось абсцисс переносится в нижнюю или верхнюю (в зависимости от функции) его границу.

AxesLabel->{"x","E^x"}

Надписи на осях абсцисс и ординат.

Ticks->{{0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4},

{0.0,0.5,1.0,1.5,2.0,2.5,3.0,3.5}}

Разметка осей абсцисс (первый список) и ординат (второй список). Точки, не попадающие в диапазон изменения переменных x, y, не отображаются.

GridLines –>

{0.0,0.4,0.8,1.2},{0.0,0.5,1.0,1.5,2.0,2.5}}

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

Заметим, что значения свойств Ticks и GridLines не связаны друг с другом.

PlotStyle->{Thickness[0.009],RGBColor[1,0,0]}

Стиль линии графика. Здесь заданы параметры: толщина линии как 0.009 ширины рисунка и цвет графика (красный).

AxesStyle->{Thickness[0.005],RGBColor[0,1,0]}

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

Поскольку черно-белая печать не позволяет продемонстрировать всю полноту графических возможностей пакета MATHEMATICA, мы не помещаем здесь окончательный вид нашего графика – постройте его самостоятельно.

Сохраним записную книжку с помощью опции Save меню File. При этом создается файл с расширением .nb. Пакет MATHEMATICA позволяет работать одновременно с несколькими файлами (записными книжками). При этом нумерация всех “ходов” является сквозной. Не пугайтесь, если Вы ненароком закрыли все записные книжки и видите меню MATHEMATICи парящим прямо на рабочем столе или на фоне окна какого-нибудь другого приложения наподобие улыбки Чеширского кота. Откройте новую записную книжку опцией: FileNew.

Получим наконец материализованный итог нашей работы – распечатаем график. Печать в пакете осуществляется при выборе опции Print меню File, но прежде установим стиль печати (основные параметры страницы) опцией Printing Settings меню File. Не будем перечислять параметры печати – они традиционны для Windows. В пакете MATHEMATICA существуют также так называемые стилевые таблицы (stylesheets), задающие режим печати: рабочий, черновой, режим презентации и пр. Режимы различаются размером шрифта и плотностью печати. Выбор режима осуществляется с помощью опции Printing Style Environment меню Format.

Итак, теперь Вы можете получить протокол всего Вашего диалога с пакетом. Однако, вся “портянка”, как правило, бывает не нужна. Нужно убрать из диалогового окна лишние фрагменты, написать заголовок, комментарии, привести соответствующие формулы. Обратите внимание: справа есть вертикальные линии, выделяющие на экране отдельные ячейки и их группы. Вы можете делать с ячейками все, что хотите – удалять их, свертывать, объединять, управлять их стилем – тем самым содержимое экрана может быть оформлено так, как Вы того пожелаете. Пока мы имели дело с ячейками двух видов: входными и выходными. Существуют и другие стили: заголовки (Title, Subtitle,...), текст, формулы и пр. Они выполняют функции соответствующих опций текстовых редакторов, позволяя красиво оформить содержимое записной книжки. Основные возможности работы с ячейками в пакете MATHEMATICA мы перечислили в таблице 1.3.2.

Таблица 1.3.2. Работа с ячейками

Что сделать с ячейкой

Как это сделать

Выделить

Подвести курсор (он изменит свою форму на тонкую стрелку с вертикальной чертой впереди) к скобке ячейки и щелкнуть мышью.

Удалить

Нажать Delete. Выделенная ячейка будет удалена.

Сгруппировать

Существует два режима группировки: автоматический и ручной. Выбор режима осуществляется опцией CellCell Grouping. При автоматическом режиме (Automatic Grouping) группируются входная и выходная ячейки. При ручном режиме (Manual Grouping) можно сгруппировать любое количество смежных ячеек. Для этого их следует выделить и выбрать опцию CellCell GroupingGroup Cells.

Свернуть/Развернуть

Двойной щелчок на соответствующей скобке.

Задать стиль ячейки

FormatStyle – соответствующая опция.

Итак, мы рассмотрели один пример применения пакета MATHEMATICA. Отметим некоторые свойства пакета, на которые Вы, должно быть, уже обратили внимание:

а) Все выражения (имена функций, параметров, обозначения известных констант) пишутся с большой буквы. Например: Е (наш злополучный предел), Infinity (бесконечность), Pi (число ), GoldenRatio (отношение золотого сечения: кстати, именно таким является принятое по умолчанию соотношение длины и ширины прямоугольной области, на которой размещается график).

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

в) Ввести одну и ту же формулу можно разными способами: набором слов с клавиатуры или с помощью шаблона соответствующей панели (Pallete). (См., например, рисунок 1.3.3).

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

Вернуться на страницу <Методические разработки>

Карта сайта | На первую страницу | Поиск |О проекте |Сотрудничество |
Exponenta Pro | Matlab.ru

Наши баннеры


Copyright © 2000-2003. Компания SoftLine. Все права защищены.

Дата последнего обновления информации на сайте: 15.04.03
Сайт начал работу 1.09.00

www.softline.ru

Призы для подписчиков научно-практического журнала: Exponenta Pro. Математика в приложениях