Обзор систем компьютерной математики
В настоящее время системы компьютерной математики (СКМ) можно разделить на семь основных классов: системы для численных расчётов, табличные процессоры, матричные системы, системы для статистических расчётов, системы для специальных расчётов, системы для аналитических расчётов (компьютерной алгебры), универсальные системы.
Каждая система компьютерной математики имеет нюансы в своей архитектуре или структуре. Тем не менее можно прийти к выводу, что у современных универсальных СКМ следующая типовая структура:
Центральное место занимает ядро системы — коды множества заранее откомпилированных функций и процедур, обеспечивающих достаточно представительный набор встроенных функций и операторов системы.
Интерфейс даёт пользователю возможность обращаться к ядру со своими запросами и получать результат решения на экране дисплея. Интерфейс современных СКМ основан на средствах популярных операционных систем Windows 95/98/NT и обеспечивает присущие им удобства работы.
Функции и процедуры, включённые в ядро, выполняются предельно быстро. Поэтому объём ядра ограничивают, но к нему добавляют библиотеки более редких процедур и функций.
Кардинальное расширение возможностей систем и их адаптация к решаемым конкретными пользователями задачам достигаются за счёт пакетов расширения систем. Эти пакеты (нередко и библиотеки) пишутся на собственном языке программирования той или иной СКМ, что делает возможным их подготовку обычными пользователями.
Ядро, библиотеки, пакеты расширения и справочная система современных СКМ аккумулируют знания в области математики, накопленные за тысячелетия её развития.
Возрастающий интерес к алгебраическим алгоритмам возник в результате осознания центральной роли алгоритмов в информатике. Их легко описать на формальном и строгом языке и с их помощью обеспечить решение задач, давно известных и изучавшихся на протяжении веков. В то время как традиционная алгебра имеет дело с конструктивными методами, компьютерная алгебра интересуется ещё и эффективностью, реализацией, а также аппаратными и программными аспектами таких алгоритмов. Оказалось, что при принятии решения об эффективности и определении производительности алгебраических методов требуются многие другие средства, например, теория рекурсивных функций, математическая логика, анализ и комбинаторика.
В начальный период применения вычислительных машин в символьной алгебре быстро стало очевидным, что непосредственные методы из учебников часто оказывались весьма неэффективными. Вместо обращения к методам численной аппроксимации компьютерная алгебра систематически изучает источники неэффективности и ведёт поиск иных алгебраических методов для улучшения или даже замены таких алгоритмов.
1.2.2 Задачи систем компьютерной алгебры
Первые ЭВМ изначально создавались для того, чтобы проводить сложные расчёты, на которые человек тратил очень много времени. Следующим шагом развития ЭВМ стали ПК. Эти машины могут проводить вычисления разной сложности (от самых простых до самых сложных).Такая их особенность использовалось в разных областях знаний. Развитие компьютерных математических систем привело к появлению отдельного класса программ, который получил названия Системы Компьютерной Алгебры (CAS).
Главная задача CAS — это обработка математических выражений в символьной форме. Символьные операции обычно включают в себя: вычисление символьных либо числовых значений для выражений, преобразование, изменение формы выражений, нахождение производной одной или нескольких переменных, решение линейных и нелинейных уравнений, решение дифференциальных уравнений, вычисление пределов, вычисление определённых и неопределённых интегралов, работа с множествами, вычисления и работа с матрицами. В дополнение к перечисленному, большинство CAS поддерживают разнообразные численные операции: расчёт значений выражений при определённых значениях переменных, построение графиков на плоскости и в пространстве.
Большинство CAS включают в себя высокоуровневый язык программирования, который позволяет реализовать свои собственные алгоритмы. Наука которая изучает алгоритмы, применяемые в CAS, называется компьютерной алгеброй.
1.2.3 Место компьютерной алгебры в информатике
Компьютерная алгебра есть та часть информатики, которая занимается разработкой, анализом, реализацией и применением алгебраических алгоритмов. От других алгоритмов алгебраические алгоритмы отличаются наличием простых формальных описаний, существованием доказательств правильности и асимптотических границ времени выполнения, которые можно получить на основе хорошо развитой математической теории. Кроме того, алгебраические объекты можно точно представить в памяти вычислительной машины, благодаря чему алгебраические преобразования могут быть выполнены без потери точности и значимости. Обычно алгебраические алгоритмы реализуются в программных системах, допускающих ввод и вывод информации в символьных алгебраических обозначениях.
Благодаря всему этому специалисты, работающие в информатике, математике и в прикладных областях, проявляют всё больший интерес к компьютерной алгебре. Опираясь на противопоставление, можно сказать, что компьютерная алгебра рассматривает такие объекты, которые имеют слишком вычислительный характер, чтобы встречаться в книгах по алгебре, и слишком алгебраический характер, чтобы быть представленными в учебниках по информатике. Многие алгоритмы компьютерной алгебры можно рассматривать как получисленные (в смысле Кнута).
Системы компьютерной математики (СКА) творят чудеса. Развитие математических пакетов достигло того уровня, когда невольно закрадывается мысль — а зачем нам теперь нужны классические методики преподавания математики (или физики, или механики) в школе или вузе, если большую часть «грязной» работы по преобразованию выражений можно переложить на плечи машины. А если нельзя, или трудно получить аналитическое решение задачи, то почему бы не «прощелкать» её численно в одном из популярных пакетов. Так что, давайте ограничим уровень понимания учеников составлением исходной системы уравнений, а решать учить не будем — всё легко и непринужденно сделает за них компьютер.
Не буду скрывать, что катализатором для написания данного поста послужила статья про задачу о двух старушках, любительницах пеших прогулок, взятая из книги В. И. Арнольда. В связи с этим, появилась мысль рассмотреть простую математическую задачу, решение которой показывает, что возможности СКА часто упираются в, довольно закономерный, верхний предел, и для получения компактного решения, пригодного для дальнейшего анализа, необходимо таки немного напрячь извилины.
Когда, в не слишком далеком 2003 году я начал работать над кандидатской диссертацией, я столкнулся с необходимостью решать систему тригонометрических уравнений вида
Параметры a, b, A, B — положительны. На корни уравнения накладываются условия
Где мы сталкиваемся с такими системами? При расчете кинематики замкнутых четырехзвенников, например. Такой замкнутый четырехзвенник был в моей работе, почти такой же попался мне около года назад, когда я взялся сделать «шабашку» (помог одному профессору в его работе).
Тогда, в 2003-м я только познакомился с системой Maple и был в восторге от её возможностей, естественно я поручил эту систему ей. И меня ждал «облом»… Посмотрим, какое решение дают Maple 18 и Mathematica 10 для этой задачи сегодня.
2. Решение задачи в СКА «в лоб»
В моем любимом Maple задаем систему уравнений
и пробуем решить
и получаем…
Эта бяка не влезла в онлайн-LaTeX, поэтому пришлось привести скриншот. Такой результат получается из-за того, что постановка задачи слишком общая. Необходимо указать системе, какое решение нас интересует, воспользовавшись условием (3)
В этом случае результат выглядит получше
Ещё раз попрошу прощения у читателя за корявый скриншот и замечу, что мы получили два решения системы (1) — (3) и нам теперь ещё предстоит разобраться, какой ответ соответствует механическому смыслу задачи (он там есть, да), а учитывая, что за a, b, A и B могут таится довольно значительные выражения (не зависящие, естественно, от x и y) нам должно стать довольно грустно в этот момент.
У системы Mathematica 10 с этими уравнениями лучше дела обстоят в том смысле, что она получает конечную форму общего решения, часть которого на скрине
Если систему дополнить условием (3), то Вольфрам говорит нам, что Solve[. ] не имеет метода решения для такого случая (был бы признателен читателю за подсказку по этому вопросу, ибо считаю что сам я вопрос изучил не полностью, а пока продолжу повествование).
Кроме того, обе СКА выдают в решении богомерзкий арктангенс, который не всегда удобен по разным причинам, о которых говорить не буду — в каждом случае причины свои.
Когда мой покойный ныне «шеф» увидел эти решения в 2003 году, он задумался и изрек, что «эти крокодилы надо причесать», чем заставил меня погрузится в дальнейшие раздумья. И я снова вооружился листком бумаги и карандашом…
Чтобы получить достаточно компактное решение, надо преобразовать систему (1) — (3) к линейной относительно неизвестных. Для этого надо воспользоваться школьными знаниями по тригонометрии.
Итак, возведем уравнения (1) и (2) в квадрат и сложим, перенеся всё, что не зависит от x и y в правую часть уравнения
используя формулу «косинус суммы», получим новое уравнение
Теперь, разрешая его относительно суммы неизвестных приходим к линейному уравнению
Линейное уравнение оно и в Африке линейное — найдя одну неизвестную, получим и другую. Займемся другой неизвестной, исключив x из одного их уравнений. Так как у нас есть условие (3), то очевидно, что
а это дает нам возможность воспользоваться основным тригонометрическим тождеством без неоднозначности «плюс-минус»
Косинус икса берем из первого уравнения
получая, таким образом для синуса икс
Чтобы не пыхтеть над бумагой, поручим всё это Maple
имея на выходе уравнение
Уравнение (7) надо возвести в квадрат и провести некоторые преобразования
придя к уравнению вида
А теперь выполним, известный многим, «финт ушами»
то есть, делим обе части уравнения на и сворачиваем левую часть по формуле косинуса суммы, справедливо полагая что
Получаем новое уравнение,
которое успешно решаем относительно y
Как видим, игрек вышел довольно компактным. Возвращаемся к уравнению (5) и находим икс
А теперь сравнив полученное с вышеприведенными «крокодилами», сделаем
Системы компьютерной алгебры — незаменимый помощник современного ученого, упрощающий ему жизнь и избавляющий от необходимости зарываться в «простыни» решений на бумаге, избавляющий от досадных ошибок/описок, освобождающий мозг для продуктивной деятельности. Но, их успешное применение неотделимо от общей математической культуры и знания элементарных вещей. Иначе, решение лежащее на почти поверхности имеет шанс не увидеть свет никогда.
CAS были созданы в 70-ые годы и развивались в рамках проектов, связанных с искусственным интеллектом. Поэтому сфера применения их достаточно большая и разнообразная. Первыми популярными системами были Reduce, Derive, Macsyma. Некоторые из них до сих пор находятся в продаже. Свободно распространяемая версия Macsyma — Maxima. На данный момент лидерами продаж являются Maple и Mathematica. Оба этих пакета активно используются в математических, инженерных и других научных исследованиях. Существует множество коммерческих систем компьютерной алгебры: Maple, Mathematica, MathCad и другие. Свободно распространяемые программы: Axiom, Eigenmath, Maxima, Yacas и др.
Успех в современном использовании САВ лежит в интеграции всех машинных возможностей (символьный и численный интерфейс , встроенная графика , мультипликация , базы и банки данных и т. д.). Все современные коммерческие системы компьютерной математики (Mathematica, Maple, MatLab и Reduce) обладают стандартным набором возможностей:
- имеется входной макроязык для общения пользователя с системой, включающий специализированный набор функций для решения математических задач;
- имеются основные символьные (математические) объекты: полиномы, ряды, рациональные функции, выражения общего вида, векторы, матрицы;
- системы используют целые, рациональные, вещественные, комплексные числа;
- имеется несколько дополняющих друг друга режимов работы: редактирование, диагностика, диалог, протокол работы;
- присутствует связь со средствами разработки программ: возможны подстановки, вычисления значений, генерация программ, использование стандартного математического обеспечения (библиотек);
- используются интерфейсы для связи с офисными средствами, базами данных, графическими программными средствами и т.п.;
Хотя между системами имеются различия, синтаксис ассоциированных языков не является проблемой, затрудняющей использование систем компьютерной математики. Синтаксис языков систем в значительной степени аналогичен синтаксису Паскаля. Обязательно имеются операторы присваивания, понятие вызывающей функции (команды), более или менее богатый выбор управляющих структур ( и т. д.), возможности для определения процедур,. . . — в общем, весь арсенал классических языков программирования, необходимый для записи алгоритмов.
Системы компьютерной алгебры можно условно разделить на системы общего назначения и специализированные. К системам общего назначения относятся Macsyma, Reduce, Mathematica, Maple, Axiom и другие системы.
В 80-е годы прошлого века широкое распространение в бывшем СССР получила система Reduce. Она первоначально предназначалась для решения физических задач, разрабатывалась на наиболее широко распространённых компьютерах, разработка до определённого времени не носила коммерческого характера (система до конца 80- х годов распространялась бесплатно). Открытый характер системы позволил привлечь к её разработке огромную армию пользователей, обогативших систему многочисленными пакетами для решения отдельных задач.
Macsyma, так же, как и Reduce, является "старой" системой. В отличие от системы Reduce, Macsyma разрабатывалась с самого начала как коммерческий продукт. В ней более тщательно проработаны алгоритмические вопросы, её эффективность существенно выше, но меньшее её распространение можно объяснить двумя обстоятельствами: длительное время она была реализована только на малом числе "экзотических" компьютеров и распространялась только на коммерческой основе.
Система Maple, созданная в 80-х годах прошлого века в Канаде, с самого начала была задумана как система для персональных компьютеров, учитывающая их особенности. Она развивается "вширь и вглубь", даже её ядро переписывалось с одного алгоритмического языка на другой. В настоящее время Maple широко применяется во многих странах (в частности, в США и Канаде) в учебном процессе, а также в различных областях научных и технических исследований.
В конце прошлого века получила широкое распространение и сейчас быстро развивается система Mathematica. Её успех в значительной степени объясняется её широкими графическими возможностями а также электронной документацией, которую можно рассматривать как электронную библиотеку, посвящённую различным разделам математики и информатики.
Особое место среди систем компьютерной алгебры занимает система Axiom. В отличие от остальных систем, представляющих собой пакеты программ, общение с которыми осуществляется на некотором алголо-подобном языке, система Axiom, развившаяся из системы Scratchpad-II, имеет дело с более привычными для математиков объектами. В частности, в ней ключевым понятием является понятие категории: здесь можно рассматривать, например, категории множеств, полугрупп, дифференциальных колец, левых модулей и т. д. Система имеет высокую степень универсальности, требует для своей реализации мощных компьютеров, распространяется за достаточно высокую плату, поэтому используется только в ограниченном числе мощных университетских и научных центров.
Специализированные системы отличаются более высокой эффективностью, но область их применения ограничена. К специализированным системам относятся такие системы, как Caley и GAP — специализированные системы для вычислений в теории групп, Macauley, CoCoA, Singular — системы разной степени универсальности для вычислений в кольце многочленов, Schoonship — специализированная система для вычислений в физике высоких энергий, muMath и её правонаследница Derive — системы, широко используемые в учебном процессе (в частности, в Австрии лицензия на установку системы Derive приобретена для всех средних школ), и многие другие.
Maple — это система для аналитического и численного решения математических задач, возникающих как в математике, так и в прикладных науках. Развитая система команд , удобный интерфейс и широкие возможности позволяют эффективно применять Maple для решения проблем математического моделирования.
Maple состоит из ядра, процедур, написанных на языке С и в высшей степени оптимизированных, библиотеки, написанной на Maple- языке, и интерфейса. Ядро выполняет большинство базисных операций. Библиотека содержит множество команд и процедур, выполняемых в режиме интерпретации. Программируя собственные процедуры, пользователь может пополнять ими стандартный набор и, таким образом, расширять возможности Maple. Работа в Maple проходит в режиме сессии ( session ). Пользователь вводит предложения (команды, выражения, процедуры и др.), которые воспринимаются Maple. По умолчанию результаты сеанса сохраняются в файле с расширением 'ms'. Если задан режим сохранения состояния сеанса ( session ), то в файле с расширением 'm' будут записаны текущие назначения.
Mathematica — это широко используемая CAS изначально разработана Стивеном Вольфрандом, которая продаётся компанией Wolfram Research. Он начал работу над Mathematica в 1986 году, а выпустил в 1988 году. Mathematica не только CAS, но и мощный язык программирования . Этот язык программирования реализован на основе объектно ориентированного варианта языка С, расширяемого при помощи так называемых библиотек кода. Эти библиотеки представляют собой текстовые файлы , написанные на языке Mathematica.
Архитектура Mathematica представлена ядром и пользовательским интерфейсом. Ядро программы отвечает за интерпретацию программ, написанных на языке Mathematica, и непосредственно занимается вычислениями. Пользовательские интерфейсы предназначены для выводов результатов в форме, понятной пользователю. По мнению компании-разработчика, большая часть пользователей Mathematica — это технические профессионалы. Также Mathematica широко используется в образовании. Сейчас несколько тысяч курсов на основе этого продукта читаются во многих учебных заведениях, начиная от средней школы и заканчивая аспирантурой. Mathematica используется в самых крупных университетах по всему миру и в группе компаний Fortune 500, а также во всех 15 основных министерствах правительства США.
MathCad — это CAS очень похожая на Mathematica. Распространяется компанией Mathsoft. MathCad ориентирован на поддержку концепций рабочего листа. Уравнения и выражения отображаются на рабочем листе так, как они выглядели бы на какой-нибудь презентации, а не так, как выглядят на языке программирования. Некоторые задачи, которые выполняет программа : решение дифференциальных уравнений, графики на плоскости и в пространстве, символьное исчисление, операции с векторами и матрицами, символьное решение систем уравнений, подбор графиков, набор статистических функций и вероятностных распределений. По мнению разработчиков MathCad, главный конкурент этого пакета — электронные таблицы.
Многие пользователи используют электронные таблицы или языки программирования для выполнения вычислений. Но ни те, ни другие не справляются с задачей, когда дело доходит до обработки полученных данных. Электронные таблицы разработаны для бухгалтерских, а не для инженерных расчётов! Для последних они не слишком удобны: уравнения спрятаны в ячейках, сложно вставить комментарии. Это делает работу довольно затруднительной, а устранять ошибки и разбираться в чьих-то вычислениях вообще сложно. Электронные таблицы трудны для понимания и повторного использования другими пользователями.
Yacas — это Open Source CAS общего назначения. Базируется на собственном языке программирования, главной целью при разработке этого языка была простота реализации новых алгоритмов. Этот язык очень похож на LISP, поддерживает ввод и вывод в обычном текстовом режиме как интерактивно, так и в режиме пакетного выражения.
Maxima является потомком DOE Macsyma, которая начала своё существование в конце 1960 года в MIT. Macsyma первая создала систему компьютерной алгебры, она проложила путь для таких программ как Maple и Mathematica. Главный вариант Maxima разрабатывался Вильямом Шелтером с 1982 по 2001 год. В 1998 году он получил разрешение на реализацию открытого кода на GPL . Благодаря его умению Maxima сумела выжить и сохранить свой оригинальный код в рабочем состоянии. Вскоре Вильям передал Maxima группе пользователей и разработчиков, которые сохранили её в рабочем состоянии. На сегодняшний день пакет достаточно активно развивается, и во многих отношениях не уступает таким развитым системам компьютерной математики, как Maple или Mathematica.
На рынке современных математических систем в настоящее время присутствует целый ряд крупных фирм: Macsyma, Inc., Waterloo Maple Software, Inc., Wolfram Research, Inc., MathWorks, Inc., MathSoft, Inc., SciFace GmbH и др.
Mathematica
Mathematica имеет мощный графический пакет, с помощью которого можно строить графики очень сложных функций одной и двух переменных.
Macsyma
MuPAD
MuPAD является программным пакетом компьютерной алгебры, предназначенным для решения математических задач различного уровня сложности. Основные качественные отличия MuPAD — невысокие требования к ресурсам PC, наличие собственного ядра символьной математики, способность к развитию самим пользователем и мощные средства визуализации решения математических задач.
S-PLUS
S-PLUS представляет собой интерактивную компьютерную среду, обеспечивающую полнофункциональный графический анализ данных и включающую оригинальный объектно-ориентированный язык. Гибкая система S-PLUS может использоваться для исследовательского анализа данных, статистического анализа и математических вычислений, а также для удобного графического представления анализируемых данных.
2 – Программирование в MathCAD: операторы, примеры использования
Рассмотрим все команды из панели программирования Mathcad.
1. Add Line – добавить строку в текущую позицию программы. При вводе данной команды появляется или расширяется на одну строку вертикальная линия, объединяющая отдельные операторы в блок с одним входом и одним выходом, который выполняется как один оператор. Для того чтобы начать ввод подпрограммы, необходимо набрать имя программы и в скобках через запятую перечислить формальные параметры подпрограммы, ввести нужное количество раз команду Add Line. Программа выводит последнюю переменную, обрабатываемую программой перед выходом. Вместо имени подпрограммы можно указать имя переменной, куда необходимо вывести результат работы подпрограммы.
2. Оператор присваивания. В Mathcad имеются два оператора присваивания: для глобальных переменных (обозначается двумя символами «:=») и для локальных переменных «←». Глобальные переменные доступны в любом месте программы после объявления данной переменной, а локальные – только в текущем блоке.
Напишем программу для решения квадратного уравнения ax2+bx+c=0. В программе при помощи операторов глобального присваивания задаются значения глобальных переменных a, b и c. Для сравнения введем еще локальную переменную k и присвоим ей значение 4. Далее вычисляем значение корней квадратного уравнения при помощи программы, состоящей из одного блока операторов. В программе применяются три оператора локального присваивания и возвращается значения вектора x, состоящего из двух чисел. После выполнения программы выводим значение всех переменных, используемых в программе. При этом значение всех локальных переменных D, x и k, заданных вне блока, программа не видит, поэтому вместо знака = выводится оператор глобального присваивания «:=». В этом случае значение переменной не выводится, а вместо него отображается красный прямоугольный маркер.
3. Оператор if предназначен для организации разветвляющихся вычислительных процессов.
Общий вид простого оператора if: D if L, L – логическое выражение; D – оператор, выполняемый в случае, если условие L принимает значение «истина».
Оператор работает следующим образом:
• вычисляется логическое условие L;
• если L – истина, то выполняется оператор D, в ином случае он не выполняется;
• выполнение программы продолжается со следующего, после if, оператора.
Для формирования сложных условий можно использовать панель инструментов Boolean, содержатся знаки логического равенства, неравенства и логических операций. В частности, «V» означает логическое «или», а «Λ» — логическое «и».
Таким образом, чтобы сформулировать условие, что переменная х находится в диапазоне (–3;4), необходимо написать: x > –3 Λ x < 4.
В сложных подпрограммах часто используется блочный оператор if:
Где D1, …, Dn – действия, выполняемые в случае, если логическое условие L истинно.
4. Оператор otherwise применяется в случае, когда используется условие с двумя вариантами действия, то есть, если условие истинно, нужно выполнить одно действие (или действия), а если ложно, то другое.
Общий вид такого оператора следующий:
Рассмотрим пример программы, использующей операторы if и otherwise. В данном случае проверяются условия, при которых логарифм не существует (x
5. Оператор for используется для создания циклических вычислительных процессов.
Где i – счетчик цикла. Переменная, которая меняется в диапазоне от k1 до kn. Диапазон изменения счетчика цикла вводится с помощью ранжированной переменной или с помощью вектора. D –действия, которые выполняются в цикле (тело цикла).
Приведём пример, в котором диапазон изменения счетчика цикла n задан с помощью вектора. Вектор вставляется с помощью панели инструментов Matrix.
Данная программа вычисляет сумму
6. Оператор цикла while используется тогда, когда цикл должен выполняться не заданное количество раз, а до тех пор, пока не будет выполнено определенное в цикле условие.
где L – условие, при выполнении которого выполняется цикл (условие цикла). В данном случае, действие D (тело цикла) выполняется до тех пор, пока условие L истинно. Если логическое условие L изначально ложно, то операторы, составляющие тело цикла, не будут выполняться, а управление передается на оператор следующий за оператором while.
Приведем пример программы, использующей цикл while.
В данной программе с указанной точностью (tol) вычисляется сумма s=1+1/2+1/3+1/4+1/5+1/6+1/7…
7. Оператор break обеспечивает экстренный выход из цикла. Программа при этом продолжает выполнять следующую после цикла строку. Данный оператор часто применяется, чтобы избежать «зацикливания» программы.
В качестве примера применения оператора break рассмотрим задачу вычисления суммы числового ряда
В приведенной ниже программе, суммирование членов ряда прекращается, когда достигается точность, указанная параметром tol или если число итераций цикла превышает 10000.
В данном случае оператор break исключается возможность зацикливания программы для расходящегося ряда.
8. Оператор continue возвращает управление в первую строку цикла. Как только этот оператор встречается в программе, выполнение текущей итерации прерывается и выполняется переход на следующую итерацию цикла. Выход из цикла не производится.
Данный оператор, как и оператор break, не содержит параметров.
Пример: Найти сумму N первых членов ряда: В программе, при помощи оператора continue, происходит обход слагаемого в котором знаменатель дроби равен нулю.
9. Оператор return прерывает выполнение программы. В качестве результата работы программы возвращается значение, указанное в позиции для ввода, после оператора return.
Пример. Подсчитать с указанной точностью tol сумму ряда:
10. Оператор on error отвечает за обработку ошибок. При выборе данного оператора в программу вставляется заготовка следующего вида: Общий вид оператора on error: D1 on error D2.
Решение задачи ЛП в MathCAD
В Mathcad к классу задач линейного программирования относятся задачи, в которых требуется оптимизировать (определить максимум или минимум) целевую функцию вида:
при следующих ограничениях:
Одним из способов решение подобных задач в Mathcad является использование блока given с функциями minimize и maximize .
Функции Minimize и Maximize, которые могут быть использованы как сами по себе, так и совместно с блоком given. Аргументы функций: имя функции, экстремум которой ищется, и список ее аргументов.
- Minimize (y,x) - для отыскания значения х, соответствующего локальному минимуму функции у(х);
- Maximize (y,x) - для отыскания значения х, соответствующего локальному максимуму функции у(х).
Так как у(х) может иметь несколько локальных экстремумов, а функции Minimize (y,x) и Maximize (y,x) позволяет найти только одно значение, то в Mathcad дополнительно задается начальное приближение переменной х. В результате находится значение экстремума функции y(x), ближайшее к заданному начальному приближению переменной х.
В качестве примера рассмотрим задачу планирования производства красок.
Суть задачи в следующем. Фабрика выпускает два типа красок - I и Е. Для производства красок используются два компонента - А и В. Максимальные суточные запасы этих компонентов: компонент А - 6 тонн; компонент В – 8 тонн. Расходы компонентов А и В на производство 1 тонны краски следующие: для краски I - A/B= 2/1; для краски Е - А/В = 1/2. Суточный спрос на краску I никогда не превышает спрос на краску Е более, чем на 1 тонну. Спрос на краску I никогда не превышает 2 тонн в сутки. Оптовые цены на краску I – 2000 рублей за тонну, а на краску Е – 3000 рублей за тонну. Определить максимальный доход фабрики от продажи краски. Обозначив суточный объем выпуска краски I за x1, а суточный объем выпуска краски Е за х2, получаем экономико - математическую модель задачи, вид которой представлен ниже:
Решение задачи ЛП в MatLAB
В среде MATLAB задачи линейного программирования решаются с помощью функции linprog.
Функция linprog решает задачу линейного программирования в форме:
Основными входными данными linprog являются: вектор коэффициентов целевой функции f, матрица ограничений-неравенств A, вектор правых частей ограничений-неравенств b, матрица ограничений-равенств Aeq, вектор правых частей ограничений-равенств beq, вектор lb, ограничивающий план x снизу, вектор ub, ограничивающий план x сверху. На выходе функция linprog даёт оптимальный план x задачи (1) и экстремальное значение целевой функции fval.
Пример: Решим в MATLAB задачу линейного программирования:
Соответствующая программа (m-файл)∗ выглядит так:
clc % удаляются все текущие переменные из памяти MATLAB, закрываются все графические окна, очищается экран консоли
Системы компьютерной математики(СКМ) позволяют провести исследование проблемы, анализ данных, моделирование, тестирование, проверку существования решения, оптимизацию, документирование и оформление результатов, они позволяют сосредоточить основное внимание на существе проблемы, оставляя в стороне технику классической математики, детали вычислительных методов и алгоритмических процедур, нюансы языков программирования и команд операционной системы.
Наиболее известными на сегодняшний день среди универсальных СКМ и СММявляются Matlab, MathCad, Maple, Mathematica и Derive.
MATLAB выполняет множество компьютерных задач для поддержки научных инженерных работ. Основные функции: быстрые и точные численные алгоритмы; графика для анализа и отображения данных; интерактивный язык и среда программирования; инструменты для настройки пользовательских интерфейсов.
Mathcad – это многофункциональная интерактивная вычислительная система, позволяющая, благодаря встроенным алгритмам, решать аналитически и численно большое количество математических задач не прибегая к программированию.
Maple — это мощная вычислительная система, предназначенная для выполнения сложных вычислительных проектов как аналитическими так и численными методами. Maple умеет выполнять сложные алгебраические преобразования и упрощения над полем комплексных чисел, находить конечные и бесконечные суммы, произведения, пределы и интегралы, решать в символьном виде и численно алгебраические системы уравнений и неравенств, находить все корни многочленов, решать аналитически и численно системы обыкновенных дифференциальных уравнений и уравнений в частных производных
Mathematica является одной из универсальных математических систем, которая дает возможность решать большое количество весьма сложных задач не вдаваясь в сложности программирования. С ее помощью легко осуществляются численные и символьные вычисления.
Система программирования – это совокупность языка программирования и инструментальной программной оболочки, представляющая интегрированную среду, которая может содержать:
– компилятор, который преобразует исходный модуль программы на алгоритмическом – языке объектный код;
– редактор, который позволяет создавать тексты программ и файлы данных;
– средства компоновки, отладки и загрузки программы;
– библиотеку стандартных программ;
Современные системы программирования:
1) Microsoft Visual Basic — средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки.
2) Turbo Pascal — это среда разработки для языка программирования Паскаль.
Базовыми компонентами система программирования Турбо Паскаль являются компилятор языка Паскаль, средства создания и редактирования исходных текстов программ и средства их отладки.
3) C++ Builder - программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке C++.
4) Язык Java является языком программирования, созданным для создания многоплатформных приложений для страниц "всемирной паутины" сети Internet.
33. Назначение и состав универсальной интегрированной системы компьютерной математики MATLAB (MathCad).
СистемаMatLABявляется интерактивной системой для выполнения инженерных и научных расчетов, ориентированной на работу с массивами данных. Особенностью системы является то, что она содержит развитую встроенную матричную и комплексную арифметику. Система поддерживает выполнение операций с векторами, матрицами и массивами данных, решение нелинейных уравнений и задач оптимизации, интегрирование в квадратурах, решение дифференциальных и разностных уравнений, построение различных видов графиков, трехмерных поверхностей и линий уровня.
Типичное использование MatLab – это:
• анализ данных, исследования и визуализация
• научная и инженерная графика
• разработка приложений, создание графического интерфейса
Mathcad –это многофункциональная интерактивная вычислительная система, позволяющая, благодаря встроенным алгоритмам, решать аналитически и численно большое количество математических задач не прибегая к программированию.
В состав MathCAD входят несколько взаимосвязанных компонентов:
· мощный текстовый редактор, позволяющий вводить, редактировать и форматировать как текст, так и математические выражения;
· вычислительный процессор, умеющий проводить расчеты по введенным формулам, используя встроенные численные методы;
· символьный процессор, позволяющий проводить аналитические вычисления и являющийся, фактически, системой искусственного интеллекта;
· огромное хранилище справочной информации, математической и инженерной, оформленной в качестве интерактивной электронной книги.
Сочетание этих компонентов создает удобную вычислительную среду для разнообразных математических расчетов и, одновременно, документирования результатов работы.
34. Интерфейс системы, основные объекты и форматы чисел MATLAB (MathCad)
Система MatLab обладает развитым многофункциональным интерфейсом, под управлением которого можно выполнить инженерные расчеты, их графическую интерпретацию, получить результаты в численном и аналитическом виде, создать пользовательскую среду с кнопками управления процессом вычислений и т. д.
Система имеет несколько режимов работы, каждый из которых поддерживается собственным диалоговым окном: 1.Командный режим – командное окно (MatLab Command Window) 2.Программный режим – окно создания и редактирования М-файлов 3.Графический режим – окно редактирования графиков (Figure) 4.Режим создания графического интерфейса– окно графического интерфейса(GUI) – предназначен для разработки удобного пользовательского интерфейса с применением кнопок, меню, окон ввода и вывода информации 5. Режим помощи – окно помощи (Help) 6. Режим демонстрации – окно демонстрационных примеров (Demos)
При работе в любом из перечисленных режимов могут быть использованы дополнительные информационные окна:
- Окно рабочей области (Workspace Browser) – предназначено для просмотра и редактирования содержимого рабочей области памяти, в нем указывается имя переменной (массива или структуры), ее размерность и тип.
- Окно быстрого доступа (Launch Pad) – позволяет организовать быстрый доступ к компонентам системы MatLab (элементам справки, демонстрационным примерам, специализированным пакетам и т.д.)
- Окно доступа к файлам и папкам (Current Directory) – предназначено для вызова нужного файла в текущем каталоге, изменения текущего каталога.
- Окно стека команд (Command History) – содержит перечень команд, введенных пользователем в командном режиме за текущий и предыдущий сеансы работы с системой.
- Окно редактора массивов (Array Editor) – служит для редактирования содержимого массива.
В MatLab, как и в других системах, используются все буквы латинского алфавита от А до Z и арабские цифры от 0 до 9, большие и малые буквы это разные переменные и константы. Кроме букв латинского алфавита используются все специальные символы клавиатуры компьютера.
Под интерфейсом пользователя подразумевается совокупность средств графической оболочки MathCAD, обеспечивающих лёгкое управление системой. Пользовательский интерфейс создан так, что пользователь, имеющий элементарные навыки работы с Windows-приложениями, может начать работу с MathCAD.
Главное меню системы.Вторая строка окна системы - главное меню. File (Файл) – работа с файлами, сетью интернет и электронной почтой. Edit (Правка) – редактирование документов; View (Обзор) – изменение средств обзора ( Toolbars (Панели)- отображать или скрывать панели инструментов Standart (Стандартная), Formatting (Форматирования), Math(Математика), Status bar(Строка состояния), Preferences (Настройки) и др.). Insert (Вставка) –позволяют помещать в MathCAD -документ графики, функции, гиперссылки, компоненты и встраивать объекты. Format (Формат) – изменение формата объектов.
Math (Математика) – управление процессом вычислений; в MathCAD существует два режима вычислений: автоматический и ручной. Symbolics (Символика) – выбор операций символьного процессора; Window (Окно)– управление окнами системы; Help (?) – работа со справочной базой данных о системе; Стандартная панель инструментов (Toolbox)содержит несколько групп кнопок управления с пиктограммами, каждая из которых дублирует одну из важнейших операций главного меню.
Числа в Mathcad хранятся как числа двойной точности с плавающей точкой, которые при вводе и выводе могут отображаться в формате целых чисел, десятичной дроби, смешанной дроби, экспоненциальной форме (2.6*103).
35. Операторы и функции в MATLAB (MathCad).
Основные операторы: арифметические, логические и операторы отношений.
Число арифметических операторов в MATLAB достаточно большое и включает в себя следующие арифметические операции:
– сложение (М1+М2); – вычитание (М1-М2); – умножение (М1*М2); – возведение в степень (М1^); – возведение матрицы в степень (М1Ù х); – поэлементное возведение массива в степень (М1.Ù х); – деление матриц слева направо (М1 / М2); – деление матриц справа налево (М1 \ М2).
Операторы отношения служат для сравнения двух величин, векторов или матриц, все операторы отношения имеют две сравниваемые величины и записываются в следующем виде:
– равно (х = = у); – не равно (х ~ = у); – меньше (х < у); – больше (х >у); – меньше или равно (х < = у); – больше или равно (х >= у).
Логические операторы служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов:
– логическое И (and (a, b)); – логическое ИЛИ (or (a, b)); – логическое НЕ (not (a, b));
– исключающее ИЛИ (xor (a, b)); – верно, если все элементы вектора равны нулю (any (a));
– верно, если все элементы вектора не равны нулю (all (a)).
Функции в общем случае имеют список аргументов (параметров), заключенный в круглые скобки. Имена встроенных (стандартных) функций записываются строчными буквами.
Ø Тригонометрические и гиперболические функции
Ø Экспоненциальные функции
Ø Функции для работы с комплексными числами
Ø Функции округления и вычисления остатка от деления
Ø Функции для работы со значениями даты и времени
Ø Функции для выполнения побитовых операции (Например, для представления целых положительных чисел в двоичном виде служит функция dec2bin).
Функции. Встроенные функции.(заранее введенные разработчиком системы) Вставляются с помощью команды Insert/Function или набором с клавиатуры. Параметры встроенных функций заключаются в скобки.(м.б. константа, переменная или математическое выражение, которые должны быть определены ранее)
Функции пользователя (созданные пользователем). Для задания функции пользователя нужно ввести имя, а затем в круглых скобках через запятую ввести все аргументы. Далее ввести оператор присваивания, выражение, зависящее от введенных аргументов. Переменные справа в выражении определения функции должны входить в список аргументов функции или должны быть определены ранее.
Оператор обозначает математическое действие в виде символа
.
Каждый оператор действует на одно или два числа (переменную или функцию), которые называются операндами. Если в момент вставки оператора одного или обоих операндов не хватает, то недостающие операнды будут отображены в виде местозаполнителей.
Операторы, обозначающие арифметические действия, называются арифметическими и вводятся с палитры Calculator. Операторы, которые вставляются с палитры Calculus (Вычисления), называются вычислительными операторами (дифференцирование, интегрирование, суммирование, вычисление произведения, пределы). Логические операторы – вводятся с палитры Boolean. Матричные операторы – предназначены для совершения различных действий над векторами и матрицами, вводятся с палитры Matrix. Операторы выражения – сгруппированы на панели (Evaluation) (оператор численного вывода , оператор локального присваивания , оператор глобального присваивания , оператор символьного вывода).
36. Матричные вычисления в MATLAB (MathCad).
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой.
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.
© cyberpedia.su 2017-2020 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!
Читайте также: