- •Основы работы и программирования, компьютерная математика Учебный курс
- •Isbn ооо «Харвест», 2008
- •Предисловие
- •Введение
- •Глава 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 Создание новых массивов на основе существующих
- •2.5 Вычисление собственных значений и собственных векторов. Решение типовых задач линейной алгебры
- •Вопросы для самопроверки
- •Глава 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 Оформление, экспорт и анимация
- •5.4.1 Оформление графиков
- •5.4.2 Сохранение и экспорт графиков
- •5.4.3 Анимация
- •Вопросы для самопроверки
- •Глава 6 прикладная численная математика
- •6.1 Операции с полиномами
- •6.2 Решение уравнений и их систем
- •6.3 Минимизация функции одной переменной
- •6.4 Минимизация функции нескольких переменных
- •6.5 Вычисление определенных интегралов
- •6.6 Решение дифференциальных уравнений
- •6.7 Аппроксимация и интерполяция данных
- •6.8 Интерполяция двумерных и многомерных данных
- •Вопросы для самопроверки
- •Глава 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.19 Интерполяционный полином Лагранжа
- •7.20 Решение неравенств и систем неравенств
- •7.21 Разложение в ряд Тейлора функции нескольких переменных
- •7.22 Решение дифференциальных уравнений с помощью степенных рядов
- •7.23 Решение тригонометрических уравнений
- •Вопросы для самопроверки
- •Приложения Приложение 1. Справочная система matlab
- •Приложение 2. Знакомство с пакетами расширения системыMatlab
- •Приложение 3. Задания для самостоятельной работы
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Литература
7.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 приобрело статус символьного автоматически.
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