Изучение дисциплины «Информационные технологии»

ВВЕДЕНИЕ

Изучение дисциплины «Информационные технологии» является составной частью фундаментальной подготовки студентов специальности 210100. Она преподается в течение пятого и шестого семестров и, кроме изучения алгоритмических языков, предполагает освоение функциональных возможностей различных подсистем операционной системы Windows, а именно: текстового редактора Microsoft Word и табличного Microsoft Excel, графического редактора Adobe Photoshop 4.0, математического пакета Mathcad 8 Pro и других.

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

Технология выполнения лабораторных работ единообразна и включает в себя следующие этапы:

- теоретическое усвоение материала в объеме данных методических указаний и соответствующих разделов курса лекций;

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

- выполнение задания с использованием вычислительной системы;

- оформление отчета;

- защиту выполненной лабораторной работы в виде теста.

Каждая лабораторная работа рассчитана на два или четыре аудиторных часа.

 

ЛАБОРАТОРНАЯ РАБОТА №1

Тема: Стандартные программы Windows.

 

Цель работы: Ознакомление со стандартными программами Windows, и использование технологии OLE, а также приобретение навыков ее использования с редакторами WordPad и Paint.

Основные сведения о программе WordPad

    Текстовый процессор служит для создания, форматирования, редактирования и просмотра текстовых документов. Он… Рис.1.1 - Окно WordPad с набранным текстом документа При редактировании документа изменения можно вносить в любую его часть. Для этого необходимо перемещаться по…

Основные сведения о программе WordPad

Программа Paint простейший графический редактор, предназначенный для создания и редактирования рисунков. Вызов программы осуществляется командой… Окно программы Paint содержит также строку меню, панель инструментов с… Две верхние кнопки служат для выделения области рисунка: произвольной и прямоугольной. С выделенной областью можно…

Технология OLE

Обязательным условием для создания составного документа является поддержка технологии OLE-приложением. При этом различают приложения, их называют… Под внедрением объекта подразумевается сохранение в файле составного документа… · приложение-сервер открывается в отдельном окне, и после редактирования объекта в меню Файл этого окна выбирают…

ЛАБОРАТОРНАЯ РАБОТА №2

 

Тема: Текстовый редактор Microsoft Word и табличный процессор Microsoft Excel.

 

Цель: Научится создавать простые и комплексные документы с помощью Microsoft Word, и Excel.

 

Основные сведения о программе Microsoft Word

 

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

 

Краткое описание основных операций работы с текстом

1. Для создания текстового файла, документа или документов Word, нужно выполнить одно из следующих действий:   № Возможный вариант выполнения операции …  

Краткое описание работы с фрагментами текста

1. Для выделения фрагмента в текстовом файле, документе или шаблоне документов Word, нужно выполнить следующие действия:   № Возможный вариант выполнения операции …  

Структура документов в Microsoft Excel

 

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

 

Добавление рабочих листов

 

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

- рабочие листы для создания таблиц;

- диаграммы (в качестве элемента таблицы или на отдельном листе);

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

- рабочий лист для создания диалогового окна.

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

 

Построение таблиц

 

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

 

Маркирование ячеек

 

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

 

Форматирование чисел

 

Прежде всего, нужно промаркировать ячейки, в которых надо изменить формат представления чисел. После этого можно либо открыть правой кнопкой мыши контекстное меню и вызвать в нем директиву Format Cells, либо вызвать директиву Cell из меню Format. В любом случае на экране появится диалоговое окно Format Cells. По умолчанию в верхнем поле этого окна будет выбрана опция Number, которая предназначена для форматирования чисел. В поле Category приведены различные типы форматов, которые выбираются щелчком мыши или с помощью клавиш управления курсором. В поле Format Codes: показаны коды форматов выбранного типа. В поле ввода Code: пользователь может задать код своего формата и запомнить его в списке форматов. В нижней части окна Format Cells находится поле просмотра Sample, в котором показано, как будет выглядеть содержимое ячейки в выбранном формате.

 

Табличные вычисления

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

Ввод формул

 

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

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

 

Сложные формулы

Применение сложных формул продемонстрируем на примере.     B C D E …  

Групповые имена

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

Построение и оформление диаграмм

 

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

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

 

Построение диаграмм

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

Обработка списков

 

Списки позволяют эффективно работать с большими однородными наборами данных.

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

 

Создание списков

 

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

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

 

Ввод списка данных

 

После вызова директивы Form из меню Data открывается диалоговое окно, в котором программа спрашивает, можно ли рассматривать первую строку в качестве заголовка списка. Здесь нужно ответить утвердительно, щелкнув по кнопке OK.

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

Каждый новый список следует создавать на отдельном рабочем листе. Программа Excel может обрабатывать только один список на одном рабочем листе.

 

Анализ данных

 

Для анализа больших списков данных в программе Excel предусмотрены специальные средства.

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

 

Опорные таблицы

Директивой PivotTable из меню Data откройте диалоговое окно Конструктора опорных таблиц. В этом окне за четыре шага нужно построить опорную… На первом шаге следует указать источник поступления данных. Если исходные… На втором шаге нужно указать область рабочего листа, где находится список. По умолчанию программа предлагает список,…

Нахождение значений

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

Базы данных

 

В комплект поставки Excel входит программа обработки внешних баз данных MS Query.

Программа Query (Запрос) может работать с текстовыми файлами и с данными, которые были подготовлены следующими программами управления базами данных: Ms Access, dBASE, FoxPro, Oracle, Paradox, SQL Server. Набор данных, хранящийся на диске в формате, одной из перечисленных выше баз данных, будем называть внешней базой данных.

 

Запуск программы обработки баз данных

 

Вызовите Менеджер расширений директивой Add-Ins из меню Tools. Откроется диалоговое окно Менеджера. В нем можно выбрать из списка опции расширения, которые включаются и выключаются щелчком по соответствующей опциональной кнопке, расположенной перед именем расширения.

По списку опций можно перемещаться с помощью линейки прокрутки. Найдите в списке строку MS Query Add-In и щелкните по кнопке в этой строке, чтобы в ней появился крестик. Затем закройте диалоговое окно щелчком по командной кнопке OK.

Теперь загляните в меню Data. В нижней части этого меню должна появиться директива Get External Data, с помощью которой можно запускать программу Query.

Оболочка программы Query

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

Порядок выполнения работы

1. Добавить в документ рабочие листы всех типов. 2. Создать таблицу произвольной тематики. 3. Скорректировать ширину строк и столбцов по тексту.

ЛАБОРАТОРНАЯ РАБОТА №3

Тема: Графический редактор Adobe Photoshop 4.0.

Цель работы: Ознакомление с графическим редактором Adobe Photoshop 4.0 и работе в нем.

Введение

 

Что же находится за кулисами Photoshop? Пиксели. Каждое изображение в Photoshop покрыто сплош­ной сеткой мельчайших ячеек в форме квадратиков — так называемых пикселей. Когда вы рисуете, рету­шируете, вырезаете, вставляете фрагмент или каким-либо иным образом изменяете изображение в Photoshop, вы просто-напросто изменяете пиксели изображения. Пиксель представляет собой наименьший элемент изображения — по сути, слово пиксель было создано из комбинации двух слов picture (изображение) и element (элемент). В каждом квадратном дюйме изображения, созданного с разрешением 72 пикселя на дюйм, насчитывается 5184 пикселя (72 пикселя на дюйм по горизонтали х 72 пикселя на дюйм по вертикали = 5184). В общем случае, чем больше пикселей помещается на одном квадратном дюйме, тем четче выглядит изображение и тем плавнее будут переходы между цветами при выводе изо­бражения на печать.

Но в Photoshop все далеко не так просто. Работая в Photoshop, вы должны мыслить как художник. Ко­гда вы чертите линию, рисуете фигуру или вводите текст, вы заполняете пиксели — наносите краску на электронный холст. Как только созданный объект или текст появляется на экране, он сразу же "высыхает" на холсте, как будто приклеивается к этому месту экрана. Если вы захотите переместить этот объект, то уже придется воспользоваться весьма точным инструментом, который как бы вырежет его из картинного полотна. Только после этого вы сможете переместить объект в другое место. Чтобы удалить этот объект, вам придется закрасить его пиксели — обычно белым цветом фона.

 

Обзор Photoshop

 

После загрузки Photoshop на экране появятся: строка меню, палитра инструментов, три группы палитр (Navigator, Info, Options — Навигатор, Инфо, Параметры; Color, Swatches, Brushes — Цвет, Каталог, Кисти;

Layers, Channels, Paths — Слои, Каналы, Контуры), а также палитра Actions (Действия). В отличие от многих программ, которые автоматически открывают новый документ, Photoshop этого не делает. О том, как создать новый файл, вы узнаете немного позже в разделе "Создание нового файла" данной главы.

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

 

Меню Photoshop

Меню Edit (Редактирование) в основном используется для копирования или перемещения фрагментов изображения в другие области рисунка или другие файлы.… Меню Image (Изображение) позволяет преобразовать цветное изображение в… Меню Layer (Слой) содержит команды, позволяющие создавать слои и оперировать ими. (Слой — это нечто, весьма…

Создание нового файла

В этом разделе вы самостоятельно создадите файл, что поможет вам ближе познакомиться и научиться пользоваться окном документа Photoshop, а также… 1. Чтобы создать новый документ, выберите команду New (Новый) из меню File… 2. В поле Name (Имя) можно ввести заголовок окна вашего документа еще до того, как вы сохраните его на диске.…

Палитра инструментов Photoshop

Вдоль левой стороны окна Photoshop располагается палитра инструментов (toolbox). Эта палитра со­держит инструменты, необходимые для рисования,… В палитре инструментов Photoshop содержатся 22 инструмента, каждый из которых,…  

Инструменты выделения

Первый инструмент в первом ряду и оба инструмента второго ряда палитры инструментов на­зываются инструментами выделения (selection tools). Если вы… Если вы выберете пункт Elliptical (Эллипс), на кнопке инструмента Marquee… Под инструментом Marquee находится инструмент Lasso (Лассо), который может использоваться как "ручной"…

Инструменты рисования

Инструменты Paint Bucket (Заливка), Line (Линия), Paintbrush (Кисть) и Airbrush (Аэрограф) использу­ются для рисования основным цветом. Инструмент…  

Инструменты создания и редактирования контуров

Инструмент Pen (Перо) позволит вам создавать контуры (paths). Контуры обычно используются для создания масок. Маска может применяться для… С помощью инструмента Pen можно активизировать все инструменты,…  

Значки управления цветами

Значки Foreground Color (Цвет переднего плана) и Background Color (Цвет заднего плана) ото­бражают текущие значения основного и фонового цветов. Если вы щелкнете на каком-либо из них, появится диалоговое окно Color Picker (Палитра цветов), в котором вы сможете изменить значения для основного или фонового цветов.

Если вы щелкнете на значке Switching Colors (Переключение цветов), цвет значка Foreground Color изменится на цвет значка Background Color, и наоборот. Вы также можете нажать клавишу <Х>, и тогда основной и фоновый цвета поменяются местами.

Значок Default Color (Цвет по умолчанию) восстанавливает значения, принятые по умолчанию лля (Фонового (белый) и основного (черный) цветов

 

Кнопки управления структурой окна

Три кнопки управления структурой окна, находящиеся в самом низу палитры инструментов, предназначены для изменения режима отображения окна на экране.…   Пример использования:

ЛАБОРАТОРНАЯ РАБОТА № 4

Тема: Математический пакет Mathcad 8 Pro.

Цель: Показать возможности программирования с помощью математического пакета Mathcad 8 Pro.

 

Панель программирования

 

 
 

В Mathcad, по сути, не встроен язык программирования, а просто снято ограничение на использование составных операторов в теле алгоритмических управляющих конструкций выбора (if) и повторения (until). Кроме того, введено понятие локальной переменной, добавлен цикл с параметром for, операторы досрочного выхода из цикла break и continue, а также оператор досрочного выхода из программы return. Алгоритмические конструкции в среде Mathcad вводятся не традиционным набором через клавиатуру ключевых слов if, then, else, while и т.д., а нажатием одной из кнопок панели программирования (Programming):

 

Рис. 4.1 - Панель программирования Mathcad

Щелчок по одной из этих кнопок создает на дисплее заготовку соответствующей программной конструкции.

Опишем их.

 

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

Было

стало

 

 

Вертикальная линия объединяет отдельные операторы в операторный блок с одним входом и одним выходом, который выполняется как единый оператор (один из трех атрибутов структурного программирования).

 

Кнопка – это оператор присвоения значения локальной переменной. На языке Pascal мы пишем А:= В + С, на языке BASIC – А = В + С, а на языке Mathcad – А ← B + С. Почему?

A:= A:= B + C (Pascal),

В Mathcad-выражении: A:= A ← B + C все более-менее ясно: локальной переменной A (она в середине между символами «:=» и «←») присваивается значение суммы двух переменных B и C, значение которых уже задано выше в Mathcad-документе (глобальные переменные). Затем эта сумма передается глобальной переменной A (она слева от знака «=»).

 
 

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

Негативное изображение переменной В будет свидетельствовать о том, что ее значение вне программы (В ← 3) неопределенно. Благодаря локальным переменным можно создавать объемные Mathcad-документы, поручая разработку отдельных функций и операторов разным программистам и не заботясь о разделении переменных: в разных программах переменные могут совпадать по имени, но при этом они не будут перебегать дорогу друг другу (технология программирования «сверху вниз»).

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

 
 

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

В первый квадратик (правее while) нужно будет записать булево выражение (переменную), управляющее циклом, а во второй (ниже while) – тело цикла, операторы которого будут выполняться, пока булево выражение возвращает значение «Да» (в среде Mathcad – это числовое значение, отличное от нуля). Если в теле цикла более одного оператора (а это основное отличие оператора while от вышеупомянутой функции until), то нужно воспользоваться кнопкой Add Line (см. выше).

Кнопка позволяет вводить в программу альтернативу с одним плечом. Так, Pascal-конструкция: if A > B then C:= D в среде Mathcad будет выглядеть несколько по-арабски (записана справа налево): С ← D if A > B.

Но если плечо альтернативы – составной оператор, то все встанет на свои места, вернее, будет записано сверху вниз:

Pascal: if A>B then begin E:=F; F:=G end[11];

Mathcad: if A>B

E←F

F←G

Кнопка - превращает неполную альтернативу в полную.

 

Pascal: if A > B then C := D else E:= F;

Mathcad: C ←D if A > B

E ←F otherwise

Но если в плечах полной альтернативы по одному оператору, то можно воспользоваться не оператором (кнопкой) if, а функцией if:

C←if(A > B, D, F) или if(A > B, C←D, E←F)

Понять, почему в Mathcad не было использовано традиционное слово else, можно, если принять во внимание то, что операторы if и otherwise позволяют записать в программах алгоритмическую конструкцию множественное ветвление. Разберем ее на примере задачи о расчете налогов (федеральный налог США с недельного заработка).

Функции Tax1 и Tax2 (пункт 1) возвращают налог с холостых и женатых по прогрессивной шкале налогообложения (см. график в пункте 3). В данном примере (и во всех других) без оператора otherwise можно обойтись (сравните окончания функций Tax1 и Tax2). Он необходим в тех случаях, когда булево выражение, объединяющее оставшиеся случаи ветвления, трудно сформировать. Оператор otherwise – это гибрид ключевых слов ELSE, ELSEIF и CASE ELSE языка BASIC.

Когда заранее известно, сколько раз нужно выполнить какую-то часть программы (тело цикла), то используют не цикл while, а цикл for, в заголовке которого пишут не булево выражение, а параметр цикла и указывают, какие дискретные значения он должен принимать в цикле. Эти значения можно перечислить через запятую (1, 2, 3.7) или указать диапазоном (2.. 100) или вектором (V).

 
 

Рис. 4.2 - Решение буквенной головоломки USA+USSR=PEACE (иллюстрация цикла с параметром)

 

Программа на рис. 4.2 решает буквенную головоломку USA+USSR=PEACE, где требуется указать, какие цифры скрываются за буквами. В программе три цикла с параметром (A, C и S), которые вложены друг в друга. В программе, не мудрствуя лукаво, можно было записать все семь циклов – по числу неизвестных задачи U, S, A, R, P, E и C. Но тогда перебор длился бы нестерпимо долго. Несложный предварительный анализ условий задачи (U ← 9, Р ← 1, Е ← 0 и R ← 10 + A) сокращает число циклов до трех и делает время счета приемлемым. Один из основных недостатков языка Mathcad – это невозможность вывода на дисплей промежуточных результатов расчета. А они не только помогают отлаживать программы, но и в ряде случаев просто необходимы при поиске единственно правильного решения из множества возможных. В Mathcad-программах допустима запись вариантов ответов (промежуточных результатов) в матрицу (в вектор), которую после выполнения программы можно просмотреть, что и сделано на рис. 4.2. При этом в матрицу M записываются не только значения числовых переменных, но и текстовые константы (“+”, “=” и др.), делающие ответ более читабельным. Правильный ответ хранится в первом столбце матрицы M. Вернее, в первой строке – матрица у нас транспонируется для большей компактности. Остальные ответы неверны – там разным буквам соответствуют одинаковые числа.

Цикл с параметром в среде Mathcad более гибок, чем его аналоги в языках BASIC или Pascal. Вот еще варианты заголовков циклов с параметром в среде Mathcad, кроме тех, которые показаны на рис. 4.2 (там специально приведены разные варианты заголовков циклов):

 

for A V (V – вектор)

 

for A 5, 4.7, 8.9, 7.3×10-5

 

for i i1.. i2.

 

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

For i=i1 To i2 или For i=i2 To i1 Step -1 (BASIC)

for i:=i1 to i2 do или for i:=i2 downto i1do (Pascal).

Кнопки и позволяют досрочно выходить

из циклов while и for, а кнопка . – совсем из программы.

 

Ниже приведены другие примеры программ в среде Mathcad.

 

Рекурсия

Рекурсивная функция – это такая функция, которая вызывает сама себя в момент ее создания. Рекурсия – очень мощный и удобный инструмент решения… Числа Фибоначчи, которые связаны с условными кроликами: Поколение…  

Об использовании операторов break continue return

 

 
 

Попробуем на простых примерах показать, что ввод в язык Mathcad операторов break, continue и return (см. выше) – только полшага в сторону повышения гибкости управляющих конструкций этого языка программирования.

 

Рис. 4.5 - Метод Ньютона I (BASIC): цикл с выходом из середины

 

На рис. 4.5 приведена BASIC-программа поиска корня алгебраического уравнения методом Ньютона (касательных). Почему мы начали с языка BASIC, ведь этюд посвящен языку программирования Mathcad? Дело в том, что язык BASIC кроме традиционной тройки циклов (цикл с предпроверкой, цикл с постпроверкой, цикл с параметром) имеет и универсальный цикл с выходом из середины: Do [...] If ... Then [...] Exit Do [...] Loop. Эта конструкция наряду с другими преимуществами, о которых будет сказано ниже, позволяет реализовывать алгоритмы в их естественной последовательности. Так, в программе на рис. 6.8 объявляются функции пользователя (анализируемое уравнение y и его производная dy), запрашивается значение начального приближения к корню x и задается значение погрешности TOL. После этого организуется цикл, но не традиционный, а с выходом из середины. В цикле, следуя естественному порядку алгоритма Ньютона, рассчитывается новое приближение к корню (x1), и если оно отстает от предыдущего не более чем на величину заданной погрешности, то (Then) задача считается решенной (Exit Do). Если нет, то ведется подготовка к новому приближению (x = x1), а цикл повторяется (Loop).

При реализации на языке Mathcad этот несложный алгоритм обрастает «архитектурными излишествами», так как его приходится реализовывать функцией и «запихивать» в прокрустово ложе цикла while – см. рис. 4.6.

 

 
 

Рис. 4.6 - Метод Ньютона II: цикл с предпроверкой

 

Цикл с предпроверкой (цикл while) требует, чтобы булево выражение заголовка было определено еще до входа в цикл. А этого нет при поиске корня методом Ньютона. Приходится до входа (и для входа) в цикл писать x1 ←x + 2 × TOL. Подобным образом лгут детям (а машина тоже в каком-то смысле дитя), заставляя их что-то делать. Строку x1 ←x + 2 × TOL можно уподобить стартеру двигателя внутреннего сгорания, работающего, кстати, как и программа на рис. 4.6, циклически. Вот какими аллегориями (дитя, двигатель) обросла наша простенькая программа из-за того, что в языке Mathcad нет цикла с выходом из середины. На рис. 4.6 можно отметить и другую ненатуральность программы – постановку телеги впереди лошади: в цикле сначала приходится готовиться к новому приближению (x1 ←x), хотя еще не ясно, понадобится оно или нет, а только потом проводить его.

Операторы break, continue и return, введенные в Mathcad, призваны вернуть программе на рис. 4.6 ее естественность, но...

 
 

Рис. 4.7 - Метод Ньютона III: имитация цикла с выходом из середины

 

Оператор continue отличается от оператора break тем, что передает управление не в хвост, а в гриву (начало) цикла.

Остается рассказать о последней кнопке на панели программирования Mathcad 8 Pro. Нажатие на нее приводит к появлению на дисплее заготовки инфиксного оператора обработки ошибок с двумя операндами:

Суть оператора проста: если при выполнении правого операнда возникнет ошибка, то выполняется левый операнд. Этот оператор позволяет реализовывать в Mathcad-программах метод проб и ошибок.

 
 

Испробуем on error, на простом примере:

 
 

Но оказалось, что объявленная таким образом функция y(х) возвращает нуль, а не единицу при x = 0. Дело в том, что система Mathcad, оптимизируя произведение, выдает нуль, если первый сомножитель равен нулю. Функцию y(х) нужно переписать по другому:

 
 

но и эта запись не совсем правомочна. Проще записать:

 

Здесь графически решается неравенство: функция f(x) возвращает нуль не только тогда, когда логарифм меньше единицы, но и тогда, когда делается попытка взятия логарифма от неположительного числа. Можно, конечно, решить квадратное уравнение и обойти ошибку функцией или оператором if.

 

Контрольные вопросы:

 

1. Знать основные компоненты Математического пакета Mathcad

2. Дать описание всем инструментам, находящимся на панели «Программирование», уметь их практически использовать.

 

Задание:

 

1. Задание на закрепление пройденного: сделать программу на рис. 4.3 рекуррентной, а на рис. 4.4 – рекурсивной.

2. Задания 1 выполнить в среде математического пакета Mathcad.

 

 

 

ЛАБОРАТОРНАЯ РАБОТА №5

 

Тема: Программа сканирования и распознования текстов FineReader.

 

Цель работы: Ознакомление с принципом работы програм сканирования текста, а также приобретение навыков работы с программой FineReader.

 

Введение

 

Все мы вводим тексты в компьютер. Это могут быть газетные вырезки, журнальные статьи, прошлогодние договоры, деловые письма, факсы, прайс - листы, биржевые сводки, анкеты... Подсчитано, что более 90% современных документов поступает к нам на бумаге. Десятилетия люди знали только один способ ввода печатных документов в компьютер - с клавиатуры. Помните часы, которые Вы просиживали за компьютером, перепечатывая текст длиной в ве­чность? А как бы нам всем хотелось, чтобы компьютер научился читать сам прямо с бумажного листа!

Программа оптического рас­познавания текстов (по-английски OCR – Optical Character Recognition) FineReader позволит Вашему компьютеру и сканеру самостоятельно читать печатные тексты.

 

Возможности программы ABBYY FineReader

FineReader позволяет ввести документ одним нажатием на кнопку Scan&Read, не вдаваясь в подробности работы программы. Распознанный текст можно…   1.1. Что такое OCR-системы?

Новые возможности ABBYY FineReader 5.0

 

Работа с изображениями

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

Сканирование

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

Анализ макета страницы

· В программу добавлена объединенная процедура анализа макета страницы и распознавания. Теперь алгоритм поиска блоков использует информацию о распознанном тексте для более точного анализа макета страницы. Новые алгоритмы анализа используются автоматически при запуске распознавания на странице без блоков, т.е. анализ макета и распознавание делаются за один шаг. Старый алгоритм анализа страницы, который не использует распознавание, по-прежнему доступен (меню Процесс>Анализ макета документа).

· Поддержка распознавания "встроенных" картинок: возможно отметить блок "картинка" внутри текстового или табличного блока.

Распознавание

· 176 языков распознавания. Поддержка армянского алфавита. Полный список языков приведен в разделе Поддерживаемые языки распознавания.

· Распознавание языков программирования (Basic, Cobol, Fortran, Java, C++, Pascal).

· Распознавание подстрочных символов (например, H2O).

· Распознавание вертикального текста.

· Корректная передача цвета текста.

 

Быстрое знакомство

 

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

 

Как ввести документ за минуту

 

1. Включите сканер (если он имеет отдельный от компьютера источник питания). Внимание! Многие модели сканера необходимо включать до включения компьютера.

2. Включите компьютер и запустите FineReader (Пуск/Программы/ABBYY FineReader 5.0/ABBYY FineReader 5.0 Pro или Office).Перед Вами откроется Главное окно программы FineReader.

3. Вставьте в сканер страницу, которую Вы хотите распознать.

4. Нажмите на стрелку справа от кнопки Scan&Read, в открывшемся локальном меню выберите пункт Мастер Scan&Read.

5. Далее следуйте указаниям Мастера Scan&Read.

 

Главное окно программы FineReader

Вся работа в программе FineReader ведется в пакетном режиме. Пакет - это папка, в которой хранятся изображения и рабочие файлы программы. Каждое… При первом запуске FineReader на его экране появляется пакет, созданный…  

Инструментальные панели программы FineReader

В системе FineReader инструментальных панелей всего 4: Стандартная, Изображение, Форматирование и главная панель программы Scan&Read. Кнопки на… Если Вы хотите узнать о назначении той или иной кнопки на инструментальной…  

Получение и обработка изображения программой FineReader

 

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

 

Сканирование

Чтобы запустить сканирование: · Нажмите кнопку 1-Сканировать или в меню Файл выберите пункт Сканировать.… · Если Вы хотите отсканировать несколько страниц, то нажмите стрелку справа от кнопки 1-Сканировать и в локальном…

Открытие файлов с изображениями

 

Если у Вас нет сканера, Вы можете распознавать графические файлы.

Чтобы открыть изображение:

· Нажмите стрелку справа от кнопки 1-Сканировать и в локальном меню выберите пункт Открыть изображение. Внешний вид иконки изменится; подпись Сканировать поменяется на Открыть.

· В меню Файл выберите пункт Открыть изображение.

В диалоге Открыть (Open) выберите одно или несколько изображений. Выбранные изображения появятся в окне Пакет, и последнее из выбранных изображений откроется в окне Изображение и в окне Крупный план на экране FineReader, при этом копия изображения помещается в папку пакета.

Проверка и корректирование полученного изображения

1. Очистить от мусора Распознаваемое изображение может быть сильно "замусорено", т.е.… · В меню Изображение выберите пункт Очистить изображение от мусора.

Анализ макета страницы

 

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

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

 

Общая информация по анализу макета страницы

 

Анализ макета страницы может проводиться как автоматически, так и вручную. В большинстве случаев FineReader сам успешно справляется с анализом сложных страниц. Автоматический анализ производится по кнопке 2-Распознать одновременно с распознаванием текста.

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

 

Типы блоков

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

Редактирование формы и положения блоков

Чтобы передвинуть границу блока: 1. Установите курсор мыши на границу блока. 2. Нажмите левую кнопку мыши и потяните в нужную сторону.

Распознавание

 

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

Общая информация по распознаванию

Внимание! Перед запуском распознавания проверьте установленные опции: язык распознавания, тип печати распознаваемого текста и тип страницы. Вы можете: · Распознать блок или несколько блоков, выделенных на изображении.

Проверка и редактирование текста

 

После завершения распознавания результат появляется в окне Текст. Окно Текст - это встроенный редактор программы FineReader; в нем Вы можете проверить результаты распознавания и отредактировать распознанный текст.

Одна из возможностей текстового редактора FineReader – это встроенная проверка орфографии (список языков, для которых поддерживается проверка орфографии, приведен в Поддерживаемых языках распознавания).

Система встроенной проверки орфографии позволяет:

· Находить неуверенно распознанные слова (слова, в которых есть неуверенно распознанные символы).

· Находить орфографические ошибки (неправильно написанные слова).

· Добавлять неизвестные системе FineReader слова в словарь для того, чтобы они распознавались уверенно.

 

Проверка распознанного текста

Неуверенно распознанные символы и слова, которых нет в словаре, выделяются различными цветами. По умолчанию для выделения неуверенно распознанных… · На закладке Вид (меню Сервис>Опции) в поле Объект выберите пункт… Чтобы проверить результаты распознавания:

Инструментальные панели программы FineReader.

3.Анализ макета страницы, блоки.

4. Распознование текста.

5. Какие существуют возможности сохранения распознанного текста?

 

Порядок выполнения работы:

 

1. Создать пакет.

2. Добавить изображение со сканированным текстом (нескольких типов).

3. Выделить блоки текста автоматически и в ручную, распознать.

4. Провести анализ качества распознанного текста с выделенными блоками текста автоматически и в ручную. Попробовать обучить программу распознавать не распознанные символы.


ЛАБОРАТОРНАЯ РАБОТА №6

 

Тема: Автоматизированная система лингвистического перевода PROMT 99.

Цель работы: Ознакомление с автоматизированной системой перевода на базе программного продукта PROMT 99.

 

Введение

 

PROMT 99 (в дальнейшем изложении - PROMT), принадлежит к системам автоматического перевода разработанным фирмой ПРОект МТ и обеспечивающим перевод с основных европейских языков на русский и обратно. В настоящий момент система позво­ляет работать с текстами на английском, немецком и французском языках в зависимости от приобретенной комплектации. Это 32-разрядтюе приложение, специально предназначенное для использования среде Windows 9X. Однако, оно может полноценно функционировать и среде Windows NT, 2000, XP.

 

Быстрое начало

 

В этой главе описаны наиболее простые приемы работы с системой PROMT. Это может помочь вам не только быстро получить результат еще при начальном знакомстве с PROMT, но и в даль­нейшей работе (например, при переводе текстов в сжатые сроки и невысоком требовании к качеству перевода).

 

Перевод в среде PROMT

1. Запустите PROMT Для этого нажмите кнопку Пуск в Windows, установите указатель на пункт… Это окно позволит вам запустить учебник, обучающий работе с программой, а также легко создать новый документ, или…

Перевод внутри других приложений

 

1. В документе любого приложения или в окне справочной систе­мы выделите текст, который нужно перевести, и скопируй его в буфер обмена. Для этого выберите в меню Правка команду Копировать.

2. Щелкните правой кнопкой мыши по значку перевод находящемуся на панели задач и в появившемся меню выберите коман­ду перевод Clipboard. Появится окно с запросом о направлении предполагаемого перевода.

3. Выберите направление перевода и нажмите OK. Появится окно с выполненным переводом.

4. Отредактируйте перевод и нажмите кнопку Заменить. Перевод будет сохранен в буфере обмена Clipboard, откуда его можно вставить в документ любого приложения, имеющего средства редактирования.

 

Объекты системы PROMT

 

Основными объектами, с которыми вам придется иметь дело при работе в системе PROMT, являются:

· словари;

· PROMT-документы;

· списки зарезервированных слов.

В данной главе описано их назначение, правила создания, сохра­нения и подключения.

Словари

 

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

Словари системы PROMT делятся на три типа:

· генеральные,

· специальные,

· пользовательские.

 

Генеральные словари

 

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

Генеральные словари закрыты для пользователя, т.е. их нельзя просматривать, корректировать и пополнять. Однако можно от­крыть словарную статью какого-либо слова из генерального словаря, изменить ее, а затем сохранить в своем пользовательском словаре.

 

Специализированные словари

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

 

Пользовательские словари

Для пополнения словарного запаса системы вы можете создавать свои собственные пользовательские словари, которые можно пополнять и корректировать. В…   2.2. PROMT – документ

Открытие документа, созданного в другом приложении

Работая в PROMT, вы можете открывать и переводить документы других приложений. Ниже приведены типы файлом, которые могут быть открыты для… · Документы PROMT (STYLUS) · Форматированный текст (RTF)

Функции системы PROMT

 

Последовательность работы в PROMT

Работа в PROMT включает следующие этапы: 1. Не все из приведенныхна схеме этапов работы должны выполняться всегда.… 2. При работе в приложениях Word и Excel, в которые встроены функции перевода, доступно большинство из перечисленных…

Перевод

 

PROMT позволяет:

· Переводить текст целиком или фрагментами (абзацами, группами абзацев, в заданном направлении относительно курсора);

· Получать мгновенный перевод одного или нескольких слов в пределах одной строки;

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

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

 

Способы перевода

Перевод очередного абзаца.

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

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

Перевод текущего абзаца.

Чтобы перевести любой абзац независимо от того, был ли он переведен ранее, установите в него курсор и выберите в меню Перевод или в контекстном меню команду Текущий абзац (либо нажмите Alt-F9 или кнопку инструментальной панели голубого цвета). Текущий абзац в исходном тексте и его перевод будут выделены цветом и выведены вверху, каждый в своей части окна документа.

Перевод всего текста.

Чтобы перевести весь текст, выберите в меню Перевод команду Весь текст (либо нажмите Ctrl + F9 или кнопку инструменталь­ной панели). В процессе перевода появится окно с индикато­ром хода работы.

Перевод вверх (вниз).

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

Мгновенный перевод.

PROMT позволяет автоматически, без всякой команды высветить перевод слова, на которое помещен указатель мыши. Точно также сразу появится перевод нескольких слов, выделенных в пределах одной строки, если поместить на выделенный участок указатель. Чтобы включить или выключить режим мгновенного перевода, выберите в меню Сервис или в контекстном меню окна PROMT команду параметры и в окне настройки параметров на вкладке Разное установите или снимите флажок Использовать мгновенный перевод.

 

Быстрый перевод текста, набранного на клавиатуре

Если вы собираетесь переводить текст, набранный на клавиатуре, и вам не требуется печатать или сохранять полученный перевод, то воспользуйтесь… Запустить программу QTrans можно двойном щелчком по ее значку, или при помощи… Окно программы разбито на две части: в верхней вводится текст, а в нижней появляется его перевод.

Проверка орфографии

 

Программы проверки орфографии

 

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

ПРИМЕЧАНИЕ:

PROMT может использовать только 32-разрядные программы проверки орфографии, предназначенные для MS Office.

 

Подключение программы проверки орфографии

 

1. В меню Сервис выберите команду Подключение внешних приложений.

2. В появившемся окне на вкладке Программы проверки орфографии выделите язык, для которого нужно проверять правописание.

3. Нажмите кнопку Изменить.

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

5. Нажмите ОК. Выбранная вами программа появится в списке рядом с названием выделенного языка.

2. При необходимости выберите программы проверки орфографии и для других языков. Причем эти программы могут быть разными.

3. Нажмите ОК (или кнопку Применить, если не хотите закрывать текущее окно).

 

Проверка орфографии

Для выполнения проверки: 1. Поместите курсор в окне документа в позицию, которой нужно начать проверку… 2. Выберите в меню Сервис команду Орфография (либо нажмите F7 или кнопку инструментальной панели).

ЛАБОРАТОРНАЯ РАБОТА №7

 

Тема: Символьные вычисления с помощью программы Maple V.

 

Цель работы: Получить представление о возможностях предоставляемых программой Maple V. Приобрести навыки работы с программой символьных вычислений Maple V.

 

Введение в компьютерную алгебру

 

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

В настоящее время появились хорошо работающие системы, такие как Maple, Mathematica, Macsyma, Derive, Axiom и некоторые другие. Все упомянутые выше системы, так же как и большинство неупомянутых, являются весьма дружественными по отношению к пользователю.

 

Аналитические преобразования

Математический пакет Maple предназначен для символьных математических вычислений. Хотя между различными пакетами имеются различия, синтаксис - не… · ? (help) - помощь, · ?? (usage) - проверка синтаксиса,

Пример 1 (помощь).

> ?plot;

> ???factor;

> help(linalg);

В Maple выполняемые математические выражения вводятся всегда после символа >, а заканчиваются точкой с запятой или двоеточием, если результат не надо выводить на экран. Чтобы продолжить запись предложения на следующей строке используют комбинацию "Shift+Enter". При нажатии клавиши "Enter" предложение выполняется. Обнаружив ошибку, Maple выводит сообщение о ней в следующей строке.

Кроме обычных знаков математических операций используют :

** или ^ - возведение в степень,

! - факториал,

:= - знак присвоения,

<, >, >= , <= , = - логические операции,

'' , '''', """ - результаты трех предыдущих выполненых операций,

@ - сложная функция, т.е. ( f @ g )( x )= f(g(x)),

D - дифференциал и т.д.

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

Пример 2 (выражения).

> 5+4+9;

> f:=8+9+14:

> f;

> e1:=x*(x+1)*(x-1);

> factor( " );

> e:=x^3+x**2+1;

> x(y-1);

Всегда проверяйте написанное - в последней строке пропущен знак умножения x*(y-1) - тем не менее для Maple это не ошибка, данное выражение воспринимается как функция x от аргумента (y-1).

> i:=3;

> sum(i^2,i=1..6);

Последнюю строку Maple воспринимает как 3=1..6, т.е. как ошибку. Правильно будет использовать апострофы

> sum('i^2','i'=1..6);

 

Важнейшие математические константы

Обратите внимание, что имена констант начинаются с больших букв > Pi; evalf("); > E; evalf(");

Пример 3 (вычисление выражений).

> 25/15+23^3;

> evalf(");

> sin(36);

> evalf(");

> sqrt(2+3); evalf(");

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

Совет: не используйте числа с плавающей точкой в промежуточных вычислениях.

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

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

Пример 4 (зависимость).

> depends(sin(x)+cos(z),{x,y});

> depends(int(f(x),x=a..b),x);

> depends(int(f(x),x=a..b),a);

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

 

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

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

Пример 6 (упростить).

> simplify((x^a)^b+4^(1/2), power);

> simplify(exp(a+ln(b*exp(c))));

> simplify(sin(x)^2+cos(x)^2, trig);

Подстановка с помощью данной команды

> f := -1/3*x^5*y + x^4*y^2 + 1/3*x*y^3 + 1:

> simplify(f, {x^3 = x*y, y^2 = x+1});

Работа с многозначными функциями требует большего труда

> g:=sqrt(x^2);

> simplify(g);

> simplify(g,assume=real);

> simplify(g,assume=positive);

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

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

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

Пример 7 (факторизовать).

> factor(x^3+5);

> factor(x^3+5, 5^(1/3));

> factor(x^3+5, {5^(1/3),(-3)^(1/2)});

> factor(x^3+5.0);

> factor(sin(x)^2-1);

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

Пример 8 (разложить).

> expand((x+1)*(x+2));

> sin(x+y); expand(");

> exp(x+y); expand(");

> expand(BesselJ(2,t));

В последнем выражении используется функция Бесселя.

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

Пример 9 (нормальный вид выражения).

> normal( 1/x+x/(x+1) );

> normal( 1/x+x/(x+1), expanded );

> sin(x)+1/sin(x)^2; normal(");

Команда convert имеет следующий ситаксис: convert(x,type) или convert(x,type,option). Как всегда, типы и опции можно найти в справочнике.

Пример 10 (преобразовать).

> convert( 1.23456, fraction );

> (x+a)/(x*(x-b)*(x^2+c)); convert(",parfrac,x);

> sin(x); convert(");

> exp(I*x); convert(",trig);

> convert(evalf(Pi),rational,exact);

Команды collect и coeff приводят выражение к нормальному виду и позволяют явно выделять коэффициенты полинома.

Пример 11 (работа с полиномами).

> f := x*(x+1)+y*(x+1);

> g := collect(f,x);

> coeff(g,x,1);

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

> p:= x*y+a*x*y+y*x^2-a*y*x^2+x+a*x:

> collect(p, [x,y], recursive );

> collect(p, [x,y], distributed);

> collect(p, [y,x],recursive);

> collect(p, [y,x], distributed );

Кроме этого, данная команда позволяет выделять часть из целого и не только в полиномах, например

> f := a*ln(x)-ln(x)*x-x;

> collect(f,ln(x));

Команда combine является аналогом команды collect для функций общего положения, (математический алгоритм команды был разработан только в 1986 году!).

Пример 12 (комбинирование).

> f:=exp(sin(a)*cos(b)) * exp(cos(a)*sin(b));

> combine(f,exp);

> combine(f,[trig,exp]);

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

> combine(Psi(-x)+Psi(x),Psi);

Psi(x) - дигамма функция, определяемая как производная от логарифма гамма функции Psi(x) = diff( ln(GAMMA(x)) , x ).

 

Представления матеметических объектов

 

Довольно часто при проведении вычислений мы называем какое-нибудь громоздкое выражение одной буквой и далее используем это обозначение. При этом мы экономим время и бумагу, но все время помним про эту замену (т.е. активно используем память). В Maple для этого используют команду alias (newname = oldname).

Пример 1 (замены).

> f:=sin(x)+sin(x)^3+sin(x)^5;

> alias(A=sin(x));

> f;

В области вывода вы видите список всех таких замен. Как видно, мнимая единица I (выделенный радикал!) определена в Maple именно таким образом.

В конце вычислений нам надо вместо A подставить первоначальное выражение. Для подстановки достаточно просто отменить замену.

> alias(A=A);

и получим результат

> f;

> alias(alpha=RootOf(x^2-2)):

> factor(x^4-4,alpha);

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

Пример 2 (упрощение при дополнительных предположениях).

> simplify(ln(x^3), ln);

> simplify(ln(x*y));

> simplify(ln(exp(x)),ln);

Введем дополнительные сведения о переменных

> assume(x,real);

> assume(y<0);

> simplify(ln(x^3), ln);

> simplify(ln(x*y));

> simplify(ln(exp(x)));

> simplify(ln(y^3),ln);

> simplify(ln(y^4),ln);

Компьютерная алгебра не ограничивается конечными объектами типа полиномов. Она позволяет работать с некоторыми типами бесконечных рядов. Разумеется, компьютер реально может иметь дело только с конечным числом объектов, т.е. только с первыми членами ряда, но в принципе это количество не ограничено. В силу этого с рядами можно обращаться так же, как и с полиномами, - фактически большинство систем символьных вычислений не проводят между ними различия. Обычно, ряды строятся по системе рекурсивных вычислений (например по алгоритму Нормана [Norman 1975], который позволяет избежать потери точности).

 

Некоторые простые математические операции

 

Чтобы немного поработать с Maple рассмотрим теперь некотрые мтематические операции, основанные на алгоритмах сложения, умножения и деления.

Именно, обозначения пределов, сумм и произведений наиболее близки к обычным математическим обозначениям, а именно:

 

Пределы: limit или Limit

Сумма: sum или Sum

Произведение: product или Product

 

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

Разницу между ними легко понять на примерах.

Пример 3 (пределы).

> g:=Limit(sin(x)/x, x=0); # Это символ

> value(g);

Будем начинать всегда с символа, так как при этом Maple выведет математическое обозначение данного выражения.

> limit(sin(x)/x, x=0); # Это значение

Таким образом различают символ и значение!

> limit(exp(x), x=infinity);

> limit(exp(x), x=-infinity);

> f:=Heaviside(x);

> plot(f,x=-2..2,y=-2..2,thickness=2);

> limit(f,x=0);

> limit(f,x=0,right);

> limit(f,x=0,left);

Пример 4 (суммы).

> Sum('k^2', 'k'=0..n);

> sum('k^2', 'k'=0..n);

> sum('1/k!', 'k'=0..infinity);

> s:=Sum('1/k^2', 'k'=1..infinity);

> value(s);

> sum('1/k^2', 'k'=1..infinity);

Далее более сложные выражения

> sum('a[k]*x^k','k'=0..4);

> sum('a[k]*x^k','k'=0..n);

> Sum('k/(k+1)','k'=0..n) = sum('k/(k+1)', 'k'=0..n);

Эта команда достаточно интересна - посмотрите ее свойства в справочнике.

Пример 5 (произведения).

Математическая запись

> Product(k^2, k=1..n);

> product(k^2, k=1..n);

> product(k^2, k);

> product(a[k], k=0..4);

> product(a[k], k=0..n);

> Product(n+k, k=0..m) = product(n+k, k=0..m);

 

Составные математические объекты

Элементами составных математических объектов являются числа, имена выражения и любые другие объекты. В качестве основных составных объектов в Maple… 1. последовательности (exprseq) > s:= 1,4,9,25;

Команды ввода и вывода

 

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

Пример 7 (команда save и некоторые другие).

Переменные x,y,z записываются в файл name.ext командой

> save x, y, z, `name.ext`:

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

> read `name.ext`

Если Вы хотите записать все результаты в файл, используйте команды writeto(filename), appendto(filename) или writedata, writestat, writebytes, writeline. Можно печатать результаты в файл или на экран. Для этого служат команды print, lprint и printf - печать по формату. Как обычно, при этом надо файл открыть и закрыть open, close (и это не единственные команды данного типа).

Перед тем, как записывать данные, Вы их можете конвертировать convert к необходимому Вам виду.

Для удобства, можно непосредственно переписать все в формате следующих языков: Си, Фортран и LaTeX (например, смотри fortran[procedure]).

Если Вы хотите использовать Maple для анализа и графичекой интерпретации числовой информации, то Вам потребуется считывать данные из других файлов. Для этих целей служит набор команд read, readline, readdata, readstat, readbytes, fscanf, parse.

 

Дифференцирование

Численное дифференцирование и интегрирование были одними из первых приложений для вычислительных машин. Формальное дифференцирование было…   1. (a+b)'=a'+b' - дифференцирование суммы,

Пример 1 ( команды op - nop).

> v := f(x,y,z);

> nops(v);

> op(0,v);

> op(2,v);

Более сложный пример

> w := f(g(a,b),h(c,d));

> op(1,op(2,w));

> op([2,1],w);

> op([-1,-1],w);

Таким образом можно выделять более сложные части выражений.

> s := series(sin(x),x=2,6);

> op(0,s);

В последнем примере мы разложили функцию sin(x) в окрестности точки x=2 с точностью O( x^6 ).

Далее нам надо научиться определять тип переменных и выражений. Для этого используется логическая команда type(e,t) где e - выражение, а t - имя типа выражения. В ответе получаем либо "правда", либо "ложь". Типов выражений очень много и из простых типов можно составлять составные типы. Заметим, что команда whattype(e), которая должна выдавать тип выражения значительно уступает команде type по своим возможностям. Рассмотрим несколько примеров.

Пример 2 ( типы выражений и переменных).

> type( 2, integer );

> type( a + b, `+` );

> type( a * b, `+` );

> type( a and b, `and` );

Это простые типы, рассмотрим составные

> type(x^(-2),name^integer);

> type(x^(-2),name^posint);

> type(x^(-2),algebraic^integer);

> type(x+y^(1/2)+1,`&+`(name,radical,integer));

> type(a*b*c,`&*`(algebraic,algebraic,algebraic));

> type(exp(x),exp(name));

> type([x,1],[name,integer]);

Так как type булевская команда, то изучим сразу же условный оператор if вида

if условие a then выполняемое выражение A

elif условие b then выполняемое выражение B

else выполняемое выражение C

Эта конструкция дает возможность в зависимости от условий a и b выполнять выражения A, B или C, в качестве которых может выступать любая последовательность Maple-команд.

Пример 3 (условный оператор).

> a := 3; b := 5;

> if (a > b) then a else b fi;

Более сложная конструкция

> 5*(Pi + `if`(a > b,a,b));

Теперь можно написать программу (процедуру) дифференцирования полиномов. Процедуры в Maple начинаются со слова proc и заканчиваются словом end. Текст процедуры может находиться в любом месте программы. После загрузки процедуры в рабочую память ее вызов осуществляется по имени. По умолчанию возвращаемым значением является значение последнего оператора из тела процедуры.

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

Пример 4 (процедура дифференцирования полиномов).

> df:=proc(p:algebraic,x:name) local u,v;

> if type(p,numeric) then 0

> elif type(p,name) then

> if p=x then 1 else 0 fi

> elif type(p,`+`) then map (df,p,x)

> elif type(p,`*`) then

> u:=op(1,p); v:=p/u;

> df(u,x)*v+df(v,x)*u

> elif type(p,anything^integer) then

> u:=op(1,p); v:=op(2,p);

> v*df(u,x)*u^(v-1)

> else ERROR(`Ошибка при дифференцировании полинома`,p)

> fi

> end:

Разберем структуру процедуры.

В первой строке мы определяем имя процедуры, типы входных данных p и x и вводим две внутренних переменных u,v (это можно сделать и по умолчанию).

Во второй строке задано правило: производная от числа (тип numeric) есть ноль.

В третьей строке задано правило: производная от переменной (тип name) есть dx / dx =1 или dy / dx=0.

В четвертой строке задано правило 1 о дифференцировании суммы (тип `+`). Для дифференцирования слагаемых применяется таже процедура df, к которой мы обращаемся реккурсивно, используя команду map (данная команда позволяет применить процедуру df ко всем слагаемым сразу).

В пятой строке задано правило 2 о дифференцировании произведения (тип `*`). Для дифференцирования множителей, которым присваиваются имена u и v, применяется процедура df . (в отличие от предыдущей строки мы вынуждены делать это явно)

В шестой строке задано правило дифференцирования степени переменной (тип anything^integer), при этом мы так же явно выделяем части выражения.

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

Теперь можно продифференцировать что нибудь

> g:=y^5+x*y^4+z*y^3;

Ø df(g,y);

 

Встроенные процедуры дифференцирования

 

Для дифференцирования выражения e по переменным x, y и т.д. используют следующие две команды в среде Maple

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

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

implicitdiff - позволяет дифференцировать функции, заданные уравнением.

Пример 5 (дифференцирование ).

> Diff(sin(x),x);

> diff(sin(x),x);

> Diff(sin(x),x$3);

> value(");

В последнем примере мы задали порядок дифференцирования.

Если функция не задана явно, то

> diff(f(x),x);

> diff(f(x,y),x,y);

Аналогично вычисляются и дифференциалы

> D(sin);

> D(ln);

> D(f);

> D(f)(0); # Производная от f вычисляется в точке 0

> D(D(f));

> (D@@2)(f); # Дифференциал старшего порядка как композиция простых дифференциалов

 

> D(f@g); # Дифференциал от композиции двух функций

Эта комманда позволяет дифференцировать и составные выражения. Например, предположим, что a -это число

> assume(a,constant);

> D(2*sin(a)*f);

Дифференциал можно преобразовать в производную и обратно

> f := D(y)(x) - a*D(z)(x);

> convert(f, diff, x);

> f := diff(y(x), x$2);

> convert(f, D);

Рассмотрим уравнение, которое определяет x(y) или y(x)

> f := x^2+y^3=1

Продифференцируем y по x или x по y

> implicitdiff(f,y,x);

> implicitdiff(f,x,y);

> implicitdiff(f,y,z);

> implicitdiff(f,y(x),x);

> implicitdiff(f,y,x,x);

 

Определение собственных функций

 

Необходимо отличать выражение вида f:=x^n+y с четко определенным значением от отображения (функционала) вида переменные -> результат, которое является символом. Внутреннее представление данного отображения эквивалентно написанию процедуры вида proc( переменные ) option operator, arrow; результат end

Рассмотрим, на примерах, различия между этими понятиями

Пример 7 (выражения).

> restart:

> f:=x^3+у^4+z;

с подстановкой и дифференцированием вида

> subs(x=1,y=5,z=-1,f);

> diff(f,x);

> Diff(f,y); value(");

Пример 8 (отображения).

> restart:

> F := (x -> sin(x));

> F(t);

> g:=(x)->x^2+y^4+z;

с подстановкой и дифференцированием вида

> g(1);

> D(g);

> D(g)(3);

Для случая многих переменных это так же несложно

> f := (x,y) -> exp(x*y);

> f(1,1);

> D[1](f);

> D[2](f);

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

Пример 9 ( команда map ).

> restart:

> map(f, x + y*z);

> map(f, y*z);

> map(f, {a,b,c});

Зададим какое-нибудь отображение

> f:=x-> x^5+1;

> L:=[1,-2,x,y,9];

> map(f,L);

Более сложное использование данных команд

> restart:

> map2( map, f, g(a+b, h(c)+d) );

Выражение можно всегда переопределить как функционал командой unapply. Фактически, в Maple даже дифференциал определён таким образом D(f) = unapply(diff(f(x), x), x). Напомним, что дифференциал преобразуется к производной и обратно командой convert.

Пример 10 (выражения и отображения).

> restart:

> q := x^2 + y^3 + 1;

> f := unapply(q,x);

> f(2);

> g := unapply(q,x,y);

Определим процедуру по правилу

> f := proc(x) local t1,t2;

> t1 := x^2;

> t2 := sin(x);

> 3*t1*t2+2*x*t1-x*t2

> end:

Вычислим производную от f по аргументу x

> D(f);

Проверим вычисление производной

> D(f)(x) - diff(f(x),x);

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

Пример 11 (композиция функций).

> sin@cos)(x);

> (sin@arcsin)(x);

> sin@arcsin;

> simplify(");

> sin@@0;

> sin@@1;

> (sin@@2)(x);

> (D@@2)(ln);

Обратные функции строяться аналогично

> sin@@(-1);

> ln@@(-3);

> LambertW@@(-1);

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

> readlib(invfunc);

> invfunc[sin](1);

> Invfunc[sin](1);

> Invfunc[exp](x);

 

Интегрирование

 

Встроенные команды интегрирования

 

В стандартной (загруженной по умолчанию) библиотеке находяться процедуры Int (expr, options ) и int ( expr,options ), т.е. символ и значение. Синтаксис и опции можно найти в справочнике int.

Пример 1 (определенные и неопределенные интегралы).

> f:=sin(x):

> g:=Int(f,x);

> value(g);

> int(f,x);

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

> f:=x*exp(x):

> g:=Int(f,x=0..1);

> value(g);

> int(f,x=0..1);

Рассмотрим более сложные интегралы

> f:=sin(x^3):

> g:=int(f,x=0..Pi);

> h:=evalf(g);

или

> g:=Int(x/(x^3-x^2+1),x);

> value(g);

здесь сумма берется по %1 - корням полинома в скобках.

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

> restart: readlib(branches):

> branches(ln);

Рассмотрим интегралы с параметрами

> f:=exp(-a*x)*ln(x)*sqrt(x);

> int(f,x=0..infinity);

Как видим, этот интеграл неопределен при всех значениях параметра. Сделаем дополнительные предположения

> assume(a<0): int(f,x=0..infinity);

Сравним с

> assume(a>0): int(f,x=0..infinity);

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

> answer := int( 1/sqrt( sin(x) ), x=0..Pi/2 );

> radnormal(answer);

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

> int(exp(x^3), x );

> series(", x=0);

В общем случае синтаксис для численного интегрирования имеет вид

evalf ( Int ( f, x = a..b , digits , flag ) ),

где digits- точность вычисления, и flag- код численного метода, см. int[numerical]

> int( exp(v-v^2/2)/(1+1/2*exp(v)), v = -infinity..infinity );

> evalf(", 20);

Здесь digits равно 20. Другой пример - интегрирование гамма функции с использованием алгоритма Ньютона-Котеса:

> evalf(Int(1/GAMMA(x), x = 0..2, 10, _NCrule));

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

> int(1/x^3, x=-1..2, 'CauchyPrincipalValue');

> int( 1/(x+a)^2, x=0..2, 'continuous' );

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

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

Пример 2 (интегрирование по частям и другие методы) .

> int(x*ln(x),x);

> int(x*sin(x^2),x);

> Int(x^2/(sqrt(1-x^2))^(3/2),x):

> value(");

Тем не менее, для обучения, мы можем использовать подобные команды явно. Эти команды содержатся в пакете student

Пример 3 (интегрирование с пакетом student).

Для начала мы очистим рабочую память и загрузим данный пакет.

> restart:

> with(student);

При загрузке любого пакета Maple выдает список всех загружаемых команд.

Замены переменных:

> f:=Int(sqrt(1-x^2),x=a..b);

> g:=changevar(x=sin(u),f,u);

Здесь мы вводим новую независимую переменную интегрирования u, связанную со старой переменной уравнением x=sin(u) (пределы интегрирования изменились автоматически!) Посмотрим на результат

> value(g);

В двойных интегралах интегралах это позволяет, например, перейти к полярным координатам:

> changevar({x=r*cos(t),y=r*sin(t)}, Doubleint(1,x,y),[t,r] );

Интегрирование по частям:

напомним, что правило интегрирования по частям записывается следующим образом

> f:=Int (u,v)=u*v-Int(v,u);

Синтаксис данной команды intparts(f,u)

> a:=Int(x^2*exp(x),x);

Проинтегрируем по частям

> b:=intparts(a,x^2);

проинтегрируем по частям второй раз

> c:=intparts(b,2*x);

и получим результат

> d:=value(c);

Другие полезные команды для интегрирования из данного пакета

> integrand(Int(h(x),x));

и

> Doubleint(h(x,y),x,y);

> Tripleint(h,x=1..n,y=2..4,z=w..u);

Кроме этого, в пакете student реализовано несколько численных методов:

leftbox, leftsum , rightbox, rightsum, middlebox, middlesum, simpson, trapezoid,

Синтаксис для всех команд одинаков, рассмотрим только один пример

Пример 4 (численное интегрирование).

> restart: with(student):

> f:=x^5*ln(x);

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

> ex:=evalf(int(f,x=1..3));

> s:=evalf(simpson(f,x=1..3,16));

> t:=evalf(trapezoid(f,x=1..3,16));

> ls:=evalf(leftsum(f,x=1..3,16));

Покажем это на рисунке

> leftbox(f,x=1..3,16,color=red,shading=BLUE);

Аналогично и для других команд

> rs:=evalf(rightsum(f,x=1..3,16));

> rightbox(f,x=1..3,16,color=red,shading=BLUE);

и

> ms:=evalf(middletsum(f,x=1..3,16)));

> middlebox(f,x=1..3,16,color=red,shading=BLUE);

 

Двойные и тройные интегралы в Maple

Задача 1. Найти площадь ограниченную параболой x=2y^2 и линией x=y+3. Решение 1. Нарисуем эту область

Линейная алгебра

 

В Maple реализованы специальные возможности для работы с таким классическим математическим курсом как линейная алгебра. Основные команды собраны в пакетах linalg и student.

 

Основные операции над матрицами

 

Пример 1 (создание матриц и векторов).

Заметим сразу, что матрицы и вектора по сути своей это переменные типа массив и список. Основное отличие в том, что добавлены операции сложения и умножения. В силу этого, при загрузке пакета linalg система печатает предупреждение о переопределении ряда операций. Итак, разные определения матриц

> restart: with(linalg):

> A:=matrix([[5,w],[f(x),6]]);

> B:=matrix(2,2,[1,2,3,4]);

> f:=(i,j)->x^(a*i+b*j);

> C:=matrix(2,2,f);

> dC:=map(diff,C,x);

Частично заданные матрицы

> A:=matrix(2,2,[x,y]);

В этом примере A[2,1] означает неопределенность данного элемента матрицы в данный момент

> B:=matrix([col(A,1..2)]);

Некоторые матрицы специального вида

> A:=diag(a,b,c,d);

> B:=array(1..4,1..4,identity): eval(B);

> B:= array(symmetric, 1..3,1..3, [ [0,x,y], [x,0,z] ] ):

> eval(B);

В этом примере знак вопроса означает неопределенность элемента матрицы. Тем не менее можно работать с этой матрицей. Например

> B[1,2];

> B[3,3];

Различные определения векторов

> a:=vector([5,4,3,2,1]);

> b:=vector(4,0);

> c:=vector(4);

> d:=

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

Пример 2 (структура матриц и векторов).

Размеры матриц определяются таким образом

> restart: with(linalg):

> A:= matrix(3,4);

> rowdim(A);

> coldim(A);

Строки и столбцы матриц можно

> A:= matrix(3,3,[1,2,3,4,5,6,7,8,9]);

выделять

> row(A,2);

> col(A,2..3);

удалять

> B:=delrows(A, 2..3);

> C:=delcols(A, 1..1);

добавлять (команда addrow(A, r1, r2, m) возвращает матрицу B в которой строка r2 заменена на строку m*row(A,r1) + row(A,r2)):

> B:=addrow(A,1,2,10);

> C:=addcol(A,1,2,-x);

умножать

> B:=mulrow(A, 2, 2);

> C:=mulcol(A, 2, x);

переставлять

> A:= array( [[1,2,x],[3,4,y]] );

> swaprow(A, 1, 2);

> swapcol(A, 2, 3);

Матрицы можно соединять, выделять из них подматрицы и т.д.

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

Пример 3 (операции сложения и умножения).

Для сложения или умножения матриц и векторов используют многоцелевую команду

evalm. Например, зададим матрицы и вектор

> restart: with(linalg):

> A:= array( [[1,2],[3,4]] );

> B:= array( [[0,1],[1,0]] );

> c:= array( [4,5] );

и посмотрим на синтаксис этих операций

> evalm(A+B);

> evalm(A&*B);

> evalm(A&*c);

Так как опреция умножения над полем метриц некомутативна, то для этой операции предусмотрены и другие команды

> multiply(B,A);

> multiply(B,c);

а для векторов еще одна операция

> innerprod(c,B);

Умножить матрицу (вектор) на скаляр позволяет операция

> A:= array( [[1,2],[3,4]] );

> B:=scalarmul(A, x);

Для векторов добавлены еще две операции обычного и векторного произведения

> u:= vector( [1,x,y] );

> v:= vector( [z,1,1] );

> dotprod(u, v);

> crossprod(u, v);

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

Пример 4 (всторенные операции с матрицами).

Определим матрицу

> restart: with(linalg):

> A := matrix(3,3, [1,2,3,x,y,z,a,b,c]);

Ее определитель, ранг и след равны

> det(A);

> rank(A);

> trace(A);

Сопряженная, транспонированная и обратная к ней равны

> B:=adj(A); # или adjoint

> C:=transpose(A);

> F:=inverse(A); # или evalm(1/A)

Можно найти эрмитову транспонированную, и некоторые другие матрицы, мы не будем на этом останавливаться.

 

Собственные числа и вектора

 

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

Пример 6 (собственные числа и вектора).

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

> restart:with(linalg):

> A:= matrix([[1,2,3],[2,3,4],[4,5,6]]);

По определению, собственные числа матрицы A являются корнями характеристического полинома det(A-lambda*I) по переменной lambda. Найдем этот полином

> cp:= det(A-lambda);

Корни кубического полинома легко найти аналитически

> solve(cp,lambda);

Можно найти эти значения непосредственно из матрицы

> e:= eigenvals(A);

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

> B:= map(evalf,A);

> eigenvals(B);

Как видим, из-за погрешностей округления нулевое собственное значение перестало быть нулем. Мораль: система Maple (Matemetica) не предназначена для численных расчетов.

Найдем теперь собственные вектора матрицы. По определению это решения уравнения A x = lambda x, т.е. данные вектора определяют пространство вырождения матрицы A - lambda I.

> nullspace(e[1]-A);

> nullspace(e[2]-A);

> nullspace(e[3]-A);

Естественно, что существует возможность определить собственные числа и вектора одновременно

> e := eigenvects(A,radical);

Ответ представляется списком, состоящим зи списков. Для выделения вложенных элементов используют общие правила

> e1:= e[1][1]; v1 := e[1][3][1];

> evalm((e1 - A) &* v1 );

Аналогично можно работать с матрицами, определенными аналитически, т.е. не числовыми. Например

> T:= toeplitz( [a,b,c] );

> eigenvals(T,radical);

> e:= eigenvects(T,radical);

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

> A:= matrix(

> [[-a1/a2, 1/a2, 0, 1/(R*a2)],

> [1, 0, 0, 0],

> [-q1*a1/a2, q1/a2, 0, a2 + q1/(a2*R)],

> [q2, 0, 1, a1]]);

>

Характеристический полином четвертого порядка невырожден

> cp:= det(lambda-A);

т.е. не факторизуется на множители

> factor(cp);

Все корни подобных полиномов Maple представляет как единое выражение.

> solve(cp,lambda);

Для собственных векторов мы также получим одно выражение

> eigenvects(A);

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

Рассмотрим теперь пример, в котором характеристический полином факторизуется

> B:= matrix(6,6,

> [0,0,0,0,0,a,

> 0,1,0,0,0,-b,

> 0,0,0,-a,b,0,

> 0,0,-c,0,0,0,

> 0,0,d,0,0,0,

> c,-d,0,2,0,0] );

>

> cp:= charpoly(B,lambda);

> f:= factor(cp);

Как видно lambda=0 является собственным значением. Построим характеристическую матрицу C=lambda I -B при lambda=0

> C:= charmat(B,0);

и найдем соответствующий собственный вектор.

> nullspace(C);

Аналогично поступим и со следующими двумя собственными значениями. Например, для + sqrt(ac+bd) получим

> C:= charmat(B, sqrt(a*c+b*d));

> nullspace(C);

Теперь перейдем к кубическому полиному. Присвоим корням этого полинома имя beta

> alias( beta=RootOf(op(3,f),lambda) );

и найдем соответствующие вектора

> C := charmat(B,beta);

> nullspace(C);

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

> eigenvects(B);

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

Рассмотрим теперь матрицы с вырожденными собственными значениями

> A:= matrix(4,4,[0,1,0,0,-u^2,2*u,0,0,-u*v,v,u,0,-u*t,t,0,u]);

>

> e:= eigenvects(A);

В ответе мы получили четыре совпадающих собственных значения и базис из трех собственных векторов. Это означает, что два вектора совпадают.

Проверим наш ответ. Соберем из векторов матрицу

> X:= augment(e[3][1], e[3][2], e[3][3] );

и подставим ее в наше уравнение

> evalm((u-A) &* X)

 

Приведение матриц

 

Практически все алгоритмы приведения матриц к различным специальным формам можно найти в Maple. Ограничимся несколькими замечаниями.

Пример 7 (приведение матриц).

Зададим матрицу

> restart: with(linalg):

> A:=matrix(3,3,[x,y,z,0,9,8,7,6,5]);

Применим алгоритм гауссова исключения

> gausselim(A);

алгоритм гауссова исключения без деления

> ffgausselim(A);

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

Приведение матрицы к треугольному виду при помощи алгоритмя Гаусса-Жордана

> A:= array( [[4,-6,1,0],[-6,12,0,1],[-2,6,1,1]] );

> gaussjord(A, 'r');

Эрмитова часть матрицы, зависящей от x, выделяется командой

> H:= inverse(hilbert(2,x));

> hermite(H,x);

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

> B:=array( [[0,0,0,1,0],[0,x,0,0,0],[0,0,y,y,0],[0,x,0,1,0]] );

> rowspace(B, 'd');

> d;

> colspace(B, 'd');

> d;

> rowspan(B);

> colspan(B);

Алгоритм разложения Холецкого

> S:= matrix(3,3, [1,2,3,0,1,1,0,0,4]);

> A:= evalm(transpose(S)&*S);

> R := cholesky(A);

LU разложение матриц

> A:= matrix([[1,-2,3,1],[2,k,6,6],[-1,3,k-3,0]]);

> x:= LUdecomp(A,L='l',U='u',U1='u1',R='r',P='p',det='d',rank='ran');

с побочными результатами

> ran;

> evalm(l);

> evalm(x);

и QR разложение

> A:= matrix(3, 3, [1, 2, 3, 0, 0, 1, 2, 3, 4]):

> linalg[QRdecomp](A, Q='q', rank='r');

 

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

 

Если системы уравнений заданы в матричной форме, удобнее использовать пакет linalg.

Пример 8 (решение систем уравнений).

Команда linsolve(A, B) находит вектор (матрицу) X который удовлетворяет уравнению A X = B.

Отметим так же команду leastsqrs(A, b), которая позволяет получить приближение к решению данного уравнения по методу наименьших квадратов, т.е. минимизируя норму вектора (A x - b, 2).

> restart: with(linalg):

> A:= matrix([[1,2],[1,3]]);

> b:= vector([1,-2]);

> linsolve(A, b);

> B:= matrix( [[1,1],[-2,1]] ):

> linsolve(A, B);

> A:= matrix([[5,7],[0,0]]):

> b:= vector([3,0]):

> linsolve(A, b, 'r');

> r;

В последнем примере мы вычислили так же ранг матрицы A.

> A:= array([[1,-1,1],[1,1,-2],[2,0,-1]]);

> b:= vector([1,2,4]);

> leastsqrs(A,b);

> leastsqrs(A,b,'optimize');

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

 

Контрольные вопросы:

 

1. Знать и уметь пользоваться основными командами Maple приведенными выше

2. Самостоятельно рассмотреть такие темы как: «Решение уравнений» и «Решение дифференциальных уравнений».

3. Выделить список основных команд с которыми вы познакомились выполняя задание 2. Уметь ими пользоваться.

 

Задания:

 

1. Получить у преподавателя сложную функцию F(G(x,y),z ) )

2. Продиффиренцировать ее (найти производные всех порядков)

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

4. Получить матрицу А , (i,j=1..4) и столбец свободных членов B (i=1..4)

5. Из полученных матриц составить систему линейных уравнений вида A*X=B, и решить ее.

6. Для выполнения заданий 1..5 использовать приложение Maple.

 

СПИСОК ЛИТЕРАТУРЫ

1. Фигурнов В. Э. – IBM PC для пользователя. Краткий курс. – М.: Инфра - М,, 1998. – 480с.:ил.

2. Борланд Р. Знакомство с Windows 98. – М.: Microsoft Press Русская редакция, 1997, 376с.

3. Леоньтьев Ю. – Самоучитель Word 2000. – СПб: Издательство «Питер», 2000. – 313с.:ил.

4. Леоньтьев Ю. – Самоучитель Excel 2000. - СПб: Издательство «Питер», 2000. – 265с.:ил.

5. Давенпорт Дж. – Компьютерная алгебра. Символьные и алгебраические вычисления. – М.: Мир, 1996. – 354с.:ил.

6. Очков В. Ф. – Mathcad 8 Pro для студентов и инженеров. – М.: Аст-пресс, 1998, 270с.:ил.

7. Сворт Б. – Современные системы оптического распознавания текстов в использовании. – СПб: Издательство «Питер», 2000. – 420с.: ил.

8. Шикин Е.В. – Электронный офис – средство обработки документов. – М.: Инфорком-Пресс, 1999. – 520с.

 

 

ОГЛАВЛЕНИЕ

 

 

Л/р №1 «Стандартные программы Windows»…………………………… … .3

Л/р №2 «Текстовый редактор Microsoft Word и табличный

процессор Microsoft Excel»………………………………………………….. 11

Л/р №3 «Графический редактор Adobe Photoshop 4.0»……………………. 23

Л/р №4 «Математический пакет Mathcad 8 Pro»…………………………… 33

Л/р №5 «Программа сканирования и распознования текстов FineReader»…43

Л/р №6 «Автоматизированная система лингвистического перевода

PROMT 99»……………………………………………………………………..57

Л/р №7 «Символьные вычисления с помощью программы Maple V»………67