ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М.Е. ЕВСЕВЬЕВА»
Физико-математический факультет
Кафедра информатики и вычислительной техники
РЕФЕРАТ
РЕАЛИЗАЦИЯ РАЦИОНАЛЬНОЙ АРИФМЕТИКИ В СИСТЕМАХ СИМВОЛЬНОЙ МАТЕМАТИКИ
Автор работы _______________________________________Чистякова Ю. В.
Направление подготовки 44.03.05 Педагогическое образование
Профиль Математика. Информатика
Руководитель работы_______________________________Кормилицына Т. В.
Оценка__________________
Саранск 2021
Содержание
Введение 3
1 Обзор систем компьютерной алгебры 4
2 Возможности пакета MATLAB 7
3 Реализация класса Polynom 11
Заключение 16
Список использованных источников 17
Введение
Появление компьютеров изменило все сферы современной науки и общественной, и даже личной, жизни. Появилась возможность проводить сложнейшие вычислительные эксперименты, что экономит не только деньги, но и время. Последнее обстоятельство особенно важно для научных работников, педагогов и студентов. Однако в нашей стране именно в области образования применение современных компьютерных методов и систем оставляет желать лучшего. Частично это связано с объективными причинами (дороговизна оборудования, программных продуктов и т. д.), однако очень часто и с субъективными — нежеланием что-либо менять, поскольку наше образование и так «самое лучшее в мире».[1]
Глава 1
.112
1 Обзор систем компьютерной алгебры
До сих пор научные и инженерные расчеты остаются одной из важнейших, хотя, пожалуй, и не самой бросающейся в глаза сфер приложения компьютеров. За многие годы накоплены обширные библиотеки научных подпрограмм, в первую очередь, на языке FORTRAN, предназначенных для решения типовых задач (задачи линейной алгебры, интегрирование, решение дифференциальных уравнений и т. д.).[7]
В настоящее время появились хорошо работающие системы такие как Maple, Mathematica, Mathcad, Matlab, Derive и некоторые другие. Все упомянутые выше системы, так же как и большинство неупомянутых, являются весьма дружественными по отношению к пользователю. Конечно же и синтаксис языка пользователя у них различный, и библиотеки доступных функций могут меняться от нескольких сотен до тысяч, и внутренние структуры и даже используемые алгоритмы значительно отличаются друг от друга, но все они обладают общими свойствами.
Для новичка языки систем компьютерной алгебры – одни из наиболее простых для использования. Действительно, сначала ему требуется знать лишь несколько функций, которые позволят ему переписать рассматриваемую проблему в виде, очень похожем на ее математическую формулировку. Даже если переписывание выполняется неуклюже или некорректно, интерактивный режим позволяет после нескольких шагов наощупь быстро получить результаты, которые нельзя получить с помощью карандаша и бумаги. А для очень многих приложений этого достаточно.
Пакет Mathematica, по-видимому, является сегодня наиболее популярным в научных кругах, особенно среди теоретиков. Пакет предоставляет широкие возможности в проведении символических (аналитических) преобразований, однако требует значительных ресурсов компьютера.
Пакет Maple также весьма популярен в научных кругах. Пользователи характеризуют Maple как очень надежный и устойчиво работающий Пакет. Кроме аналитических преобразований пакет в состоянии решать задачи численно. Характерной особенностью пакета является то, что ряд других программных продуктов используют интегрированный символический процессор Maple.
Подобно упомянутым выше пакетам, пакет Matlab фактически представляет собой своеобразный язык программирования высокого уровня, ориентированный на решение научных задач. Характерной особенностью пакета является то, что он позволяет сохранять документы в формате языка программирования С.[9]
Пакет Mathcad популярен, пожалуй, более в инженерной, чем в научной среде. Характерной особенностью пакета является использование привычных стандартных математических обозначений, то есть документ на экране выглядит точно так же обычный математический расчет. Для использования пакета не требуется изучать какую-либо систему команд, как, например, в случае пакетов Mathematica или Maple. Простота освоения пакета, дружественный интерфейс, относительная непритязательность к возможностям компьютера явились главными причинами того, что именно этот пакет был выбран для обучения студентов численным методам.
В действительности, хотя обычно трудно предсказать время вычисления и размер результатов, знание принципов работы может дать представление о порядке их величины и при необходимости оптимизировать их. Эти оценки в действительности существенны: для большинства алгебраических вычислений результаты получаются почти моментально, и все идет отлично.[11] Но если это не так, то требуемое время и память возрастают обычно экспоненциально. Таким образом, выполнимость данных вычислений не всегда очевидна, и глупо жертвовать значительными ресурсами, когда неудачу можно предсказать заранее. Например, если требуется найти собственные значения матрицы, то для программы на яыке FORTRAN нет принципиальной разницы 100x100 или 500x500 эта матрица, так как время выполнения растет практически линейно. В Maple V.4 вычисления с матрицей 5x5 могут занимать 15 секунд, в то время как те же вычисления с матрицей 6x6 займут 15 минут.
В последнее время разработчики математических пакетов стремятся предложить продукт общего назначения. Для этого системы аналитических вычислений оснащаются развитыми средствами визуализации и насыщаются эффективными процедурами численного решения, а вычислительные пакеты дооборудуются компонентами компьютерной алгебры. В результате MatLab (фирма MathWorks Inc.) и MathCAD (фирма MathSoft Inc). получили ядро для выполнения аналитических вычислений, разработанное фирмой Maple Software Inc для пакета Maple.
В последнее время просматривается тенденция к сближению и интеграции различных пакетов. Например, последние выпуски пакетов Mathematica и Maple имеют хорошие возможности для визуального программирования; в Matlab включена библиотека аналитических преобразований Maple; Mathcad позволяет работать совместно с Matlab.[2]
2 Возможности пакета MATLAB
MATLAB - это высокопроизводительный язык для технических расчетов. Он включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Типичное использование MATLAB - это:
– математические вычисления
– создание алгоритмов
– моделирование
– анализ данных, исследования и визуализация
– научная и инженерная графика
– разработка приложений, включая создание графического интерфейса
MATLAB – это интерактивная система, в которой основным элементом данных является массив. Это позволяет решать различные задачи, связанные с техническими вычислениями, особенно в которых используются матрицы и вектора, в несколько раз быстрее, чем при написании программ с использованием "скалярных" языков программирования, таких как Си или Фортран.
В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes - это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.
Система MATLAB состоит из пяти основных частей.
Язык MATLAB. Это язык матриц и массивов высокого уровня с управлением потоками, функциями, структурами данных, вводом-выводом и особенностями объектно-ориентированного программирования.
Среда MATLAB . Это набор инструментов и приспособлений, с которыми работает пользователь или программист MATLAB. Она включает в себя средства для управления переменными в рабочем пространстве MATLAB, вводом и выводом данных, а также создания, контроля и отладки М-файлов и приложений MATLAB.
Управляемая графика. Это графическая система MATLAB, которая включает в себя команды высокого уровня для визуализации двух- и трехмерных данных, обработки изображений, анимации и иллюстрированной графики. Она также включает в себя команды низкого уровня, позволяющие полностью редактировать внешний вид графики, также как при создании Графического Пользовательского Интерфейса (GUI) для MATLAB приложений.
Библиотека математических функций. Это обширная коллекция вычислительных алгоритмов от элементарных функций, таких как сумма, синус, косинус, комплексная арифметика, до более сложных, таких как обращение матриц, нахождение собственных значений, функции Бесселя, быстрое преобразование Фурье.
Программный интерфейс. Это библиотека, которая позволяет писать программы на Си и Фортране, которые взаимодействуют с MATLAB. Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая MATLAB как вычислительный инструмент и для чтения-записи МАТ-файлов.[3]
Simulink, сопутствующая MATLAB программа, - это интерактивная система для моделирования нелинейных динамических систем. Она представляет собой среду, управляемую мышью, которая позволяет моделировать процесс путем перетаскивания блоков диаграмм на экране и их манипуляцией. Simulink работает с линейными, нелинейными, непрерывными, дискретными, многомерными системами.
Blocksets - это дополнения к Simulink, которые обеспечивают библиотеки блоков для специализированных приложений, таких как связь, обработка сигналов, энергетические системы.
Real-Time Workshop - это программа, которая позволяет генерировать С код из блоков диаграмм и запускать их на выполнение на различных системах реального времени.
Пакет MATLAB представляет собой программное средство для выполнения математических расчетов на компьютере. Математика состоит из двух частей: Ядро(Kernel) и Оболочка (Front End). Ядро представляет собой программное обеспечение, непосредственно выполняющее расчеты, которое работает одинаково на всех типах компьютеров. Оболочка обеспечивает интерфейс между ядром и пользователем.
Основные элементы MATLAB:
· Численные расчеты.
– MATLAB может производить вычисления с любой точностью. Кроме того, MATLAB может производить расчеты с использованием большого числа специальных функций.
– Позволяет вычислять интегралы, численно решать алгебраические и дифференциальные уравнения и системы уравнения.
– Может обрабатывать численные данные, производя их статический анализ, а также производить Фурье-анализ, интерполяцию и аппроксимацию данных с помощью метода наименьших квадратов.
– Может работать не только с числами, но и с матрицами, обеспечивая выполнение всех операций линейной алгебры.
· Символьные вычисления.
– MATLAB позволяет производить манипулирование алгебраическими формулами, т.е. разлагать на множители, раскрывать скобки и производить упрощение полиномов и рациональных выражений. Также позволяет находить алгебраические решения полиномиальных уравнений и систем уравнений.
– Может вычислять интегралы и производные, решать дифференциальные уравнения в символьной форме.
· Графические средства.
– MATLAB может строить двумерные и трехмерные графики функций, заданных явно или в параметрической форме, а также контурные графики и графики плотности. Аналогично можно изображать и численные данные.
– В MATLAB существует много опций, позволяющие контролировать различные аспекты графиков. Например, для трехмерных графиков можно изменять цвет, тени, освещение и яркость поверхности и т.д.
– MATLAB включает графический язык, позволяющий изображать геометрические объекты, используя стандартные фигуры: многоугольники, окружности и их дуги и т.д., а также вставлять текст в любое место двумерного или трехмерного графического объекта.
· Программирование.
– Кроме встроенных функций, MATLAB позволяет определять дополнительные функции.
– MATLAB включает в себя такой мощный элемент, как правила преобразования, которые позволяют преобразовывать символьные выражения из одной формы в другую.
– Таким образом система компьютерной алгебры MATLAB является программным средством для проведения фундаментальных и прикладных математических исследований широкого спектра проблем современного естествознания. В главе 4 решим конкретную задачу при помощи пакета MATLAB.
3 Реализация класса Polynom.
Современное объектно-ориентированное программирование основано на возможности введения новых типов данных и определения операций для них. В MATLAB классы пользователя User Classes наследуют родительский класс struct, т. е. все новые типы(классы) данных базируются на стуктурах.
Правила создания класса в MATLAB.
Рассмотрим последовательность создания класса в среде MATLAB на примере класса myclass.
· Класс – это папка-контейнер – каталог с именем …\@ myclass.
· Для работы с классом myclass текущий каталог Current Directory должен быть открыт на папке, содержащей папку класс @ myclass .
· Имя функции-конструктора класса должно совпадать с названием класса(функция myclass , описанная в M-файле myclass. m).
· Объект класса хранит свои данные в структуре, все поля которой являются скрытыми(private ).
· Функции-методы класса реализуются в M-файлах. Функция-метод – это функция, один из аргументов которой – объект данного класса. Имя М-файла – действия, реализованной функцией.
· Скрытые частные (private) функции класса myclass размещаются в папеке …\@ myclass\ pribate, не имеют в качестве входного аргумента объект класса, используются как вспомогательные функции и не оперируют непосредственно с классом.
· Базовые методы классов MATLAB:
–с lass constructor : создание объекта класса;
–double, char: конверторы;
–display: вывод содержимого объекта в командное окно, если выражение не завершается разделителем точкой с запятой;
–set и get: доступ к свойствам объекта( функция get – чтение значения свойств, а функция set – запись новых значений);
–subsref: индексная ссылка( переопределение методов для операторов a( i), a{ i}, a. field );
–subsangn: индексное присваивание( переопределение методов для операторов a( i), a{ i}, a. field );
–subindex: индексный дескриптор, т. е. использование объекта класса в качестве целочисленного индекса другого объекта( переопределение методов для x( a) );
–end: последний индекс по указанной размерности.
· Переопределение арифметический функций и операторов: функции plus, minus, mtimes…
· Команда clear classes вызывается после каждого переопределения класса, для удаления объектов класса.
· Встроенные функции MATLAB для идентификации объектов классов:
– class( p) : определение класса объекта;
– isa( p,’ myclass’) : проверка принадлежности объекта данному классу;
– isobject( p) : выявление принадлежности объекта к какому-нибудь классу MATLAB.
– methods(‘ myclass’): вывод списка методов данного класса;
– whos p : вывод подробной информации об объекте;
Пример.
Создадим класс polynom. В классе будут реализованные методы, определяющие функциональное название данного класса.
Для создание объектов класса polynom используем функцию-конструктор. Конструктор будет находится в M-файле с именем @ polynom/ polynom. m . Данный конструктор создает полином из заданного вектора коэффициентов полинома при убывающих степенях переменно х . В нашем примере мы будем использовать три типа конструктора:
· Конструктор по умолчания. Создадим шаблон объекта, обычно с пустыми полями. В отдельных случая поля инициализируются некторыми значениями.
· Конструктор копирования. Конструктор возвращает копию объекта. При этом в конструкторе будем использовать функцию isa( p,‘ polynom’) , чтобы определить: является ли входной аргумен объектом данного класса.
· Конструктор с параметрами. Конструктор создает структуру и инициализирует её поля, использую её входные данные. Затем из этой структуры конструируется сам объект класса при помощи встроенной функции class(). У этой функции есть два обязательных параметра. Первый – структура, которая будет представлять объект данные объекта, а второй – текстовая строка, содержащая имя создаваемого класса.
Рисунок 1
Для преобразования объекта данного класса к другому классу будем использовать функцию конвертор. Имя этой функции и имя её М-файла совпадают с именем класса, к которому она будет преобразовывать исходный объект.
Для преобразования объекта класса polynom обратно в вектор его коэффициентов будем использовать метод double():
Рисунок 2
Для преобразования объекта к текстовому виду используется метод char() . В нашем примере этот метод определяется в M-файле @ polynom/ char. m
Рисунок 3
Преобразование к текстовому виду используется в методе display(), который относится к базовому методу MATLAB. Этот метод вызывается всякий раз, когда в среде MATLAB введено выражение не завершенное точкой с запятой.
Рисунок 4
В примере реализованы следующие методы:
–char – преобразование полинома к текстовому виду;
–diff – вычисление производной полинома;
–display – вывод в командное окно;
–double – функция-конвертер полинома в вектор его коэффициентов;
–int – вычисление неопределенного интеграла полинома
–minus – вычитание полиномов;
–mtimes – умножение полиномов;
–plot – построение графика полинома р;
–plus – сложение полиномов;
–polynom – конструктор;
–polyval – вычисление всех корней полинома;
–subsref – операция индексной ссылки, реализующая вычиследние значений полинома в указанных точках.
Заключение
В настоящее время научное программирование претерпевает серьезную трансформацию: развиваются интегрированные среды, основанные на алгоритмических языках, и растет применение универсальных математических систем (Maple, Mathematica, MATLAB, MatCad и др.). Эти системы имеют дружественный интерфейс, реализуют множество стандартных и специальных математических операций, снабжены мощными графическими средствами и обладают собственными языками программирования.[6] Все это предоставляет широкие возможности для эффективной работы специалистов разных профилей, о чем говорит активное применение математических пакетов в научных исследованиях и в преподавании.
Математические пакеты Maple и MATLAB — интеллектуальные лидеры в своих классах и образцы, определяющие развитие компьютерной математики. Компьютерная алгебра Maple вошла составной частью в ряд современных пакетов, численный анализ от MATLAB и наборы инструментов (Toolboxes) уникальны. Сами пакеты постоянно совершенствуются, развивая аппарат и пополняя ресурсы. Пакет Maple и вычислительная среда MATLAB — мощные и хорошо организованные системы, надежные и простые в работе.
В заключение, отметим, что пользователь пакетов компьютерной математики должен иметь представление об основных численных методах. Вообще говоря, появление современных вычислительных систем значительно облегчает доступ к компьютеру непрофессионалам в области программирования, и поддерживает постоянное стремление к их усовершенствованию и освоению новых компьютерных технологий
Список использованных источников
1. Говорухин, В. В. Цибулин. Компьютер в математическом исследовании: Maple, MATLAB, LaTeX. // Учебный курс. / В. В. Говорухин. Издательство «Питер», 2001 г. 624 с.
2. Прохоров, Г. В. Система аналитических вычислений Maple / Г. В. Прохоров, М. А. Леденев, В. В. Колбеев. – М.: Петит, 1997, 200 с.
3. Дьяконов, В. П. Математическая система Maple V R3/R4/R5. / В. П. Дьяконов. М.: Солон.– 1998. – 400 с.
4. Дьяконов, В. П. Справочник по применению системы PC MATLAB. / В. П. Дьяконов. М.: Физматлит, 1993. 112 с.
5. Потемкин, В. Г. MATLAB 5 для студентов. // Справочное пособие. / В. Г. Потемкин, М: Диалог-МИФИ, 1998. – 314 с.
6. Воробьев, Е. М. Введение в систему "Математика". М: Финансы и статистика / Е. М. Воробьев, 1998. – 262 с.
7. Дьяконов, В. П. Системы символьной математики Mathematica 2 и Mathematica 3. // Справочное издание. / В. П. Дьяконов. М.: СК ПРЕСС. – 1998.– 328 c.