- •Введение
- •Глава 1 знакомство с matlab и простейшие вычисления
- •1.1. Рабочая среда matlab
- •1.2. Арифметические вычисления
- •1.3. Вещественные числа
- •1.4. Форматы вывода результата вычислений
- •1.5 Комплексные числа
- •1.6 Векторы и матрицы
- •1.7 Встроенные функции. Функции, задаваемые пользователем
- •1.8 Сообщения об ошибках и их исправление
- •1.9 Просмотр и сохранение переменных
- •1.10 Матричные и поэлементные операции над векторами и матрицами
- •1.11 Решение систем линейных уравнений
- •Вопросы для самопроверки
- •Глава 2 работа с массивами
- •2.1 Создание векторов и матриц
- •2.2 Применение команд обработки данных к векторам и матрицам
- •2.3 Создание специальных матриц
- •2.4 Создание новых массивов на основе существующих
- •Вопросы для самопроверки
- •Глава 3 м-файлы
- •3.1 Файл-программы
- •3.2 Файл-функции
- •Вопросы для самопроверки
- •Глава 4 программирование
- •4.1 Операторы отношения и логические операторы
- •4.2 Операторы цикла
- •4.3 Операторы ветвления
- •4.4 Оператор переключения switch
- •4.5 Оператор прерывания цикла break
- •4.6 Пример сравнения быстродействия матричных и скалярных операций
- •Вопросы для самопроверки
- •Глава 5 высокоуровневая графика
- •5.1 2D графика
- •5.1.1 Графики в линейном масштабе
- •5.2 Специальные виды 2d - графиков
- •5.2.1 Представление функции в виде дискретных отсчетов
- •5.2.2 Лестничные графики
- •5.2.3 Графики с указанием погрешности
- •5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- •5.2.5 Графики параметрических функций
- •5.3 3D графика
- •5.3.1 Линейчатые поверхности
- •5.3.2 Каркасные поверхности
- •5.3.3 Контурные графики
- •5.3.4 Сплошная освещенная поверхность
- •5.4.2 Сохранение и экспорт графиков
- •5.4.3 Анимация
- •Вопросы для самопроверки
- •Глава 6 прикладная численная математика
- •6.1 Операции с полиномами
- •6.2 Решение уравнений и их систем
- •6.3 Минимизация функции одной переменной
- •6.4 Минимизация функции нескольких переменных
- •6.5 Вычисление определенных интегралов
- •6.6 Решение дифференциальных уравнений
- •Вопросы для самопроверки
- •Глава 7 символьные вычисления
- •7.1 Символьные переменные, константы и выражения
- •7.2 Вычисления с использованием арифметики произвольной точности
- •7.3 Команды упрощения выражений – simplify, simple
- •7.4 Команда расширения выражений – expand
- •7.5 Разложение выражений на простые множители – команда factor
- •7.6 Приведение подобных членов – команда collect
- •7.7 Обеспечение подстановок – команда subs
- •7.8 Вычисление пределов – команда limit
- •7.9 Вычисление производных – команда diff
- •7.10 Вычисление интегралов – команда int
- •7.11 Разложение в ряд Тейлора – команда taylor
- •7.12 Вычисление суммы ряда – команда symsum
- •7.13 Решение уравнений и их систем – команда solve
- •7.14 Решение дифференциальных уравнений – команда dsolve
- •7.15 Прямое и обратное преобразования Лапласа – команды laplace, ilaplace
- •7.16 Графики символьных функций – команды ezplot, ezpolar
- •7.17 Прямой доступ к ядру системы Maple – команда maple
- •7.18 Разложение рациональной дроби на сумму простейших дробей
- •7.20 Решение неравенств и систем неравенств
- •7.21 Разложение в ряд Тейлора функции нескольких переменных
- •7.22 Решение дифференциальных уравнений с помощью степенных рядов
- •7.23 Решение тригонометрических уравнений
- •Вопросы для самопроверки
- •Приложения Приложение 1. Справочная система matlab
- •Приложение 2. Знакомство с пакетами расширения системы matlab
- •Приложение 3. Задания для самостоятельной работы
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Литература
7.2 Вычисления с использованием арифметики произвольной точности
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
7.3 Команды упрощения выражений – 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 =
1
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)
7.4 Команда расширения выражений – 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