Математика. Контрольные, курсовые и дипломные работы от лучших авторов!

Тройной интеграл Скалярное и векторное поле Геометрический смысл производной Числовые ряды Введение в ТФКП Вычислить интеграл Задачи и примеры Изменить порядок интегрирования Физические приложения тройных интегралов

Компьютерная математика Mathematica электронный учебник Оглавление

 

Работа с объектами

 

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

Получение данных об объектах

Различные объекты системы будут более подробно описаны в дальнейшем по мере знакомства с системой. Полный список объектов, заданных в ядре системы, легко получить, используя команду ? * (ниже приведены лишь начало и конец этого списка):

?*

Abort

AbortProtect

Above

Abs

AbsoluteDashing

AbsolutePointSize

$Version

$VersionNumber

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

?U*

UnAlias Unevaluated Update

Underflow Uninstall UpperCaseQ

Underoverscript Union UpSet

UnderoverscriptBox Unique UpSetDelayed

Underscript Unprotect Upvalues

UnderscriptBox UnsameQ Using

Unequal Unset

Аналогичные возможности предоставляет функция Names ["S"], например, Names ["А*"] дает список всех ключевых слов, начинающихся с символа «А». Наконец, командой ?Name можно вывести справку по любому определению с именем Name. Например, после выполнения команды

?Abs

Abs[z] gives the absolute

value of the real or complex number z.

становится ясно, что идентификатор Abs задает функцию Abs [ z ] для вычисления абсолютного значения комплексного числа.

С помощью выражения ?Name можно проверить, является имя объекта Name уникальным или оно уже использовано в системе:

?sin

Information::notfound : Symbol sin not found.

?Sin

Sin[z] gives the sine of z.

Глава 5. Работа с файлами в MatLab

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

5.1. Функции save и load

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

save <имя файла> <имена переменных>  % сохранение данных
load <имя файла> <имена переменных>       % загрузка данных

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

function save_load
x = ones(5);
y = 5;
s = 'hello';
 
save params x y s;
x = zeros(5);
y = 0;
s = '';
 
load params x y s;
disp(x);
disp(y);
disp(s);

В данной программе сначала выполняется инициализация переменных x, y, s, затем, они сохраняются в файл params.mat, заменяются другими значениями и после загрузки отображаются на экране. При выполнении этой программы на экране будут показаны те же значения переменных, которые они принимали в самом начале. Таким образом демонстрируется работа функций save и load.

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

load params x;      % загружает только значение переменной x
load params y;      % загружает только значение переменной y
load params x s;    % загружает значения переменных x и s

 

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

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

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

Оперативная помощь по объекту

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

  • ? Name или Names [ "Name" ] — справка по заданному слову Name;
  • ?? Name — расширенная справка по заданному слову Name;
  • ?Аbс* — перечень всех определений, начинающихся с символов Abc;
  • ©ptions [name] — получение информации об опциях объекта Name.

Примеры получения оперативной справки показаны на рис. 3.5.

Рис. 3.5. Примеры получения оперативной справки

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

Многие встроенные функции защищены от модификации атрибутом Protected. К примеру, нельзя определить новую функцию Sin[x]=x A 2, причем вовсе не потому, что это определение абсурдно (далее мы покажем, что можно снять защиту и переопределить любую функцию даже самым абсурдным образом), а потому, что имя функции защищено указанием атрибута Protected (Защищенное). Позднее мы ознакомимся и с иными атрибутами — под ними подразумеваются определенные свойства объектов.

Средства диагностики и сообщения об ошибках

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

Тип::Метка%Диагностика:Сообщение

Эти сообщения появляются в отдельных неактивных ячейках. Тип указывает на тип ошибки, например, General — ошибка общего вида, Syntax — синтаксическая ошибка, Arg — ошибка задания аргумента и т. д. Метка указывает место ошибки в списке ошибок данного типа, а Диагностика указывает (увы, не всегда...) на ошибочное выражение. Сообщение обычно раскрывает суть ошибки.

Допустим, мы пытаемся вычислить значение экспоненциальной функции, указав ошибочно аргумент 2,3 с разделительной запятой вместо точки. Вот как Mathematica отреагирует на такую попытку (рис. 3.6, первый пример).

Рис. 3.6. Примеры выполнения «ошибочных» операций

Итак, ясно, что произошла ошибка задания аргумента — функция Ехр должна иметь только один аргумент, а число 2,2 система воспринимает как два аргумента, разделенные запятой. Вот еще один пример — вроде бы ошибочно заданы круглые скобки в выражении N (Ехр (2) ). Mathematica 3 в этом случае дала бы два предупреждающих сообщения:

Syntax::bktwrn : "Ехр(2)" should probably be "Ехр[2]".

Syntax::bktwrn : "N(Exp(2)l" should probably be "N[Exp(2)]".

2ExpN

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

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

Включение и выключение сообщений об ошибках

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

Для отключения сообщений об ошибках служит ключ

Off[Function::tag]

Например, отключим сообщение об ошибках у функции Ехр:

Off[Exp::argx]

Ехр[2,2]

Ехр[2,2]

Ехр[2]

Е2

N[Exp[2]]

7.38906

Для включения сообщения об ошибках используется ключ

On[Function::tag]

Например, для возобновления выдачи ошибок у функции Ехр надо исполнить команду

On[Exp::argx]

К сожалению, диагностика ошибок не способна опознать ошибки, имеющие формально правильный синтаксис. Чаще всего эти ошибки связаны с неверным описанием алгоритма вычислений. Например, если пользователь в математическом выражении вместо Sin [х] записал Cos [х], то эта грубая ошибка никак не будет распознана системой, поскольку синтаксически вызов функции Cos [х] записан безупречно. Часто пользователи путают идентификаторы переменных. Естественно, что ответственность за такие ситуации целиком лежит на пользователе — программисте.

Защита от модификации и ее отмена

Как уже отмечалось, объекты Mathematica имеют средства установки и снятия защиты от модификации. Для этого используются следующие функции-директивы:

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

Log[7]=2

Set::write : Tag Log in Log[7] is Protected.

2

Итак, здесь предпринята попытка приписать логарифму числа 7 вовсе не свойственное ему значение 2. В ответ система выдала сообщение, что символ Log имеет атрибут Protected, то есть защищен от модификации. С помощью директивы Unprotect снимем защиту:

Unprotect[Log]

{Log}

Теперь выражение Log [ 7 ] можно модифицировать:

Log[7] =2

2

и использовать его уже в новом значении:

Log[7]=2

2

Log[7]+Log[3]

2 + Log[3]

Для отмены произведенной модификации и защиты символа Log от изменений выполните следующие действия:

Log[7]=.

Protect[Log]

{Log}

Теперь можно проверить, что присваивание Log [7] =2 не действует и функция Log работает как положено, возвращая значение In (7) =1. 94591:

Log[7]

Log[7]

N[Log[7]]

1.94591

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

Подстановки

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

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

  • ехрг / . х -> value — в выражение ехрг вместо переменной х подставляется ее значение value;
  • ехрг /. {х -> xvalue,. у -> yvalue} — в выражение ехрг вместо переменных х и у подставляются их значения xvalue и yvalue.

Примеры:

l+x^3/.x->l+z

1 + (1+ z)3

х^2+2*х+3/.х->2

11

Обратите внимание на то, что в результате подстановки в первом примере вместо переменной х оказалось математическое выражение (1 + z). Второй пример иллюстрирует подстановку на место переменной х ее численного значения.

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

  • Ihs -> rhs — прямая подстановка Ihs в rhs;
  • Ihs :> rhs — отложенная подстановка (RuleDelayed), которая преобразует Ihs в rhs, вычисляя rhs не сразу, а только при использовании правила подстановки.

Ниже приведены еще два примера на использование операций подстановки:

р:=1+х^2+3*х^3

р/.х->1+у

1+ (1 + у)2+3 (1 + у)3

{f[1],f[2],f[3]}/.f[n_]->n^2

{1, 4, 9}

f[n_]:=n^2

f[4]+f[y]+f[x+y]

16+y2+(x+y)2

В первом примере подстановка произведена в математическое выражение, а во втором — в список.

Подстановки — мощный и необычайно гибкий инструмент системы Mothematica. С их помощью можно задать даже новые математические закономерности и произвольные соотношения (к примеру, можно задать абсурдное правило, что 2 + 2 = 5). Эти необычные возможности мы рассмотрим в дальнейшем.

 

 

Компьютерная математика Maple 7 электронный учебник

Работа с файлами и документами

Операции с файлами
Меню File
Создание нового документа
Открытие документа
Сохранение документа
Запись документа на диск с переименованием
Экспорт файлов.
Закрытие документа
Запись настроек программы
Выход из системы
Печать документов
Команда Print
Предварительный просмотр страниц
Установка параметров принтера
Редактирование документов
Меню Edit
Отмена последней операции
Восстановление отмененной операции
Перенос объекта в буфер обмена
Копирование объекта в буфер
Перенос и копирование объектов перетаскиванием
Копирование в буфер обмена в формате Maple-текста
Вставка из буфера обмена в документ
Вставка из буфера обмена в формате Maple-текста
Уничтожение выделенного абзаца
Выделение всех объектов
Поиск подстроки и ее замена
Включение и выключение режима ввода текста
Операции разделения и объединения объектов
Исполнение выделенных ячеек или всего документа
Удаление ячеек вывода
Операции вставки
Меню Insert.
Ввод текста
Ввод выражений в стандартной форме
Ввод выражений
Ввод математических выражений
Вставка исполняемых ячеек до и после курсора
Электронные-таблицы
Вставка электронных таблиц
Меню Spreadsheet
Работа с электронными таблицами
Вставка текстовой области
Вставка кнопки секции.
Вставка кнопки подсекции
Вставка гиперссылки
Операции форматирования
Обзор операций меню Format
Установка стилей.
Форматирование абзацев
Форматирование символов
Операция внедрения ячеек в секцию
Операция выведения ячеек из секции
Работа с объектами
Вставка объектов
Редактирование вставленного объекта

Курс лекций Сопротивление материалов