Предисловие

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

Вначале эти расчеты выполнялись на программируемых микрокалькуляторах [1] или с помощью программ на универсальных языках программирования, таких, как Бейсик [2] или Паскаль. Постепенно для облегчения расчетов ' были созданы специальные математические компьютерные системы [3—14].

Настоящая книга посвящена одной из самых мощных и эффективных математических систем — MathCAD 7.0. Она существует в двух вариантах:

стандартном MathCAD 7.0 Standard и профессиональном MathCAD 7.0 Professional Edition (PRO). Стандартная версия ориентирована на большинство пользователей, а профессиональная — на профессионалов, серьезно занимающихся математическими расчетами.

Системы MathCAD традиционно занимают особое место среди множества таких систем (Eureka, Mercury, MatLAB, Mathematica 2 и 3, Maple V R3 и R4 и др.) и по праву могут называться самыми современными, универсальными и массовыми математическими системами. Они позволяют выполнять как численные, так и аналитические (символьные) вычисления, имеют чрезвычайно удобный математико-ориентированный интерфейс и прекрасные средства графики [6, 15,16]. Системы начиная с версии 3.9 работают под управлением графических операционных систем Windows 3.1/3.11 [16,17], а новая версия MathCAD 7.0 - под Windows 95/NT.

Системы класса MathCAD предоставляют уже привычные, мощные, удобные и наглядные средства описания алгоритмов решения математических задач. Преподаватели и студенты вузов получили возможность подготовки с их помощью наглядных и красочных обучающих программ в виде электронных книг с действующими в реальном времени примерами. Новейшая система MathCAD PLUS 7.0 PRO настолько гибка и универсальна, что может оказать неоценимую помощь в решении математических задач как школьнику, постигающему азы математики, так и академику, работавшему со сложнейшими научными проблемами. Система имеет достаточные возможности для выполнения наиболее массовых символьных (аналитических) вычислений и преобразований [18, 19].

Более 600 000 только зарегистрированных пользователей владеют ранними версиями системы MathCAD во всем мире, а с выходом новых версии системы это число наверняка заметно увеличится. Ну а незарегистрированных пользователей, пожалуй, еще больше. О системе с такой вычислительной мощью, как у MathCAD 6.0/7.0 PRO, еще пару десятков лет назад не могли мечтать даже разработчики уникальной научной и космической аппаратуры. Но эта мощь нисколько не затрудняет удивительно простое и интуитивно предсказуемое общение с системой на общепринятом языке математических формул и графиков.

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

Шестая версия системы MathCAD русифицирована и получила широкое распространение в нашей стране, тогда как версия системы MathCAD 7.0 PRO пока существует только в англоязычном варианте, что, однако, вовсе не мешает готовить с ее помощью документы на русском языке.

В настоящее время существует острый дефицит в литературе по системам класса MathCAD. А по новой версии MathCAD 7.0 PRO, появившейся в середине 1997 г., книг у нас вообще не издавалось, хотя она резко отличается от предшествующей версии 6.0 [6, 14].

Данная книга восполняет этот пробел. Она продолжает серию справочных книг [1—6] и обзоров [7—13] автора, посвященных современным средствам автоматизации математических расчетов. В книге впервые в нашей литературе описаны оба варианта новейшей оригинальной (англоязычной) версии системы MathCAD 7.0.

Справочник написан в том же стиле, что и другие справочники автора, посвященные применению математических систем. Из них взяты и некоторые примеры для настоящей книги. Изложенный в ней материал является результатом многолетней работы автора со всеми версиями системы MathCAD, начиная от версий под MS-DOS [5]. При этом книга составлена так, что пользователи, работающие с более ранними версиями системы (MathCAD 3.0/4.0/5.0/PLUS 5.0/6.0/PLUS 6.0), получат не мало информации и о них, поскольку новые возможности седьмой версии оговорены особо.

Что в книге нового

Приступая к работе, автор вначале наивно полагал, что все сведется в основном к замене слов MathCAD 6.0 на MathCAD 7.0 в его недавно изданной книге [б], разве что придется сделать небольшие и непринципиальные дополнения. Но, увы (а может, к счастью?), этот номер не прошел! Версия MathCAD 6.0 подверглась настолько серьезной переработке, что даже рубрикацию книги пришлось серьезно изменить.

В справочник вошли новые материалы об интерфейсе пользователя системы, новых возможностях символьной математики, описаны центр информационных ресурсов MathCAD 7.0 PRO, системный интегратор MathConnex, язык его программирования Connex Script и др. Тем не менее опыт подготовки предыдущей книги [6] позволил в сжатые сроки создать данное руководство по версии MathCAD.

Итак, перед вами книга, посвященная версии 7.0 популярной системы MathCAD. Автор постарался написать ее так, чтобы она была полезна и владельцам ранних версий этой системы под Windows. Но различие в пользовательском интерфейсе новой и прежних версий настолько велико, что обучение работе со старыми версиями по данной книге едва ли целесообразно. Лучше для этого взять книгу по предыдущей версии [б]. Однако на уровне описания документов и примеров применения новая версия MathCAD мало чем отличается от старой (MathCAD 6.0).

Адреса для общения

Книга написана в рамках инициативных работ кафедры физической и информационной электроники Смоленского государственного педагогического института (СГПИ) и научно-исследовательской части Смоленской военной академии. Автор будет признателен всем читателям и организациям за отзывы о книге и пожелания. Их следует направлять по адресу издательства "СК ПРЕСС" или по месту работы автора: 214000, Смоленск, ул. Пржевальского 4, СГПИ.

О шрифтовых выделениях в книге

Для облегчения чтения книги в ней используются следующие шрифтовые выделения:

• обозначения скалярных величин (х, X, у, z и т. д.) и математические формулы в описании алгоритмов и математических методов даются курсивом;

• обозначения векторов, матриц (V, М, m и т. д.) и операций управления системой выделяются полужирным прямым шрифтом;

• имена встроенных функций и системных переменных [sin(x), ln(x), TOL и т. д.] выделяются также полужирным прямым шрифтом;

• полужирным прямым шрифтом выделяются и названия операций (только на языке оригинала), позиций подменю главного меню и основных кнопок управления в диалоговых и информационных окнах;

• примеры записей в документах MathCAD даются прямым шрифтом без какого-либо выделения.

Предупреждения

Автор и издательство сделали все возможное, чтобы материал книги был доступен, актуален, объективен и точен. Однако компьютерная алгебра — еще новое направление, терминология которого пока не устоялась, а это может привести к погрешностям и неточностям перевода отдельных терминов. Кроме того, MathCAD 7.0 PRO очень мощная и обширная система и нет гарантии того, что при подготовке книги в ее описании что-то не было упущено, так как эта книга не является прямым переводом фирменной документации по системе, а представляет собой авторское произведение.

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

Об использовании диска с примерами программ для MathCAD 6.0

К книге [6] прилагалась дискета (3,5 дюйма) с десятью пакетами применений системы MathCAD PLUS 6.0 PRO. Все они могут быть использованы, причем без какой-либо доработки, и пользователями новой версии MathCAD 7.0 PRO.

Приложение дискеты с примерами к настоящей книге было признано нецелесообразным по следующим причинам:

• для обучения работе с MathCAD все же полезнее набрать описанные примеры и отладить их самостоятельно, чем просто загрузить с диска и просмотреть в готовом виде;

• наиболее интересные примеры из содержащихся на диске описаны в Главе 14 данной книги и (частично) в других главах;

• изготовление дискеты увеличивает стоимость книги и отдаляет сроки ее выхода в свет.


Глава 9 Работа с окнами

9. 1. Подменю для работы с окнами (Window)

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

Система MathCAD позволяет одновременно работать со многими задачами. Под каждую задачу она отводит свое окно. Одно из них обычно является активным — то, с которым происходит работа в настоящий момент. Состояние других документов "замораживается", но их можно пустить в работу в любое время без новой загрузки и без исполнения связанной с окном программы.

Основные операции с окнами сосредоточены в позиции Window (Окно) главного меню (см. рис. 9. 1).

Рис. 9. 1 Вид экрана MathCAD с подменю Window главного меню

Ниже указаны эти операции:

Cascade (Каскад) — расположить окна документов друг под дру гом так, чтобы были видны заголовки;

Horizontal (По горизонтали) расположить окна документов горизонтально;

Vertical (По вертикали) — расположить окна документов вертикально;

Arrange Icons — упорядочить размещение пиктограмм (Упорядочить пиктограммы) рабочих документов вдоль нижней границы окна приложения.

Кроме этих операций в подменю позиции Window имеется список окон, которые в данный момент открыты. Он позволяет быстро сделать активным указанное окно.

Рассмотрим действие основных команд управления окнами. Они позволяют пользователю подстроить графический интерфейс системы под свои вкусы и привычные возможности.

9. 2. Каскадное расположение окон (Cascade)

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

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

Рис. 9. 2 Расположение окон после выполнения операции Cascade

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

9. 3. Расположение окон по горизонтали (Horizontal)

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

нею документа Рис. 9. 3 показывает вид экрана после выполнения этой операции. В нашем случае использованы оба варианта разделения экрана — и по горизонтали, и по вертикали.

Рис. 9. 3 Расположение окон после выполнения операции Gorizontal

Равномерное расположение окон может оказаться наиболее удобным, если требуется скопировать блок из одного окна в другое. Однако здесь есть некоторая трудность: в уменьшенном по размеру окне видны не все блоки Поэтому не следует увлекаться одновременным выводом большого числа окон. Практика показывает, что чаще всего достаточно работать с двумя-тремя окнами И наконец, надо помнить, что в каждом окне возможен свой скроллинг изображений, поэтому несложно найти нужный объект, даже если он вначале не попал в видимую область окна.

9. 4. Расположение окон по вертикали (Vertical)

Операция Vertical выводит на экран сразу все окна, причем они имеют одинаковый размер и расположены вертикально Размер окон тем меньше, чем больше окон выведено. В каждом окне видна лишь часть загруженного в него документа. Рис. 9. 4 показывает вид экрана после выполнения этой операции

Строго горизонтальное или вертикальное расположение окон получается, если окон немного, например два или три. При большем числе окон деление экрана происходит как по горизонтали, так и по вертикали (см рис 9 5)

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

Рис. 9. 4 Расположение окон после выполнения операции Vertical

Рис. 9. 5 Расположение большого числа окон после выполнения операции Vertical

9. 5. Приведение в порядок пиктограмм (Arrange Icon)

Если перевести часть окон в неактивное состояние, то они будут представлены на экране своими пиктограммами. Эти пиктограммы можно перемещать куда угодно, что нередко ведет к "захламлению" экрана (см. рис. 9. 6).

Операция Arrange Icon (Упорядочить значки) означает наведение порядка с пиктограммами. При ее выполнении пиктограммы размещаются строго в нижней части экрана, как показано на рис. 9. 7.

Рис. 9. 6 Экран,"захламленный" пиктограммами неактивных окон

Рис. 9. 7 Экран после выполнения операции Arrange Icon

Если в результате ваших действий пиктограммы оказались разбросанными по текущему окну, применение этой операции позволит собрать их вместе в левом нижнем углу текущего окна системы Такая операция типична для всех программных систем, работающих в среде операционной системы Windows Она избавляет нас от ручного перетаскивания пиктограмм и точной установки их в нужном месте

9. 6. Переключение окон и управление ими

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

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

Restore (Восстановить) — восстановление обычного вида окна;

Move (Переместить) — перемещение окна по экрану;

Size (Размер) — изменение размеров окна;

Minimize (Свернуть) — свертывание окна в пиктограмму;

Maximize (Развернуть) — развертывание окна;

Close [Ctrl+ F4] (Закрыть) — закрытие текущего окна;

Next [Ctrl+ F6] (Следующее) — переход к следующему окну.

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

Если окон оказалось слишком много (ограничение в виде восьми окон в новой версии снято), то система откажется от ввода дополнительных документов и сообщит то этом в информационном окне. Для продолжения работы нужно очистить текущее окно командой New (Создать) в позиции File (Файл) главного меню или закрыть часть ставших ненужными окон. Для этого используется команда Close (Закрыть) из Windows-меню каждого окна. Вообще говоря, держать открытыми слишком много окон не рекомендуется в любом случае, так как это загромождает экран и уменьшает ресурсы ПК (прежде всего объем доступной памяти).


Глава 10 Работа с информационными ресурсами

10. 1. Информационные ресурсы системы MathCAD 7. 0 PRO

К информационным ресурсам системы MathCAD 7. 0 PRO относятся подсказка начального уровня Tip of the Day, электронный справочник по системе обучающая программа по ней, примеры применения (шпаргалки), электронные книги, справочные таблицы, доступ в Internet и др. Доступ ко всем этим ресурсам сосредоточен в подменю позиции Help (Справка) главного меню (рис. 10. 1).

Рис. 10. 1 Экран системы MathCAD 7. 0 PRO с открытым подменю позиции Help главного меню

Как видно из рис. 10. 1, подменю Help имеет следующие позиции:

Mathcad Help [Fl] — вызов справочной системы MathCAD;

(Справка по MathCAD)

Resource Center (Центр ресурсов) — вызов центра информационных ресурсов;

Tip of the Day — вызов оперативной подсказки;

(Оперативная подсказка)

Open Book... (Открыть книгу) — вызов окна оперативной справки;

Using Help (Использование — вызов информации о справочной

справочной системы) системе;

About Matchcad... — краткая информация о системе

(О системе MathCAD) MathCAD.

10. 2. Работа со справочной системой (MathCAD Help)

Справочная система MathCAD 7. 0 PRO — это большая база данных, объем которой намного превосходит объем данной книги (хотя она также является справочником). Однако назначение обычных справочных книг и назначение электронного справочника по системе принципиально различны.

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

Теперь обычный справочник является "выжимкой" наиболее важных сведений о системе, а электронный содержит детальную и полную информацию о ней.

Несмотря на удобство пользования обычной книгой электронная справочная система имеет свои явные достоинства:

• большой (и почти не ограниченный) объем информации;

• быстрый поиск информации;

• прекрасное оформление (в том числе цветовое);

• возможность немедленного исполнения примеров и их переноса в документы;

• естественное совмещение с системой.

Тем не менее такая система имеет и существенные недостатки:

• требует для применения компьютера;

• неудобна для систематического начального знакомства с системой;

• закрывает документ, с которым работает пользователь;

• требует обновления вызова после получения очередной справки;

• написана на языке оригинала (в нашем случае — на английском).

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

Для вызова справочной системы можно:

• исполнить операцию Mathcad Help в подменю позиции Help главного меню;

• нажать клавишу F1;

• активизировать кнопку со знаком "?" в конце панели инструментов.

При этом появляется окно справочной системы, показанное на рис. 10. 2. Следует отметить, что справочная система является самостоятельным приложением и ее можно запускать независимо от собственно системы MathCAD.

Как видно из рис. 10. 2, окно справочной системы имеет три панели, которые вводят три вида справок: Содержание, Предметный указатель и Поиск. О причинах, по которым эти (и некоторые другие) надписи даны на русском языке, уже говорилось: окна справочной системы MathCAD заимствует из

Рис. 10. 2 Окно справочной системы

русскоязычной версии операционной системы Windows 95 Само же содержание справок, естественно, дано на английском языке (см рис 10 3, например)

Рис. 10. 3 Пример получения справки

Вторая панель окна справки (рис 104) дает доступ к индексному указателю справочной системы Достаточно в поле 1 ввести хотя бы часть наименования темы справки, как в поле 2 появится перечень ближайших ее разделов

После выбора нужного раздела его просмотр выполняется так, как это было описано выше Индексный указатель — мощное средство поиска нужных сведений

Рис. 10. 4 Панель индексного указателя справочной системы

10. 3. Построение и применение профессиональной справочной базы данных

Третья панель, Поиск, позволяет создать профессиональную справочную базу данных но системе MathCAD 7. 0 PRO. Эта база данных дает возможность найти все разделы справочной системы, в которых упоминается заданное слово или хотя бы его начальная часть. Поскольку для базы данных нужна дополнительная память на диске, она при инсталляции обычно не создается. Открытие панели Поиск ведет к выводу окна установки профессиональной справочной базы данных о сисгеме, показанного на рис. 10. 5.

Рис. 10. 5 Окно создания профессиональной справочной базы данных

Это окно является первым окном мастера подготовки профессиональной базы данных. Выбрав вид создаваемой базы и пройдя по этапам ее подготовки, можно получить окно поиска этой базы, показанное на рис 10. 6

Рис. 10. 6 Окно поиска темы профессиональной справочной базы данных

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

10. 4. Работа с центром информационных ресурсов (Resource Center)

Позиция Resource Center подменю Help открывает доступ к новой возможности системы MathCAD 7 О PRO центру информационных ресурсов. Центр ресурсов представляет собой мощную базу данных, объединяющую встроенные в систему введение, электронные книги, обучающую систему, быстрые примеры (шпаргалки), средства общения с фирмой — разработчиком системы и сетью Internet, средства регистрации и доступа к Web-библиотеке MathCAD и т. д.

При активизации позиции Resource Center открывается окно с перечнем (в виде красочных пиктограмм) входящих в центр ресурсов средств Это окно показано на рис. 10. 7.

Доступ к тому или иному средству центра ресурсов выполняется активизацией его пиктограммы курсором мыши и двойным щелчком левой ее клавиши В качестве примера на рис 10. 8 представлена титульная заставка раздела центра, относящегося к быстрым примерам — шпаргалкам Quicksheets Стоит выбрать нужный пример — и к вашим услугам появится документ с соответствующей шпаргалкой.

Окна со шпаргалками имеют обычный для Windows-приложений вид. На рис. 10. 9 показано полноэкранное окно одной из шпаргалок; она посвящена применению при программировании условного оператора IF

Рис. 10. 7 Окно центра ресурсов

Рис. 10. 8 Титульная заставка центра ресурсов, относящаяся к шпаргалкам

Тут надо отметить, что шпаргалки содержат сотни интересных (как простейших, так и сложных) примеров на применение системы MathCAD в практике математических и научно-технических расчетов

Большой интерес (даже у наших пользователей) вызовут справочные таблицы Reference Tables Они заменяют обычные таблицы физико химических и иных свойств различных веществ В качестве примера на рис 10 10 показана периодическая система элементов с данными об одном из элементов

Большой материал по применению системы MathCAD содержится в трех встроенных в центр ресурсов электронных книгах

Рис. 10. 9 Окно одной из шпаргалок

Рис. 10. 10 Пример применения периодической системы элементов

Solving — пособие по технике вычислений;

Practical Statistics — руководство по статистическим вычислениям;

Programming — руководство по программированию в среде

MathCAD 7. 0 PRO.

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

Тексты, формулы, графики (словом, любые объекты) можно легко перетаскивать из электронных таблиц и книг в документы MathCAD, что облегчает пользователю составление своих документов и обучающих программ.

10. 5. Электронная подсказка (Tip of the Day)

Весьма полезной для начального освоения системы является электронная подсказка Tip of the Day. Она вводится соответствующей операцией в подменю позиции Help главного меню. Эта подсказка построена по принципу ответа на вопрос "А знаете ли вы, что...".

Окно электронной подсказки было показано на рис. 1. 3. Работа с подсказкой настолько проста, что не нуждается в более полном описании, чем то, что было дано выше.

10. 6. Открытие электронных книг (Open Book...)

Отдельных электронных книг в типовом комплекте поставки системы MathCAD 7. 0 уже нет. Точнее, они вошли в центр ресурсов вместе с иными информационными средствами. Однако фирма MathSoft продолжает создавать электронные книги по самым различным вопросам. Поэтому возможность работы с электронными книгами сохранена и о них стоит упомянуть.

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

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

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

• поиск информации в электронных книгах облегчен гипертекстовыми ссылками;

• электронные книги — действующие (работающие) объекты, т. е. вы можете изменить любые данные в них и примеры расчетов и тут же получить новые результаты;

• электронные книги допускают их модификацию пользователем (например, замену текстов, ввод новых комментариев и т. д.);

• статьи из электронных книг можно распечатать на принтере:

• электронные книги занимают мало места — на одном CD-ROM можно разместить информацию, эквивалентную размещенной в десятках обычных книг крупного формата;

• электронные книги могут посылаться по электронной почте и по сети Internet.

Для загрузки электронных книг служит операция Open Book (Открыть книгу). Она открывает окно загрузки и поиска файлов с электронными книгами, имеющих расширение. hbk. Это окно показано на рис. 10. 11.

Рис. 10. 11 Окно поиска и загрузки файлов с электронными книгами

MathCAD позволяет пользователю создавать свои книги или использовать уже готовые В частности, с русифицированной версией системы MathCAD 6 0 поставляется набор из трех встроенных книг на русском языке Desktop Reference — справочник по математическим расчетам, Book Sampler — примеры применений системы, Tutorial — самоучитель по правилам работы с системой MathCAD

Указанные книги содержат обширный материал Так, книга Desktop Reference — довольно полный справочник по математическим формулам и таблицам, в том числе относящимся к физике, химии, механике, электротехнике, радиотехнике и т д Использование этой книги избавляет пользователя от необходимости часто обращаться к обычной справочной литературе

Книга Book Sampler содержит сотни примеров применения системы в практике математических расчетов А книга Tutorial является небольшим самоучителем по системе, использующим мультимедийные возможности MathCAD, она содержит элементы динамической графики, поясняющие в какой последовательности пользователь должен выполнять действия в ходе проведения математических расчетов В основном книга учит элементам пользовательского интерфейса системы

Все эти книги могут пригодиться и пользователям версии системы MathCAD 7 О PRO, поскольку на уровне файлов новая и прежняя версии системы совместимы Это наглядно демонстрирует рис 10 12, на котором показана титульная страница русскоязычной книги Book Sampler

Кроме указанных, имеются десятки книг по самым различным областям применения системы MathCAD

• математические вычисления общего характера,

• реализация численных методов,

• расчеты в физике, механике, оптике, электро- и радиотехнике,

• статистические и экономические вычисления и т д

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

Рис. 10. 12 Титульная страница книги Book Sampler

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

Рис. 10. 13 Пример работы с русскоязычной книгой по экономическим расчетам

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

Даже беглый обзор встроенных электронных книг и пакетов применений систем MathCAD требует большого места и выходит за рамки настоящей книги. Поэтому тут описываются лишь основные приемы работы с такими книгами.

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

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

10. 7. Использование справочной системы (Using Help...)

Сама по себе справочная система MathCAD достаточно сложна, хотя работа с нею интуитивно предсказуема. Тем не менее благодаря операции Using Help... (Использование справки) можно получить справку об использовании самой справочной системы (рис. 10. 14).

Рис. 10. 14 Окно с информацией о применении справочной системы

Уже говорилось, что кое-где надписи в окнах справочной системы англоязычных версий MathCAD появляются на русском языке. Окно, показанное на рис. 10. 14, вообще может озадачить: в нем абсолютно все надписи даны на русском языке, хотя использовалась оригинальная англоязычная версия системы MathCAD 7. 0 PRO.

Причина этого нового казуса тоже в том, что операция Using Help... запускает стандартную справочную систему Windows. В данном случае использовалась русифицированная версия Windows 95. Поэтому на рис. 10. 14 окно справочной системы MathCAD содержит все надписи на русском языке.

10. 8. Общие сведения о системе (About MathCAD)

Операция About MathCAD (0 программе MathCAD) мало что прибавляет к знаниям о системе MathCAD, она лишь выводит красочную заставку с указанием фирмы-разработчика и названия программного продукта (см. рис. 10. 15).

Рис. 10. 15 Заставка MathCAD 7. 0 PRO, выведенная при выполнении операции About MathCAD

Впрочем, кое-что любопытное в этой заставке есть; из нее, например, можно узнать, что MathSoft начала работу в 1986 г. и что разработка данного программного продукта выполнена уже в 1997 г.


Глава 11 Входной язык системы MathCAD 7. 0

Рис.11.19 Линейная и сплайновая аппроксимации функции

Рис. 11.20 Пример двумерной сплайн-интерполяции для построения контурного графика 3D-функ-ции, имеющей сложную поверхность

интерполяции). Сразу бросается в глаза гораздо большая информативность левого графика.

11.12. Статистические функции

Типовые статистические функции

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

Помимо уже упомянутой гамма-функции, широко применяемой в статистических расчетах, существуют следующие встроенные статистические функции скалярного аргумента х cnorm(x) — кумулятивная нормальная функция;

erf(x) — функция ошибок (или интеграл вероятности), md(x) — функция генерации случайных чисел, corr(VX,VY) — коэффициент корреляции двух векторов — VX и VY, cvar(X,Y) — коэффициент ковариации Х и Y

Через функцию erf(x) легко вычисляется дополнительная функция ошибок.

cerf(x) := 1- erf(x).

Функция rnd(x) при каждом обращении к ней возвращает случайное число с равномерным распределением на отрезке [0, 1] Эта функция широко применяется при статистическом моделировании различных физических процессов Числа являются не строго случайными — в действительности это повторяющиеся последовательности из большого количества чисел, распределение которых близко к равномерному

Статистические функции для векторов

Следующая группа функций относится к вычислению основных статистических параметров одномерного массива данных — вектора:

mean(V) — возвращает среднее значение элементов вектора V;

var(V) — возвращает дисперсию (вариацию) для элементов вектора V;

side(V) — возвращает среднеквадратичную погрешность, т. е квадратный корень из дисперсии, stdev(V) — задает стандартное отклонение элементов вектора V;

hist(int,V) — возвращает вектор частот попадания данных V в заданные интервалы int (служит для построения гистограмм) В функции hist(int,V) вектор int должен содержать значения границ, число попаданий данных из вектора V должно подсчитываться Если строится гистограмма из N элементов, то вектор int должен содержать N+1 элементов. Функция возвращает вектор из N элементов, числовые значения которых можно использовать для графического построения гистограмм.

Рис. 11.21 Работа со случайными числами

На рис. 11.21 представлен документ, в котором организована генерация вектора Х из 1000 случайных чисел, представлено их распределение и вычислены основные статистические параметры массива случайных чисел — вектора X. Этот документ демонстрирует и применение функции hist.

В MathCAD содержится множество различных статистических функций, возможности которых интересны специалистам по обработке статистической информации. Приведем сводку таких функций.

Функции вычисления плотности вероятности распределения

Функции вычисления плотности вероятности распределения представлены

следующим набором:

Ф dbeta(x, s1, s2) —B-распределение (s1, s2>0 — параметры формы, 0<x<1);

dbinom(k, п, р) — биномиальное распределение (возвращает значение вероятности P(x=k), где п и k целые числа, причем 0<k<n и0<р<1);

Ф dcauchy(x, L, s) — распределения Коши (L — параметр разложения, s>0 — параметр масштаба);

dchisq(x, d) — Хи-квадрат-распределение (х, d>0, причем d — число степеней свободы);

Ф dexp(x, r) — экспоненциальное распределение (г, х>0);

dF(x, d1, d2) — распределение Фишера (d1, d2>0 — числа степеней свободы, х>0)',

Ф dgamma(x, s) — гамма-распределение (s>0 — параметр формы, х>0);

Ф dgeom(k, р) — геометрическое распределение (0<p<^i — вероятность успеха в отдельном испытании, k — целое неотрицательное число);

Ф dlnorm(x, р., о") — логнормальное распределение (р. — натуральный логарифм среднего значения, о">0 — натуральный логарифм среднеквадратичного отклонения, х>0)',

Ф dlogis(x, /, s) — логистическое распределение (/ — параметр разложения, s>0 — параметр масштаба);

Ф dnbinom(^, п, р) — отрицательное биномиальное распределение (и>0 и k>0 — целые числа, 0<p<i);

dnorm(x, р., а) — нормальное распределение (^ — среднее значение,

++ о>0 — среднеквадратичное отклонение);

dpois(k. Л) — распределение Пуассона (А>0, k — целое неотрицательное число);

dt(a', d) — распределение Стьюдента (d>0 — число степеней свободы, х — вещественное число);

dunif(-c, а, Ь) — равномерное распределение (а и b — граничные точки интервала, причем а<Ь и а<х<Ь);

Ф dweibull(x, s) — распределение Вейбулла (s>0 — параметр формы).

Функции распределения

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

Ф pbeta(x, s1, s2) — значение в точке х функции стандартного нормального распределения;

pbinom(^, п, р) — значение функции распределения биномиального закона для k успехов в серии п испытаний;

Ф pcauchy(x, /, s) — значение в точке х функции распределения Коши со шкалой параметров / и s;

pchisq(x, d) — значение в точке х кумулятивного {Хи-квадрат-распре-деления, в котором d - степень свободы;

Ф рехр(х, r) — значение в точке х функции экспоненциального распределения;

pf(x, d1, d2) — значение в точке х функции распределения Фишера;

Ф pgamma(x, s) — значение в точке х функции гамма-распределения;

Ф pgeom(k, р) — значение в точке х функции геометрического распределения;

Ф plnonn(x, m, о) — значение в точке х функции логнормального распределения;

Ф plogis(;c, /, s) — значение в точке х функции последовательного распределения;

plnonn(:c, jU, о) — значение в точке х функции нормального распределения;

Ф pnbinom(k, п, р) — значение в точке х функции отрицательного биномиального распределения;

ppois(k, Л) — значение для k функции распределения Пуассона;

pt(x, d) — значение в точке х функции распределения Стьюдента;

punif(x, a, b) — значение в точке х функции равномерного распределения;

Ф pweibull(x, s) — значение в точке х функции распределения Вейбулла.

Квантили распределения

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

Ф qbeta(p, s1, s2) — квантили обратного бетта-распределения с параметрами формы s1 и s2;

qbinom(p, n, q) — количество успешных определений при п-м количестве испытаний при решении уравнения Бернулли при условии, что вероятность этого количества успешных определений есть р (q - вероятность успеха при однократном испытании (0<<7<1 и 0<=р<1);

Ф qcauchy(p, /, q) — квантили обратного распределения Коши со шкалой параметров 1 и s (s>0 и 0<p<i);

qchisq(p, d) — квантили обратного Хи-квадрат-распределения;

Ф qexp(p, r) — квантили обратного экспоненциального распределения, при котором г>0, определяет частоту (0<=р<1);

qF(p, d1, d2) — квантили обратного распределения Фишера, в котором d1 и d2 — степени свободы);

Ф qgamma(j0, s) — квантили обратного гамма-распределения;

Ф qgeomQo, q) — квантили обратного геометрического распределения;

Ф qlnorm(p, p., <т) — квантили обратного логнормального распределения;

Ф qlogis(p, /, s) — квантили обратного последовательного распределения;

Ф qnbinom(p, n, q) — квантили обратного отрицательного биномиального

распределения с размером п и вероятностью ошибки q;

qnorm(p, m, о) — квантили обратного нормального распределения со

средним значением р. и стандартным отклонением (г, qpois(p, Я) — квантили обратного распределения Пуассона;

qt(p, d) — квантили обратного распределения Стьюдента

((^определяет степени свободы, d>0 и 0<р<1);

qunif(p, a, b) — квантили обратного равномерного распределения;

Ф qweibull(q, s) — квантили обратного распределения Вейбулла.

Функции создания векторов m различными законами распределения

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

Ф rbeta(m, s1, s2) — бетта-распределение;

rbinom(m, n, p) — биномиальное распределение;

Ф rcauchy(m, /, s) — распределение Коши;

rchisq(m, d) — Хи-квадрат-распределение;

Ф rexp(m, r) —
экспоненциальное распределение, rF(m, d1, d2) —
распределение Фишера;

Ф rgamma(m, s) — гамма-распределение;

Ф rgeom(m, p) — геометрическое распределение;

Ф rlnorm(m, /л, сг) — логарифмическое нормальное распределение;

Ф rlogis(m, /, s) — последовательное распределение;

Ф mbinom(m, n, p) — негативное биномиальное распределение;

morm(m, m, о) — нормальное распределение;

rpois(m, Я) — распределение Пуассона;

rt(m, d) — распределение Стьюдента;

rumf(m, а, b) — равномерное распределение;

Ф rweibull(m, s) — распределение Вейбулла.

Рис. 11.22 Примеры применения статистических функций

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

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

11.13. Функции для проведения регрессии

Функции для линейной регрессии

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

у(х) =а+ Ь*х

и описывает отрезок прямой. К линейной регрессии можно свести многие виды нелинейной регрессии при двупараметрических зависимостях у(х).

Для проведения линейной регрессии в систему встроен ряд приведенных ниже функций:

corr(VX, VY) — возвращает скаляр — коэффициент корреляции Пирсона;

intercrpt(VX, VY) — возвращает значение параметра а (смещение линии регрессии по вертикали);

slope(VX, VY) — возвращает значение параметра b (наклона линии регрессии).

На рис. 11.23 показан пример проведения линейной регрессии для данных, представленных значениями элементов в векторах VX и VY.

Рис.11.23 Линейная регрессия

Как видно на рис 11 23, прямая регрессии проходит в «облаке» исходных точек с максимальным среднеквадратичным приближением к ним Чем ближе коэффициент корреляции к 1, тем точнее представленная исходными точками зависимость приближается к линейной

Функция для линейной регрессии общего вида

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

F(x, К1 ,К2, ., Kn)= K1, F1(x)+K2 F2(x)+ +КnFn(x)

Таким образом, функция регрессии является линейной комбинацией функций F1(x), F2(x), ., Fn(x), причем сами эти функции могут быть нелинейными, что резко расширяет возможности такой аппроксимации и распространяет ее на нелинейные функции

Для реализации линейной регрессии общего вида используется функция linfit(VX,VY,F) Эта функция возвращает вектор коэффициентов линейной регрессии общего вида К, при котором среднеквадратичная погрешность приближения облака исходных точек, если их координаты хранятся в векторах VX и VY, оказывается минимальной Вектор F должен содержать функции F1(x), F2(x), , Fn(x), записанные в символьном виде

Рис 11 24 поясняет проведение линейной регрессии общего вида с применением функции Unfit Процедура проведения вычислений настолько проста, что не нуждается в особых комментариях

Рис. 11.24 Пример проведения линейной регрессии общего вида

Расположение координат точек исходного массива может быть любым, но вектор VX должен содержать координаты, упорядоченные в порядке их возрастания, а вектор VY ординаты, соответствующие абсциссам в векторе VX

Функции для одномерной и многомерной полиномиальной регрессии

Введена в новую версию MathCAD и функция для обеспечения полиномиальной регрессии при произвольной степени полинома регрессии

regress(VX,VY, n)

Она возвращает вектор VS, запрашиваемый функцией interp(VS,VX,VY,x), содержащий коэффициенты многочлена п-й степени, который наилучшим образом приближает «облако» точек с координатами, хранящимися в векторах VX и VY

На рис 11 25 показан пример выполнения полиномиальной регрессии Для вычисления коэффициентов полинома регрессии используется функция submatrix

Рис. 11.25 Полиномиальная регрессия

На практике не рекомендуется делать степень аппроксимирующего поли нома выше четвертой — шестой, поскольку погрешности реализации регрессии сильно возрастают

Функция regress создает единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек, т е глобально Иногда полезна другая функция полиномиальной регрессии, дающая локальные приближения отрезками полиномов второй степени, — loess(VX, VY, span). Эта функция возвращает используемый функцией interp(VS,VX,VY,x) вектор VS, дающий наилучшее приближение данных (с координатами точек в векторах VX и VY) отрезками полиномов второй степени Аргумент span>0 указывает размер локальной области приближаемых данных (рекомендуемое начальное значение — 0,75) Чем больше span, тем сильнее сказывается сглаживание данных При больших span эта функция приближается к regress(VX,VY,2)

На рис 11 26 показан пример приближения сложной функции со случайным разбросом ее ординат с помощью совокупности отрезков полиномов вто рой степени (функция loess) для двух значений параметра span

На рис 11 26 нетрудно заметить, что при малом значении span, равном 0 05, отслеживаются характерные случайные колебания значений функции, тогда как уже при span=0,5 кривая регрессии становится практически гладкой К сожалению, из-за отсутствия простого описания аппроксимирующей

Рис. 11.26 Пример регрессии отрезками полиномов второй степени

функции в виде отрезков полиномов этот вид регрессии широкого применения не нашел.

Выполнение многомерной регрессии

MathCAD позволяет выполнять также многомерную регрессию, самый типичный случай которой — приближение трехмерных поверхностей. Их можно характеризовать массивом значений высот z, соответствующих двумерному массиву Мху координат точек (х, у) на горизонтальной плоскости.

Новых функций для этого не задано. Используются уже описанные функции в несколько иной форме:

regress(Mxy, Vz, n) — возвращает вектор, запрашиваемый функцией

interp (VS,Mxy,Vz,V) для вычисления многочлена n-v. степени, который наилучшим образом приближает точки множества Мху и Vz. Мху — матрица т-2, содержащая координаты х и у. Vz — т-мерный вектор, содержащий z-координат, соответствующих т точкам, указанным в Мху;

loes(Mxy,Vz,span) —
аналогична loes(VX,VY, span), но в многомерном
случае;

interp(VS, Mxy,Vz,V) — возвращает значение z по заданным векторам VS (создается функциями regress или loess) и Мху, Vz и V (вектор координат х и у заданной точки, для которой находится z).

Пример многомерной интерполяции был приведен выше. В целом многомерная регрессия применяется сравнительно редко из-за сложности сбора исходных данных.

Функция для нелинейной регрессии общего вида

Под нелинейной регрессией общего вида подразумевается нахождение вектора К параметров произвольной фучнкции F(x,K1,K2,...,Kn), при котором обеспечивается минимальная среднеквадратичная погрешность приближения облака исходных точек.

Для проведения нелинейной регрессии общего вида используется функция genfit(VX, VY, VS, F). Эта функция возвращает вектор К параметров функции F, дающий минимальную среднеквадратичную погрешность приближения функцией Р(х,К1,К2,...,Кп) исходных данных.

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

На рис. 11.27 показан пример выполнения нелинейной регрессии общего вида для нелинейной функции F(x,a,b)=a-exp(-b-x)+a-b.

Рис. 11.27 Пример выполнения нелинейной регрессии общего вида

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

Вторая проблема связана с необходимостью применения функции genfit в ее стандартном виде. Поэтому пришлось заменить параметр а на k1 а параметр b на k2. В остальном операции в примере на рис. 11.27 достаточно очевидны.

11.14. Функции сглаживания данных

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

medsmooth(VY,n) — для вектора с т действительными числами возвращает т-мерный вектор сглаженных данных по методу скользящей медианы, параметр п задает ширину окна сглаживания (п должно быть нечетным числом, меньшим т),

Ф ksmooth(VX, VY, b) — возвращает n-мерный вектор сглаженных VY, вычисленных на основе распределения Гаусса. VX и VY — п-мерные векторы действительных чисел Параметр b (полоса пропускания) задает ширину окна сглаживания (b должно в несколько раз превышать интервал между точками по оси х),

Ф supsmooth(VX, VY) — возвращает и-мерный вектор сглаженных VY, вычисленных на основе использования процедуры линейного сглаживания методом наименьших квадратов по правилу k-ближайших соседей с адаптивным выбором k. VX и VY — и-мерные векторы действительных чисел Элементы вектора VX должны идти в порядке возраст ания На рис 11 28 показан пример применения функции subsmooth(X,Y), ко

торая выполняет сглаживание функции Y(X), представленной векторами Х и

Y координат ее точек Обратите внимание на применение и другой функции —

sort(Y), сортирующей данные векторов, что иногда уменьшает погрешности

численного алгоритма сгтаживания

Рис. 11.28 Сглаживание данных, представленных рядом значений XnY

В примере на рис 11 28 для получения исходного массива точек используется генератор случайных чисел Поэтому как расположение точек, так и вид кривой сглаживания могут отличаться от приведенных при иной настройке генератора случайных чисел Но в любом случае хорошо будет видно, что кривая сглаживания намного более гладкая, чем кусочно-линейная линия, соединяющая точки друг с другом в последовательном порядке

11.15. Функция предсказания

Весьма интересной является функция предсказания predikt(datai,k,N), где data — вектор данных, k — степень полинома регрессии и N — число точек. Она по ряду заданных равномерно расположенных точек позволяет рассчитать некоторое число N последующих точек, т. е. по существу выполняет жстраполяцию произвольной (но достаточно гладкой и предсказуемой) зависимости. На рис. 11.29 показано применение функции предсказания — экстраполяции.

Рис. 11.29 Применение функции предсказания — экстраполяции

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

11.16. Функции для решения нелинейных уравнений и систем

Функция поиска корня нелинейного уравнения root

Многие уравнения, например трансцендентные, и системы из них не имеют аналитических решений. Однако они могут решаться численными методами с )аданной погрешностью (не более значения, заданного системной переменной TOL). Для простейших уравнений вида F(x)=0 решение находится с помощью функции

гооt (Выражение, Имя_переменной)

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

Рис. 11.30 Вычисление корней кубического полинома

Как известно, кубическое уравнение обязательно имеет хотя бы один кубический корень х1. Он найден вначале функцией root. Два других корня могут оказаться и комплексными. Функция root может отыскивать и такие корни. Для поиска второго корня, х2, первый исключается делением F(x) на (х-х1). Соответственно для поиска третьего корня, х3, F(X) делится еще и на (х-х2). Эту процедуру можно распространить и на поиск корней полиномов более высокой степени, однако надо помнить, что найти корни полинома можно гораздо более изящным и простым способом — используя операцию символьных вычислений.

Функция поиска корней многочлена polyroots

Для поиска корней обычного полинома р(х) степени п MathCAD содержит очень удобную функцию:

polyroots(V)

Она возвращает вектор корней многочлена (полинома) степени п, коэффициенты которого находятся в векторе V, имеющем длину равную п+1.

Заметим, что корни полинома могут быть как вещественными, так и комплексными числами. Не рекомендуется пользоваться этой функцией, если степень полинома выше пятой-шестой, так как тогда трудно получить малую погрешность вычисления корней. На рис. 11.30 в конце документа приведен пример вычисления корней кубического полинома с применением функции polyroots.

Функция root в составе функции пользователя

Функцию root можно использовать и в составе функций пользователя, что нередко позволяет получать довольно простые решения для нетривиальных задач. Примером может служить вычисление неполной гамма-функции G(a,x), показанное на рис. 11.31.

Рис. 11.31 Вычисление функции G(a,x) с помощью функции root в составе функции пользователя

Директива Given для подготовки блока решения системы уравнений

При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый служебным словом — директивой Given — и имеющий следующую структуру:

Given

Уравнения

Ограничительные условия Выражения с функциями find и minerr

Рекомендуется дополнить блок проверкой решения системы.

Функции find и minerr для решения систем нелинейных уравнений

В блоке используется одна из следующих двух функций:

find(vl, v2, ..., vn) — возвращает значение одной или ряда переменных

для точного решения;

minerr(vl, v2, ..., vn) — возвращает значение одной или ряда переменных

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

Ввод ограничений при решении систем нелинейных уравнений

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

Оператор Клавиши Значение оператора

е1>е2 е1>е2 е1 больше е2 е1 < е2 е1<е2 е1 меньше е2 е1 > е2 el Ctrl ) е2 е1 больше или равно е2 е1 < е2 Ctrl ( е2 е1 меньше или равно е2 е1у:е2 el Ctrl # е2 е1 не равно е2 el=e2 elCtrl=e2 el равно е2

Примеры решения нелинейных уравнений

Функции find и minerr могут использоваться для решения одного или ряда уравнений. Рис. 11.32 показывает решение некорректно поставленной задачи. Фактически решается система взаимно несовместимых уравнений x=i0 и х^З. Поэтому MathCAD реагирует на попытку решения сообщением об ошибке.

Рис. 11.32 Пример решения простой некорректной задачи

Более правомерной является постановка вопроса о приближенном решении уравнения х2 =3 при приближенном задании x=10 в качестве начального приближения к решению. При этом для записи уравнения используется особый (жирный) знак равенства. Как видно на рис. 11.32, здесь обе функции (find и minerr) дают одинаковое решение.

Рис. 11.33 иллюстрирует решение другой задачи — поиск точек пересечения параболы отрезком прямой. В нашем случае с помощью функции Find решается система из двух уравнений (одно из них нелинейное) с ограничительными условиями, задающими область поиска корня (x<0 для отрицательного корня и х>0 для положительного).

Рис. 11.33 Вычисление координат точек пересечения параболы прямой

Еще один пример решения системы нелинейных уравнений (на этот раз с помощью функции minerr) показан на рис. 11.34.

Рис. 11.34 Решение системы из двух уравнений с помощью функции minerr

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

11.17. Реализация итерационных вычислений с помощью функции until

Рекуррентное вычисление чисел Фибоначчи

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

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

Рис. 11.35 Вычисление десяти чисел Фибоначчи

Функция until и ее применение

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

until(Выражение_1, Выражение_2)

Эта операция-функция реализует итерационные вычисления и возвращает значение выражения 2, если выражение 1 больше или равно 0. В противном случае итерационные вычисления прекращаются.

На рис. 11.36 показано действие этой функции на другом классическом примере — вычислении квадратного корня из числа N итерационным методом Ньютона.

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

Рис. 11.36 Вычисление квадратного корня итерационным методом Ньютона

Пример решения системы рекуррентных уравнений

В общем случае итерационные вычисления могут осуществляться по нескольким формулам, причем возможно перекрестное применение в них переменных. Такого рода вычисления в системе MathCAD необходимо выполнять в векторной форме. Рис. 11.37 показывает решение подобной задачи — вычисляются параметры, характеризующие развитие эпидемии. По существу, здесь конечно-разностным методом решается система дифференциальных уравнений, описывающих развитие и угасание эпидемии.

Рис. 11.37 Динамика протекания процесса эпидемии

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

11.18. Функции прямого и обратного преобразований Фурье

К фундаментальным положениям математики относится возможность представления периодических (а при определенных условиях и непериодических) функций совокупностью их гармонических составляющих в виде так называемого ряда Фурье [14]. Эта возможность используется во множестве прикладных сфер применения. Достаточно отметить, что на ее основе реализуется передача через каналы связи практически любой информации, например речи или музыки.

Прямое преобразование Фурье

Если некоторая временная функция f(t) задана рядом отсчетов, переход от нее к параметрам ряда Фурье (амплитудам и фазам гармоник) называется прямым преобразованием Фурье, а обратный переход — обратным преобразованием Фурье. К сожалению, эти переходы связаны с вычислениями интегралов, подынтегральные функции которых быстро осциллируют (т. е. приобретают колебательный характер), что существенно затрудняет вычисление таких интегралов с заданной точностью и ведет к значительным затратам времени.

Поэтому были разработаны специальные методы быстрого преобразования Фурье — БПФ (Fast Fourier Transform). К сожалению, сложность этого процесса не позволяет детально описать эти методы в настоящей книге. Отослав читателя к специальной литературе [10, 14], займемся описанием функций, реализующих прямое и обратное БПФ в системе MathCAD. Они предоставляют возможность проводить указанные преобразования для данных в виде векторов с действительными и комплексными числами.

Функция fft(V) выполняет прямое БПФ для данных, представленных действительными числами — значениями исходного вектора V. Однако при этом вектор V должен иметь 2" составляющих, где п — целое число. Если число составляющих иное, функция отказывается от быстрого преобразования и вычисляет прямое преобразование Фурье гораздо медленнее.

Функция cfft(A) аналогична предыдущей, но реализует прямое преобразование Фурье для вектора А с комплексными элементами. Если А — матрица, реализуется двумерное преобразование. Введение функции fft(V) обусловлено тем, что преобразование для векторов с действительными элементами реализуется по более быстрому алгоритму (БПФ) и занимает меньше времени (при числе отсчетов, соответствующем 2", где п — целое число). В этом случае более прост и ввод исходных данных.

Обратное преобразование Фурье

Перейдем к обратному БПФ. Функция ifft(V) реализует обратное (инверсное) преобразование Фурье для вектора V с комплексными элементами. Вектор V здесь имеет 2m+l элементов. Функция возвращает вектор D с действительными элементами.

Функция cifft(B) выполняет обратное преобразование Фурье по полному алгоритму, при котором как исходный, так и результирующий векторы или матрицы содержат элементы с комплексными значениями. Если задана матрица В, реализуется двумерное обратное преобразование Фурье. Заметим, что в ранних версиях эта возможность отсутствовала, но могла быть реализована (хотя и более сложным путем) с помощью одномерного БПФ.

Примеры на преобразование Фурье

На рис. 11.38 показано в комплексном виде прямое преобразование Фурье, а затем обратное. При этом преобразованный вектор полностью совпадает с исходным.

Рис. 11.38 Прямое и обратное преобразования Фурье для векторов с комплексными коэффициентами

Рис. 11.39 Применение БПФ для спектрального разложения и синтеза прямоугольного импульса

Техника проведения БПФ на примере разложения прямоугольного импульса и последующего его синтеза с помощью ряда Фурье с ограниченным (k-10) числом гармоник показана на рис. 11.39. Здесь исходный вектор задан с элементами действительного типа и используются функции fft и ifft.

БПФ широко применяется при решении задач фильтрации сигналов или аппроксимации функций. При ограниченном числе гармоник приближение функции тригонометрическим рядом Фурье обеспечивает наименьшую среднеквадратичную погрешность, если при этом используется БПФ.

Функции альтернативного преобразования Фурье

Помимо описанных функций MathCAD содержит ряд функций альтернативного преобразования Фурье. Они записываются прописными буквами: FFT, IFFT, CFFT и ICFFT. При альтернативном преобразовании используются иные нормирующие множители. Выражения, определяющие суть преобразований Фурье, можно легко найти в справочной базе данных системы (поэтому здесь они не приводятся).

Функции волновых дискретных преобразований

В системы MathCAD 6.0/7.0 включены еще две функции дискретных волновых преобразований:

Ф wave(V) — дискретное волновое преобразование действительных чисел с использованием четырехкоэффициентного волнового базиса Даубечи. Вектор V должен содержать 2" действительных значений, где п - целое число;

Ф iwave(V) — обратное преобразование относительно преобразования wave

(V — вектор размером 2").

Это довольно редкие функции, представляющие интерес для специалистов — разработчиков электронных фильтров.

11.19. Функции для решения дифференциальных уравнений

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

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

В прежних версиях MathCAD пользователю приходилось самостоятельно составлять документы с решением таких уравнений, например, методом Эйлера или Рунге — Кутта, что было делом не очень простым. К тому же решение загромождало текст документа. Теперь эта проблема решена, и довольно изящно.

Функции для решения обыкновенных дифференциальных уравнений

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

rkadapt — возвращает матрицу, содержащую таблицу (у, х1, х2, асc, п, F, k, s) значений решения задачи Коши на интервале от х1 до х2 для системы обыкновенных дифференциальных уравнений, вычисленную методом Рунге — Кутта с переменным шагом и начальными условиями в векторе у (правые части системы записаны в векторе F, n — число шагов, k — максимальное число промежуточных точек решения и s — минимально допустимый интервал между точками);

Rkadapt(y, х1, х2, п, F) — возвращает матрицу решений методом Рунге — Кутта с переменным шагом для системы обыкновенных дифференциальных уравнений с начальными условиями в векторе у, правые части которых записаны в символьном векторе F, на интервале от х1 до х2', п - число шагов;

rkfixed(y, х1, х2, п, F) — возвращает матрицу решений методом Рунге —

Кутта системы обыкновенных дифференциальных уравнений с начальными условиями в векторе у, правые части которых записаны в символьном векторе F, на интервале от х1 до х2 при фиксированном числе шагов п.

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

Рис. 11.40 Решение системы дифференциальных уравнений с применением функции rkfixed

На рис. 11.41 показано решение той же системы с применением функции Rkadapt. Обычно она, благодаря автоматическому изменению шага решения,

Рис. 11.41 Решение системы из двух дифференциальных уравнений с применением функции Rkadapt

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

В последнем примере решение представлено в виде временных зависимостей. Много других примеров решения дифференциальных уравнений можно найти в электронных книгах системы.

Если решение системы дифференциальных уравнений имеет вид гладких функций, то вместо функции rkfixed, описанной ранее, целесообразно применять новую функцию:

Bulstoer(y, x1, x2, n, F)

Она возвращает матрицу решения системы обыкновенных дифференциальных уравнений, правая часть которых (в виде первых производных неизвестных функций) записана в векторе F(x, у) при заданных в векторе у начальных условиях и при решении на интервале от x1 до x2 для n точек решения, не считая начальной точки. Вы можете заменить функцию Rkadapt в примере, показанном на рис. 11.40, на Bulstoer и опробовать последнюю в работе.

Функции для решения жестких систем дифференциальных уравнений

Система дифференциальных уравнений, записанная в матричной форме у=А-х, где А — почти вырожденная матрица, называется жесткой. Для решения жестких дифференциальных уравнений в последние версии MathCAD введен ряд функций:

Фbulstoer (у, x1, x2, — возвращает матрицу решения системы обыкновен-асс, n, F, k, s) ных дифференциальных уравнений, правая часть которых записана в символьном векторе F с заданными начальными условиями в векторе у, на интервале от x1 до x2. Используется Bulirsch-Stoer-метод решения с переменным шагом. Параметры k и s задают максимальное число промежуточных точек, на которых ищется решение и минимально допустимый интервал между ними;

Ф Stiffb — возвращает матрицу решений жесткого дифферен-(у, х1, х2, п, F, J) циального уравнения, записанного в F и функции

Якобиана J; у - вектор начальных значений на интервале от х1 до х2. Для решения используется Bulirsch-Stoer-метод;

Ф stiffb (у, х1, х2, — возвращает матрицу решений только в конечной асc, п, F, J, k, s) точке жесткого дифференциального уравнения, записанного в F и функции Якобиана J; у — вектор начальных значений на интервале от х1 до х2. Для решения используется метод Bulirsch-Stoer с переменным шагом;

Ф Stiffr(y, х1, х2, — возвращает матрицу решений дифференциального п, F, J) уравнения, записанного в F и функции Якобиана

J; у — вектор начальных значений на интервале от х1 до х2. Для решения используется метод Розенброка;

Ф stiffr(y, х1, х2, — матрица решений только в конечной форме жест-асе,n, F, J, k, s) кого дифференциального уравнения, записанного в F и функции Якобиана J; у — вектор начальных значений на интервале от х1 до х2. Для решения используется метод Розенброка с переменным шагом. В приведенных функциях: асc — погрешность решения (рекомендуется порядка 0.001), k — максимальное число промежуточных точек ид— минимально допустимый интервал между точками, в которых ищется решение. Обратите внимание, что функции, начинающиеся со строчной буквы, дают решения только для конечной точки. Различаются функции также и методом решения.

Функции для решения дифференциальных уравнений Пуассона и Лапласа

Для решения дифференциальных уравнений Пуассона (в частных производных второго порядка) и уравнений Лапласа в систему введены следующие функции:

Фbvalfit(vl, v2, х1, х2, xi, — устанавливает начальные условия для F, LI, L2, score) краевой задачи, заданной в векторах F, vl и v2

на интервале от х1 до х2, где решение известно в некоторой промежуточной точке xi;

Фге1ах(М1, М2, МЗ, — возвращает квадратную матрицу решения М4, М5, A, U, г) уравнения Пуассона для спектрального радиуса г, Фmultigrid(M, п) — возвращает матрицу решения уравнения Пуассона, у которого решение равно нулю на границах;

sbval(y, х1, х2, F, L.,score) — дает установку начальных условий для краевой задачи, определенной в символьном векторе F; вектор у — начальные условия на интервале от х1 до х2.

Функции для решения краевых задач

Для решения двухточечных краевых задач предназначены функции

shval(v^c1,x2,D,load,score)

bvalfit(vl,v2,x1,x2,xf,S,loadl,load2,score)

В них векторы v, vl, v2 задают начальные условия; х, х1, х2 — граничные точки интервала решений; D(х,у) — функция, возвращающая п-компонент-ный вектор с первыми производными неизвестных функций, \oad(x1,v), \oadi(x1,vi), load2(;c2,v2) — векторзначные функции, возвращающие значения начальных условий в точках х1 (х2); score(xf,y) — векторзначная функция, возвращающая п-элементный вектор соответствия. Вектор указывает, насколько значения решений, начинающихся из точек х1 и х2, должны соответствовать xf. Например, если нужно совпадение решений, то score(xf, у):=у.

Большое число примеров на решение дифференциальных уравнений с описанными функциями дается в подсказках QuickSheets, размещенных в центре ресурсов.

11. 20. Строковые функции

В версию MathCAD 7.0 PRO включен новый тип данных — строковые функции. Напоминаем, что они задаются как символьные строки в кавычках. Имеется также ряд строковых функций, указанных в документе, показанном на рис. 11.42.

Как видно из рис. 11.42, строковые значения могут быть присвоены переменным и над ними можно выполнять различные операции: объединять строки, выделять из них подстроки, преобразовывать строки в числа и в ASCII-коды (и наоборот), вычислять длину строки и т. д. Строковые функции можно применять и в программных конструкциях.

Рис.11.42 Примеры применения строковых функций

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


Глава 11 Входной язык системы MathCAD 7. 0

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

Рис. 11.5 демонстрирует типовые операции с данными файлового типа.

Рис. 11. 5 Основные операции с данными файлового типа

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

READRGB (Имя_файла)

Эта операция стоит явно в стороне от других и скорее относится к системным операциям Она используется вместе с графическими файлами и возвращает массив из трех подмассивов, несущих данные о разложении цветного изображения на три основных цвета- красный, зеленый и синий Таким образом, операция выполняет функции цветоделения, используемого в полиграфии для цветной печати графиков и рисунков

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

11 .5. Арифметические и логические операторы

Арифметические операторы

Арифметические операторы предназначены для выполнения арифметических действий над численными величинами и конструирования математических выражений. Система MathCAD содержит следующие арифметические операторы (приводится их форма ввода, последовательность нажатия клавиш для ввода и условное наименование операндов Х и Y):

Оператор

X: =Y X=Y Х--X X+ Y X-Y X. Y

Х

Y

XY

Vx"

X!

¦Z¦

z

(-) ( )

Клавиши

X: Y X-Y

X Ctrl = -X X+ Y X-Y

X* Y

X/Y X^

x\

X!

¦Z

z"

( )

Назначение оператора

Локальное присваивание X значения Y Глобальное присваивание Х значения Y Вывод значения Х Смена знака Х Суммирование Х с Y Вычитание из Х значения Y Умножение Х на Y

Деление Х на Y Возведение Х в степень Y

Вычисление квадратного корня из Х Вычисление факториала Вычисление модуля комплексного Z Вычисление комплексно-сопряженного с Z числа Ввод пары круглых скобок с шаблоном Ввод открывающей скобки Ввод закрывающей скобки

Рис. 11. 6 Примеры применения арифметических операторов

Х N X [ п Ввод нижнего индекса п X<N> Х Ctrl n Ввод верхнего индекса п На рис. 11.6 показаны примеры использования арифметических операторов Из приведенных примеров видно, что MathCAD оперирует как с действительными, так и комплексными величинами.

В дальнейшем будут рассмотрены дополнительные функции комплексного аргумента.

Расширенные арифметические операторы

Система MathCAD содержит ряд расширенных арифметических операторов:

вычисления суммы ($) и произведения (#) ряда, вычисление производной (?) и определенного интеграла (&). Здесь в скобках даны символы, ввод которых задает вывод шаблона соответствующей операции. Шаблон содержит места, подлежащие заполнению числовыми или символьными значениями. Разумеется, для вызова шаблона можно использовать и соответствующую панель набора математических спецсимволов.

На рис. 11.7 показано применение этих операторов. Заметим, что выражения с ними ведут себя как функции, т. е возвращают вычисленные значения. Поэтому их можно использовать в составе математических выражений.

Рис.11.7 Примеры применения расширенных операторов

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

Операторы отношения (логические операторы)

Ряд операторов предназначен для сравнения двух величин. Они называются операторами отношения, или логическими операторами.

Оператор Клавиши Наименование операции

Х > Y Х > Y Х больше Y Х < Y Х < Y Х меньше Y

X > Y X Ctrl) Y X больше или равно Y

X < Y X Ctrl ( Y X меньше или равно Y

X >< Y X Ctrl# Y X не равно Y

X = Y X Ctrl = Y X равно Y

He следует путать оператор сравнения (знак равенства) с похожим знаком вывода значений переменных. В системе MathCAD знак равенства как оператор отношения имеет больший размер и более жирное написание (=), чем обычный знак равенства (=) — оператор вывода. Все операторы отношения могут вводиться самостоятельно в место расположения курсора. В этом случае по обе стороны от них появляются маленькие темные прямоугольники. Они являются шаблонами для указания подлежащих сравнению выражений. Например, если ввести знак "меньше", то на экране дисплея появится блок вида' • < •. Знак вывода при этом будет появляться с сообщением об ошибке — Missing operand (пропущенный операнд)

Необходимо отметить, что выражения с логическими операторами возвращают логическое значение, соответствующее выполнению или невыполнению условия, заданного оператором. Эти значения в системе MathCAD являются логической единицей (1), если условие выполнено, и логическим нулем (0), если оно не выполнено Математически значения логической единицы и нуля совпадают со значениями числовых констант 1 и 0. Например'

2 > 1 = 1 — условие выполнено, результат 1;

1 > 2 = 0 — условие не выполнено, результат^).

Указанное свойство логических операторов позволяет строить не совсем обычные выражения, содержащие в себе логические операторы, например.

2* (5 > 0) = 2

Нетрудно понять, что выражение (5 > 0) возвращает единицу, поэтому результат вычисления такого выражения даст число 2. Логические операторы часто используются совместно с условными функциями, которые будут описаны далее.

11.6. Встроенные элементарные функции

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

Тригонометрические функции sin (z) — синус cos (z) — косинус tan (z) — тангенс sec (z) — секанс csc (z) — косеканс cot (z) — котангенс

Гиперболические функции sinh (z) — гиперболический синус cosh (z) — гиперболический косинус tanh (z) — гиперболический тангенс sech (z) — гиперболический секанс

csch (z) — гиперболический косеканс coth (z) — гиперболический котангенс

Обратные тригонометрические функции asin (2) — обратный тригонометрический синус асов (г) — обратный тригонометрический косинус atan (z) — обратный тригонометрический тангенс

Обратные гиперболические функции asinh (2) — обратный гиперболический синус acosh (2) — обратный гиперболический косинус atanh (z) — обратный гиперболический тангенс

Показательные и логарифмические функции ехр (г) — экспоненциальная функция 1п (г) — натуральный логарифм (по основанию е) log (2) — десятичный логарифм (по основанию 10)

Функции комплексного аргумента Ке (г) выделение действительной части г Im (z) — выделение мнимой части г arg (z) вычисление аргумента (фазы)

Обратите внимание, что большинство из этих функций набирается строчными латинскими буквами Рис 118 иллюстрирует работу с элементарными функциями как при действительном, так и при комплексном аргументе

Рис. 11. 8 Примеры вычислений с элементарными функциями

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

11.7. Встроенные специальные математические функции

Наряду с элементарными функциями в системе MathCAD содержится ряд встроенных специальных математических функций. Их применение расширяет возможности системы в решении сложных математических задач.

Функции Бесселя

К важнейшим встроенным специальным математическим функциям принадлежат функции Бесселя, являющиеся решениями дифференциального уравнения второго порядка:

Здесь п — порядок функции (рассматриваются функции только целого порядка при действительном х). Функции Бесселя описывают колебательные процессы и широко используются в физике и электро- и радиотехнике. Приведенное уравнение имеет решения в виде функций Бесселя Jn(x) первого рода и Yn(:c) второго рода.

Существуют также модифицированные функции Бесселя, которые являются решениями следующего дифференциального уравнения:

Эти функции также представлены функциями первого рода 1п(x) и второго рода Кп(х).

Функции Бесселя используются с вещественным аргументом. Ниже приведен список функций Бесселя, вычисление которых реализовано в системе MathCAD:

j0(х) — функция Бесселя первого рода нулевого порядка;

I0(х) — модифицированная функция Бесселя первого рода нулевого порядка;

Y0(x) — функция Бесселя второго рода нулевого порядка;

К0(х) — модифицированная функция Бесселя второго рода нулевого порядка;

J1(x) — функция Бесселя первого рода первого порядка;

I1(x) — модифицированная функция Бесселя первого рода первого порядка;

Y1(x) — функция Бесселя второго рода первого порядка;

К1(х) — модифицированная функция Бесселя второго рода первого порядка;

Jn(n,x) — функция Бесселя первого рода п-го порядка;

1п(п,к) — модифицированная функция Бесселя первого рода п-го порядка;

Yn(n,c) — функция Бесселя второго рода п-го порядка;

Кп(n,x) — модифицированная функция Бесселя второго рода п-го порядка.

Гамма-функция

Другой широко распространенной специальной функцией, вычисление которой (причем как при действительном, так и комплексном аргументе z) предусмотрено в системе MahCAD, является гамма-функция G(z). Она широко применяется и в статистических расчетах. В них используется также функция ошибок erf(x), называемая еще интегралом вероятности.

На рис. 11.9 представлены примеры вычисления ряда специальных математических функций и их графики.

Рис.11.9 Вычисление специальных математических функций

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

Дополнительные неактивные функции

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

FresnelC(x) — интеграл Френеля С(х);

FresnelS(x) — интеграл Френеля S(x);

Ci(x) — интегральный косинус;

Si(x) — интегральный синус;

Ег(х) — интегральная показательная функция;

dilog(x) — дилогарифм;

erf(z) — интеграл ошибок для комплексного аргумент z;

Psi(x) := , In(Go(x)) — "пси"-функция;

Psi(n,x) — п-я производная "пси"-функции.

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

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

11.8. Функции с условиями сравнения

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

Числовые функции с условиями сравнения

К числовым функциям с условиями сравнения относятся:

ceil(x) — наименьшее целое, большее или равное x,, floor(x) — наибольшее целое, меньшее или равное х;

mod(x,y) — остаток от деления х/у со знаком х;

angle(a,y) — положительный угол с осью х для точки с координатами (х,у)', Ф(х) — функция Хевисайда — единичного скачка (дает 0 при х<0 и 1 в

противном случае);

d(m,n) — функция, именуемая символом Кронекера, возвращающая 1

при т=п и 0 в противном случае. Назначение этих функций довольно очевидно. К примеру, функция Хевисайда может использоваться для задания импульса с шириной w.

pulse(t.w) := Ф(t) - Ф(t-w)

Функцию Хевисайда можно также использовать для создания указанных ниже логических функций, которых нет в системе MathCAD:

not(a):=Ф(.5-l) — функция логического отрицания NOT;

and(a,b):= Ф(а*Ь-.5) — функция логического перемножения AND;

or(a,b):= Ф(а+Ь-.5) — функция логического сложения OR.

Эти функции используются с параметрами а и Ь, которые имеют логические значения 0 (FALSE) и 1 (TRUE). Функции возвращают результат (О или 1) в соответствии с таблицами истинности логических функций NOT, AND и OR. Аналогичным образом можно задать и другие логические функции.

Функция условных выражений if

Более широкие возможности дает функция if для создания условных выражений:

if (Условие, Выражение 1, Выражение 2)

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

На рис 11. 10 приведены примеры применения функции if для моделирования процессов однополупериодного и двухполупериодного выпрямления синусоиды (используется в электротехнике для преобразования переменного тока в пульсирующий одной полярности) Этот процесс иллюстрируется наглядной графикой

Рис. 11. 10 Применение функции if

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

11. 9. Функции пользователя

Задание функций пользователя

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

Имя_функции (Список_параметров): = Выражение

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

Примеры задания функций одной и двух переменных

fun (x): - 10. (1 - ехр (х)) module (x, y): - ^ х2+ у2

Локальные переменные в теле функций пользователя

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

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

А: =10 fun (x): =A* (l-exp (x))

поскольку переменная А определена до задания функции. Однако, если убрать строку с ее определением, задание функции fun (x) станет невозможным, точнее, в введенном выражении переменная А будет выделена как несуществующая. Разумеется, эту переменную можно определить глобально и после задания функции пользователя, используя для этого символ глобального присваивания =:

fun (x): = А* (1 - ехр (х)) А =10

Примеры задания функций пользователя

Функции пользователя можно вводить для задания новых специальных математических функций. Ряд таких примеров содержится в справочнике системы и приведен на рис. 11. 11.

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

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

Рис. 11. 11 Примеры задания и применения функций пользователя

11. 10. Операторы и функции для работы с векторами и матрицами

Векторные и матричные операторы

Для работы с векторами и матрицами система MathCAD содержит ряд операторов и функций. Вначале рассмотрим операторы, введя следующие обозначения: для векторов — V, для матриц —Ми для скалярных величин — Z. Ниже представлены операторы для работы с векторами и матрицами:

Оператор V1+ V2 VI-V2 -V

-м

V-Z

z* v, v* z

Z* M, M* Z V1* V2 M* V M1* M2 V

z

M

z

м-1

M" IV]

Ввод

V1+ V2 V1-V2 -V -M V-Z

z* v, v* z

Z* M, M* Z

V1* V2 M* V M1* M2

v/z

M/Z

ivr-i

M^

IV

Назначение оператора

Сложение двух векторов VI и V2 Вычитание двух векторов VI и V2 Смена знака у элементов вектора V Смена знака у элементов матрицы Вычитание из вектора V скаляра Z Умножение вектора V на скаляр Z Умножение матрицы М на вектор Z Умножение двух векторов VI и V2 Умножение матрицы М на вектор V Умножение двух матриц Ml и М2

Деление вектора V на скаляр Z

Деление матрицы М на скаляр Z

Обращение матрицы М Возведение матрицы М в степень п

Вычисление квадратного корня из ^V

¦М¦ ¦М Вычисление определителя матрицы

VT V Ctrl! Транспонирование вектора V

МT М Ctrl! Транспонирование матрицы М

VlxV2 VI Ctrl * V2 Кросс-умножение двух векторов VI и V2

V V" Получение комплексно-сопряженного

вектора М М" Получение комплексно-сопряженной

матрицы ZV Alt $ V Вычисление суммы элементов вектора V

V V Ctrl - Векторизация вектора V

М М Ctrl - Векторизация матрицы М

М<n> М Ctrl л п Выделение п-го столбца матрицы М

Vn V [ п Выделение п-го элемента вектора V

Мm,n М [(m,п) Выделение элемента (т,п) матрицы М

Следует отметить, что в некоторых операторах для ввода используется клавиша Ctrl, тогда как в ранних версиях системы MathCAD для этого предназначалась клавиша Alt (в последней версии Alt используется для начала активизации главною меню)

Операция векторизации

Большинство приведенных операторов достаточно известны из математического аппарата матричных вычислений. Под необычным для нашей математической литературы понятием "векторизация" подразумевается одновременное проведение математических операций в их скалярном значении над всеми элементами вектора или матрицы, помеченными знаками векторизации. Это можно понимать и как возможность параллельных вычислений.

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

Если А и В — векторы, то АЧВ дает скалярное произведение этих векторов. Но то же произведение под знаком векторизации создает новый вектор, каждый 7-й элемент которого есть произведение J-X элементов векторов А и В

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

Векторные функции

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

length(V) — возвращает длину вектора;

last(V) — возвращает индекс последнего элемента;

max(V) — возвращает максимальный по значению элемент;

min(V) — возвращает минимальный по значению элемент;

Re(V) — возвращает вектор действительных частей вектора с комплекс ными элементами;

Im(V) — возвращает вектор мнимых частей вектора с комплексными элементами;

e(i,j, k) — полностью асимметричный тензор размерности три. г, j и k

должны быть целыми числами от 0 до 2 (или между ORIGIN и ORIGIN+2, если ORIGINS). Результат равен 0, если любые два аргумента равны, 1 — если три аргумента являются четной перестановкой (0, 1, 2), и минус 1, если три аргумента являются перестановкой (0, 1, 2), кратной 2 и некратной 4.

Матричные функции

Для работы с матрицами также существует ряд встроенных функций. Они перечислены ниже:

augment(Ml,M2) — объединяет в одну матрицы Ml и М2, имеющие одинаковое число строк (объединение идет "бок о бок");

identity(n) — создает единичную квадратную матрицу размером п*п;

stack(Ml,M2) — объединяет две матрицы Ml и М2, имеющие одинаковое число столбцов, располагая Ml над М2;

submatrix(A,ir,jr,ic,jc) — возвращает субматрицу, состоящую из всех элементов, содержащихся в строках от ir no jr и столбцов с ic по JC (irfjr и icfjc);

diag(V) — создает диагональную матрицу, элемент главной диагонали которой — вектор V;

matrix(ff2,n,f) — матрицу, в
которой (i,j)-vi элемент содержит f(i,j), где г=0,
1,... т uj=0, 1,... п;

Re(M) — возвращает матрицу действительных частей матрицы М с комплексными элементами;

Im(M) — возвращает матрицу мнимых частей матрицы М с комплексными элементами.

Функции, возвращающие специальные характеристики матриц

Специальные характеристики матриц возвращаются следующими функциями:

cols(M) — возвращает число столбцов матрицы М;

rows(M) — возвращает число строк матрицы М;

rank(M) — возвращает ранг матрицы М;

tr(M) — возвращает след (сумму диагональных элементов) квадратной

матрицы М;

mean(M) — возвращает среднее значение элементов массива М;

median(M) — возвращает медиану элементов массива М;

condl(M) — возвращает число обусловленности матрицы, вычисленное в

норме L1;

cond2(M) — возвращает число обусловленности матрицы, вычисленное в

норме L2;

conde(M) — возвращает число обусловленности матрицы, вычисленное

в норме евклидова пространства;

condi(M) — возвращает число обусловленности матрицы, основанное на

равномерной норме;

norml(M) — возвращает L1, норму матрицы М;

norm2(M) — возвращает L2, норма матрицы М;

поппе(М) — возвращает евклидову норму матрицы М;

normi(M) — возвращает неопределенную норму матрицы М.

Примеры применения векторных и матричных операций

На рис. 11.12 приведены примеры использования наиболее распространенных векторных операторов, описанных выше.

Рис. 11.12 Применение операторов для работы с векторами

РИС.11.13 Примеры матричных операций (начало)

MathCAD делает работу с векторами и матрицами столь же простой, как и с обычными числами и переменными Это, безусловно, способствует проникновению векторных и матричных методов математических вычислений в практику научно-технических и иных расчетов

Применение операторов для работы с матрицами показано на рис 11 13 Поскольку не все матричные операции поместились в окне документа, представленного на рис 1113, конец документа с другими матричными операциями показан на рис 11 14

Рис. 11.14 Примеры матричных операций (конец)

На рис 1115 приведен ряд примеров применения наиболее распространенных матричных функций

Рис.11.15 Примеры применения матричных функций (начало)

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

Рис. 11.16 Примеры применения матричных функций (конец)

Дополнительные матричные функции

В профессиональные версии MathCAD включен ряд дополнительных матричных функций Они перечислены ниже.

eigenvals(M) — возвращает вектор, содержащий собственные значения матрицы М,

eigenvec(M,Z) для указанной матрицы М и заданного собственного значения Z возвращает принадлежащий этому собственному значению вектор,

eigenvecs(M) — возвращает матрицу, столбцами которой являются собственные векторы матрицы М (порядок расположения собственных векторов соответствует порядку собственных значений, возвращаемых функцией eigenvals),

genvals(M,N) — возвращает вектор обобщенных собственных значений v1 соответствующий решению уравнения M-x=v,-N-x (матрицы М и N должны быть вещественными),

genvals(M,N) — возвращает матрицу, столбцы которой содержат нормированные обобщенные собственные векторы,

Ф1и(М) — выполняет треугольное разложение матрицы М- P-M=L-U, L и U — соответственно нижняя и верхняя треугольные матрицы Все четыре матрицы квадратные, одного порядка;

Фqr(A) — дает разложение матрицы A, A=Q-R, где Q, — ортогональная матрица и R — верхняя треугольная матрица,

(Bsvd(A) — дает сингулярное разложение матрицы А размером n m A*S*VТ где U и V — ортогональные матрицы размером m m и n n соответственно, S - диагональная матрица, на диагонали которой расположены сингулярные числа матрицы А,

Фsvds(A) — возвращает вектор, содержащий сингулярные числа матрицы А размером т-п, где т>п;

Egeninv(A) - возвращает матрицу левую обратную к матрице А.

L-A=E, где Е — единичная матрица размером п* п, L — прямоугольная матрица размером n-rn, A — прямоугольная матрица размером п*п.

Функции сортировки для векторов и матриц

Начиная с третьей версии в системе MathCAD появились некоторые дополнительные функции сортировки — перестановки элементов векторов и матриц:

sort(V) — сортировка элементов векторов в порядке возрастания их значений;

reverse(V) — перестановка элементов (после sort) в обратном порядке;

csort(M,n) — перестановка строк матрицы М таким образом, чтобы отсортированным оказался п-й столбец;

rsort(M,n) — перестановка столбцов матрицы М таким образом, чтобы отсортированной оказалась п-я строка.

Примеры применения дополнительных векторных и матричных функций

На рис. 11.17 представлены примеры, иллюстрирующие работу некоторых дополнительных векторных и матричных функций.

Рис. 11.17 Работа дополнительных векторных и матричных функций

Решение систем линейных уравнений

В целом векторные и матричные операторы и функции системы MathCAD позволяют решать широкий круг задач линейной алгебры. К примеру, если задана матрица А и вектор В для системы линейных уравнений в матричной форме АхХ:=В, то вектор решения можно получить из очевидного выражения Х:=А-1*В. На рис. 11.18 приведен пример решения системы линейных уравнений.

Рис. 11.18 Решение системы линейных уравнений

Для решения систем линейных уравнений в MathCAD PLUS введена встроенная функция

Isolve(A.B),

которая возвращает вектор Х для системы линейных уравнений А-Х=В при заданной матрице коэффициентов А и векторе свободных членов В. Если уравнений п, размерность вектора В должна быть п, а матрицы А — п-п. Пример применения этой функции также дан на рис. 11.18.

11.11. Функции линейной и сплайновой аппроксимаций

Одномерная линейная аппроксимация

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

При кусочно-линейной интерполяции, или аппроксимации, вычисления дополнительных точек выполняются по линейной зависимости. Графически это означает просто соединение узловых точек отрезками прямых, для чего используется следующая функция:

linterp(VX, VY, х)

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

Одномерная сплайн-интерполяция и сплайн-аппроксимация

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

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

Для осуществления сплайновой аппроксимации система MathCAD предлагает четыре встроенные функции. Три из них служат для получения векторов вторых производных сплайн-функций при различном виде интерполяции:

cspline(VX, VY) — возвращает вектор VS вторых производных при приближении в опорных точках к кубическому полиному;

pspline(VX, VY) — возвращает вектор VS вторых производных при приближении к опорным точкам параболической кривой;

lspline(VX, VY) — возвращает вектор VS вторых производных при приближении к опорным точкам прямой. Наконец, четвертая функция

interp(VS, VX, VY, x)

возвращает значение у(х) для заданных векторов VS, VX, VY и заданного значения x.

Таким образом, сплайн-аппроксимация проводится в два этапа. На первом с помощью функций cspline, pspline или Ispline отыскивается вектор вторых производных функции у(х), заданной векторами VX и VY ее значений (абсцисс и ординат). Затем, на втором этапе для каждой искомой точки вычисляется значение у(х) с помощью функции interp.

Примеры линейной и сплайновой аппроксимаций

На рис. 11.19 показано применение описанных функций для линейной и сплайновой аппроксимаций.

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

Двумерная линейная сплайн-интерполяция и сплайн-аппроксимация

Для повышения качества построения 3D-графиков имеется возможность осуществления двумерной сплайн-интерполяции. Это позволяет существенно повысить представительность сложных графиков 3D-функций, в том числе контурных (см. рис. 11.20).

На этом рисунке слева показан контурный график после проведения двумерной сплайн-интерполяции, а справа — без нее (с применением линейной