![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 424; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.185.209 (0.011 с.) |