Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Глава 7 символьные вычисленияСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
В предыдущих главах рассматривались численные процедуры MATLAB, выполняемые с аргументами, заданными в виде чисел или числовых массивов. В состав MATLAB входит пакет Symbolic Math ToolBox, который добавил к системе возможность символьных вычислений. Помимо типовых аналитических вычислений (таких, как упрощение математических выражений, подстановка, нахождение пределов, дифференцирование, интегрирование, интегральные преобразования, получение решений уравнений и систем уравнений, включая дифференциальные и т. д.), пакет Symbolic позволяет реализовывать арифметические операции с любой точностью. Функции пакета Symbolic реализуют интерфейс между средой MATLAB и ядром Maple системы аналитических вычислений или системы компьютерной алгебры канадского университета Waterloo, причем работа в MATLAB не требует установки Maple. Система Maple в своем ядре и в расширениях имеет около 3000 функций. Система MATLAB с пакетом Symbolic, включающим в себя около сотни символьных команд и функций, намного уступает Maple по их количеству. Однако пользователь, имеющий опыт работы в Maple, может напрямую обращаться ко всем командам и процедурам этой системы (кроме графических), написанным на встроенном языке Maple (см. раздел 7.17). Способы получения справочной информации по пакету Symbolic рассмотрены в приложении 1. Символьные переменные, константы и выражения
Поскольку переменные системы MATLAB по умолчанию не определены и традиционно задаются как векторные, матричные, числовые и т. д., т. е. не имеющие отношения к символьной математике, для реализации символьных вычислений нужно прежде всего позаботиться о создании специальных символьных переменных. Для создания символьных переменных или объектов используется команда sym. Например, команда >>x=sym('x') x = x возвращает символьную переменную с именем 'x' и записывает результат в х. Команда x=sym('x','real') дополнительно определяет x как вещественную переменную. Аналогично x=sym('x','positive') определяет x как положительную (вещественную) переменную, а x=sym('x','unreal') – как чисто формальную переменную (т. е. не обладающую никакими дополнительными свойствами). Для создания группы символьных объектов служит команда syms. Команда >> syms a b c создает символьные переменные с именами a, b, c. Команда >> Pi=sym('pi'); создает символьное число Pi = π, не обладающее погрешностью представления числа π в формате с плавающей запятой. Результаты операций с символьным Pi выражаются не в числовой, а в символьной форме. Следовательно, пакет Symbolic позволяет получить точные значения тригонометрических функций (и их рациональных комбинаций) от аргумента π в виде выражений, включающих квадратные корни из рациональных чисел, если такие выражения существуют и могут быть найдены системой. Например, точное значение sin равно >> S=sin(Pi/5) S = 1/4*2^(1/2)*(5-5^(1/2))^(1/2) Символьное выражение S выведено в командное окно в одну строку. Команда pretty(S) выводит в командное окно символьное выражение S в формате близком к математическому: >> pretty(S) 1/2 1/2 1/2 1/4 2 (5 - 5) Теперь очевидно, что sin =. Символьное выражение можно создать при помощи команды sym, входным аргументом которой является строка с выражением, заключенным в апострофы. Например, >> F=sym('x+y') F = x+y Команда syms без аргументов выводит список символьных объектов, имеющихся в рабочем пространстве. При запросе о наличии символьных переменных в памяти после выполнения предыдущего примера >> syms 'F' получен ответ 'F', т. е. входящие в выражение переменные x и y не являются символьными. Их нельзя использовать в качестве аргументов в дальнейших символьных вычислениях. Изменим рассмотренный выше ввод символьного выражения F следующим образом: >> syms x y >> F=x+y F = x+y >> syms 'F' 'x' 'y' Теперь переменные x и y вначале получили статус символьных, а сконструированное из них выражение F приобрело статус символьного автоматически. Вычисления с использованием арифметики произвольной точности
MATLAB обычно ведет вычисления с числами, представленными в формате плавающей точки с двойной точностью. Это довольно высокая точность, обеспечивающая потребности практических вычислений в прикладных задачах. Однако ряд задач теории чисел, численного кодирования и некоторых других требует выполнения вычислений вообще без какой - либо погрешности или со сколь угодно малой погрешностью. Такие вычисления не очень удачно называют арифметикой произвольной точности: правильнее говорить о точной арифметике. Для проведения вычислений в арифметике произвольной точности служит команда vpa: R=vpa(S) – возвращает результат вычислений символьного выражения S, используя арифметику произвольной точности с текущим числом цифр D, установленным функцией digits. Результат R имеет тип sym; R=vpa(S,D) – возвращает результат вычислений выражения S с текущим числом цифр D. Переменная S может быть символьным массивом. Примеры: >>vpa(exp(1),50) ans = 2.7182818284590455348848081484902650117874145507813 >>vpa([2*pi,exp(1),log(2)],10) ans = [ 6.283185308, 2.718281828,.6931471806] Команда digits служит для установки числа цифр в числах арифметики произвольной точности. Она используется в одном из следующих вариантов: digits – возвращает число значащих цифр в числах арифметики произвольной точности (по умолчанию 32); digits(D) – устанавливает заданное число цифр D для арифметики произвольной точности. Примеры вычисления числа π с 32 и 6 значащими цифрами: >>digits Digits = 32 >>vpa pi ans = 3.1415926535897932384626433832795 >> digits 6 >> vpa pi ans = 3.14159 Команды упрощения выражений – simplify, simple
Команда simplify(S) упрощает символьное выражение или массив символьных выражений S. Если упрощение невозможно, то возвращается исходное выражение. Пример для символьного выражения: >> syms a b x >>simplify((a^2-2*a*b+b^2)/(a-b)) ans = a-b Пример для вектор-столбца символьных выражений: >> V=[sin(x)^2+cos(x)^2; log(a*b)] V = [ cos(x)^2+sin(x)^2] [ log(a*b)] >> simplify(V) ans = [ 1] [ log(a*b)] Возможности проведения упрощений с помощью команды simplify в Symbolic не обладают возможностями системы Maple в полной мере в связи с отсутствием опций, определяющих путь упрощения. Дополнительные возможности упрощения обеспечивает команда simple. Команда simple(S) выполняет различные алгебраические преобразования символьного выражения S и выводит как промежуточные результаты, так и самый короткий результат. В модификации [R,HOW] = simple(S) промежуточные результаты не выводятся. Результат упрощений содержится в R, а в HOW указывается выполняемое преобразование. Следующие примеры иллюстрируют работу функции: >> syms x >> [R,HOW]=simple(cos(x)^2+sin(x)^2) R = HOW = combine >> [R,HOW]=simple(2*cos(x)^2-sin(x)^2) R = 3*cos(x)^2-1 HOW = simplify >> [R,HOW]=simple(cos(x)^2-sin(x)^2) R = cos(2*x) HOW = combine Существует более короткая модификация [R] = simple(S): >> [R]=simple(cos(x)^2-sin(x)^2) R = cos(2*x) Команда расширения выражений – expand
Команда expand(S) расширяет символьные выражения массива S. Рациональные выражения она раскладывает на простые дроби, полиномы – на полиномиальные выражения и т. д. Функция работает со многими алгебраическими и тригонометрическими функциями. Примеры: >>syms a b x >>S=[(x+2)*(x+3)*(x-4),sin(2*x)]; >>expand(S) ans = [ x^3+x^2-14*x-24, 2*sin(x)*cos(x)] >>expand(sin(a+b)) ans = sin(a)*cos(b)+cos(a)*sin(b) >>expand((a+b)^3) ans = a^3+3*a^2*b+3*a*b^2+b^3 Разложение выражений на простые множители – команда factor
Команда factor(S) поэлементно разлагает символьные выражения массива S на простые множители, а целые числа – на произведение простых чисел. Примеры: >>x=sym('x'); >>factor(x^7-1) ans = (x-1)*(x^6+x^5+x^4+x^3+x^2+x+1) >>factor(sym('123456789')) ans = (3)^2*(3803)*(3607) Пусть требуется найти определитель D (команда det) и обратную матрицу A-1 (команда inv) символьной матрицы
A =. >> syms a b >> A=[a b;a^2 b^2] A = [ a, b] [ a^2, b^2] >> D=det(A) D = a*b^2-b*a^2 >> factor(D) ans = -a*b*(-b+a) >> A1=inv(A) A1 = [ -b/a/(-b+a), 1/a/(-b+a)] [ a/b/(-b+a), -1/b/(-b+a)] Приведение подобных членов – команда collect
Команда collect(S, v) работает с символьными полиномами S нескольких переменных, где v – одна из переменных полинома. Эта функция возвращает разложение полинома S по степеням v (S может быть массивом полиномов). Примеры: >>syms x y >>S=[x^3*y^2+x^2*y+3*x*y^2,x^4*y-y*x^2]; >>collect(S,x) ans = [ x^3*y^2+x^2*y+3*x*y^2, x^4*y-x^2*y] >>collect(S,y) ans = [ (x^3+3*x)*y^2+x^2*y, (x^4-x^2)*y]
|
||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 410; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.59.244 (0.006 с.) |