Записи с меткой «выполняются»

Функция полного упрощения FullSimplify

Функция полного упрощения FullSimplify
Функция FullSimplify, область применения которой в Mathematica 8 заметно расширена, обладает заметно большими возможностями, чем функция Simplify. В частности, она обеспечивает упрощение выражений, содержащих специальные математические функции:
Simplify [Gamma [х] *х* (х+1) * (х+2) * (х+n) ]
х(1+х) (2 + х) (n+x) Garrma[x]
FullSimplify [Gamma [х] *х* (х+1) * (х+2) * (х+n) ]
(п+ х) Garrma[3 + х]
Simplify[Tan[x] , ComplexityFunction-> (Count[{#l}, _Tan, \ [Infinity]]*;)]
Tan[x]
FullSimplify [Tan [x] , ComplexityFunction -> (Count[{#l}, _Tan,
\ [Infinity]] &)]
Как видно из этих примеров, функция FullSimplify обеспечивает упрощение даже в том случае, когда функция Simplify пасует. Неплохо упрощаются тригонометрические функции, особенно при использовании опции Complexity-Function, подсказывающей путь упрощения.
В то же время нельзя не отметить, что теоретический фундамент упрощения выражений находится лишь в начале своего возведения, так что не стоит удивляться, если отдельные выражения не будут упрощаться — даже в том случае, когда это в принципе возможно. Более того, с позиций истинного математика функции Simplify и FullSimplify делают не совсем понятно что. Тем не менее, часто эти функции позволяют получить вполне приемлемую, хотя вовсе не единственную и не самую простую форму упрощаемого выражения.
Раскрытие и расширение выражений — функции класса Expand
Расширение, или раскрытие, выражений — еще одна типовая операция компьютерной алгебры. далее…

Функции компьютерной алгебры

Функции компьютерной алгебры
 
Системы компьютерной алгебры имеют несколько характерных для них функций, выполняющих достаточно сложные преобразования выражений. Эти функции имеют вполне установившиеся названия (Simplify, Expand, Collect, Factor и т. д.) и встречаются практически во всех системах символьной математики. Настало время детально познакомиться с ними, что и делается в данном разделе.
Упрощение выражений — функция Simplify
Упрощение математических выражений — одна из самых важных задач символьной математики. Частенько невероятно сложное математическое выражение, пугающее новичков своим грозным видом, является просто нулем или единицей либо сводится к простому выражению после ряда вполне заурядных (хотя, порою, и довольно сложных) преобразований. Качество выполнения операции упрощения во многом определяется мощью ядра математической системы, поскольку зависит от числа заложенных в него функций и правил преобразования выражений.
С точки зрения простоты выражений они делятся на недостаточно простые и достаточно простые выражения. Недостаточно простые выражения таят в себе всевозможные «излишества»: сокращаемые общие члены, лишние переменные и функции, полиномы со степенями, допускающими понижение, и т. д. Это затрудняет качественный анализ выражений и может даже приводить к неоднозначным и даже неверным результатам.
Mathematica всегда старается упростить то или иное выражение, если для этого не требуется каких-либо особых средств. Например, сложные выражения, содержащие элементарные или специальные функции, превращаются в более простые выражения — в том лишь смысле, что они состоят из более простых функций. далее…

Другие манипуляции с выражениями

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

  • Append [expr, elem] — возвращает ехрг с дополнением elem;
  • AppendTo [s, elem] — добавляет elem к значению s и присваивает s новое значение;
  • Apply [f, expr, levelspec] — возвращает ехрг, замещая заголовки в тех частях ехрг, которые указаны спецификацией уровня levelspec;
  • Cancel [expr] — возвращает ехрг с сокращением общих множителей числителя и знаменателя;
  • Cases [expr, pattern, levelspec] — возвращает список всех частей выражения expr на уровнях, указанных спецификацией levelspec, которые соответствуют шаблону pattern;
  • Chop [expr] — присваивает значение 0 тем приближенным вещественным числам в выражении expr, абсолютные величины которых меньше 10 -10 ;
  • Chop [expr, tol ] — присваивает значение 0 тем приближенным вещественным числам в выражении expr, абсолютные величины которых меньше tol;
  • Replace [expr, rules] — возвращает expr с подстановкой, заданной правилом или списком правил rules;
  • ReplaceAll — используется в виде expr /. rules и возвращает expr с подстановками, заданными правилом или списком правил rules;
  • ReplacePart [expr, new, n] — возвращает выражение, в котором п-я часть expr заменена на new;
  • ReplacePart [expr, new, {i, j,…}] — заменяет на new часть в позиции {i, j,…};
  • ReplacePart [expr, new, {{il, jl,…}, {i2, j 2 ,…},…}] — заменяет на new части в нескольких позициях выражения;
  • ReplaceRepeated — применяется в виде expr //. rules и неоднократно выполняет замещения до тех пор, пока expr не перестанет изменяться.

Действие этих функций достаточно очевидно и поясняется следующими примерами.

Ввод (In)

Вывод (Out)

Append [a + с, b]

a+ b+ с

х = {а, b, с}

{a, b, c}

AppendTo [ х , 15 ]

{a, b, c, 15}

x

{a, b, c, 15}

Apply[f, а А 2 + b ^ 2, 2]

f[a, 2] +f[b, 2]

Cancel [(z-1) ^ 2/ (z — 1) ]

-1 + Z

Cases[{a, 3.5, 2, 5, "HELLO"}, _Integer]

{2, 5}

Exp[N[-лI]]

-1. — 1. 22461 x 10 -16 I

Chop[%]

-1.

Ехр[N[-лI]]

-1. — 1. 22461 x10 16 I

Chop[%, 1*10^-10]

-1.

Replace[s ^ 2, s ^ 2 -> a]

a

s^2 /. s -> a

a 2

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

  • AtomQ [expr] — возвращает True, если выражение ехрг не может быть разложено на подвыражения и является атомарным, и возвращает False в противном случае;
  • FreeQ [expr, form] — возвращает значение True, если в выражении ехрr отсутствует подвыражение, совпадающее с form, в противном случае возвращает False;
  • FreeQ[expr, form, levelspec] — тестирует только части выражения на уровнях, указанных levelspec.

Следующие примеры показывают действие этих функций.

далее…

Графическая функция ListPlot3D

Графическая функция ListPlot3D
Часто трехмерная поверхность задается массивом своих высот (аппликат). Для построения графика в этом случае используется графическая функция ListPlotSD:

  • ListPlot3D [array] — строит трехмерный график поверхности, представленной массивом значений высот;
  • ListPlot3D [array, shades] — строит график так, что каждый элемент поверхности штрихуется (затеняется) согласно спецификации shades.

Plot Joined — дополнительная опция для ListPlot, указывающая, следует ли соединять линией точки, нанесенные на график.
Пример применения функции ListPlotSD показан на. График построен по данным таблицы tS, формирующей значения аппликат поверхности, которая описывается функцией cos(xy).
Применяя описанные в этом разделе графические функции вместе с их — опциями, директивами и примитивами, можно строить огромное число типов трехмерных графиков. Однако многие такие графики могут создаваться с помощью дополнительных функций, входящих в пакет расширения Graphics. Он описан в уроке 13.
Командой Options [ListPlot3D] можно вывести полный список опций данной функции, чтобы использовать их для модификации графиков, которые строит эта функция.
Специальные средства визуализации и звука
 
Системы Mathematica содержат множество средств, повышающих наглядность представления (визуализации) результатов вычислений — как простых, так и сложных. К ним можно отнести особые виды трехмерной графики, используемые при параметрическом задании поверхностей, в том числе пересекающихся в пространстве, а также графики объемных фигур — полиэдров. Возможности визуализации расширяются при использовании импортируемых рисунков и вставки графических объектов. К специфическим приемам визуализации относится и применение звуковых объектов, способных генерировать и воспроизводить звуки при наличии в компьютере звуковой карты. далее…

Примитивы двумерной графики

Примитивы двумерной графики
Примитивами двумерной графики называют дополнительные указания, вводимые в функцию Graphics [primitives, options], которая позволяет выводить различные примитивные фигуры без задания математических выражений, описывающих эти фигуры. Примитивы могут выполнять и иные действия. Они заметно увеличивают число типов графиков, которые способна строить система Mathematica. Имеются примитивы для построения окружностей, эллипсов, кругов, овалов, линий и полигонов, прямоугольников и текстов. Полное описание примитивов дано в разделе приложения, посвященном данному уроку. Примитивы задаются подобно графическим функциям, например, Circle[{x, у}, r] строит окружность с радиусом г и центром в точке {х, у}.
Рисунок показывает применение функции Graphics для построения одновременно трех графических объектов: отрезка прямой, заданного координатами его концевых точек, окружности с центром (0, 0) и радиусом 0.8 и текстовой надписи «Привет!». Каждый объект задан своим примитивом. Из-за искажения масштаба дисплеем компьютера окружность выглядит как эллипс.
На другом рисунке представлено построение пятиугольника, заданного координатами его вершин. далее…