
- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
2. Поиск корней полиномов
Полиномы
в Matlab
представляются в виде вектора
коэффициентов, расположенных в порядке
УБЫВАНИЯ степеней. Число элементов в
векторе (число коэффициентов полинома)
всегда на единицу больше его степени.
Нулевые коэффициенты должны содержаться
в векторе, несмотря на то, что в записи
формулы полинома они в явном виде не
присутствуют. Так, например, для
определения полинома пятой степени
необходимо задать вектор-строку из
шести элементов
р=[1 0 -3 2 0 5];
Вычисление всех корней полинома, заданного вектором коэффициентов р, выполняет стандартная функция roots(p). Замечательными свойствами этой функции является то, что она: не требует задания начальных приближений к корням полинома; за одно обращение к ней находит все корни; определяет как вещественные, так и комплексные корни. Следует помнить, что roots работает только с полиномами и не может быть использована для нахождения корней нелинейных уравнений другого вида (например, трансцендентных).
Пример: найти корни уравнения . Решение может быть найдено следующим образом:
>> korni=roots([1 0 -3 2 0 5])
korni =
-2.1152
1.3990 + 0.6651i
1.3990 - 0.6651i
-0.3415 + 0.9319i
-0.3415 - 0.9319i
В этом примере вектор значений коэффициентов полинома непосредственно задан в качестве фактического параметра функции roots (без формирования переменной – вектора-строки).
3. Решение одного нелинейного уравнения
Найти действительный нуль функции одной переменной позволяет функция fzero, которая в зависимости от формы задания функции реализует следующие хорошо известные численные методы: деления отрезка пополам, секущей и обратной квадратичной интерполяции. Обращение к функции
z = fzero(func, x0);
где х0 – начальное значение аргумента, в окрестности которого отыскивается действительный корень функции func; z – найденное значение корня. Начальное значение х0 можно задать в виде вектора – границ интервала поиска корня. На концах указанного интервала функция должна иметь значения разных знаков. В противном случае будет выдано сообщение об ошибке.
Входных аргументов у функции fzero может быть и больше. Например, можно указать третий фактический параметр
z = fzero(func, x0, options);
здесь options – управляющая структура задания дополнительных параметров для управления вычислительным процессом и контроля за ним. Формирование структуры выполняется функцией optimset. В общем случае аргументы задаются попарно по схеме
options=optimset('вид контроля',значение);
Наиболее часто используемые параметры optimset приведены в табл. 8.1.
Таблица 8.1
Вид контроля |
Значение |
Результат |
Display |
'off' |
Информация о вычислительном процессе не выводится |
'iter' |
Выводится информация о каждом шаге вычислительного процесса |
|
'final' |
Выводится информация только о завершении вычислительного процесса |
|
'notify' |
Выводится предупреждение, если процесс не сходится (используется по умолчанию) |
|
MaxIter |
положительное целое число |
Максимальное количество итераций вычислительного процесса |
TolFun |
положительное вещественное число |
Точность по функции для останова вычислений |
TolX |
положительное вещественное число |
Точность по аргументу для останова вычислений |
Вызов функции optimset без входных аргументов позволяет получить в командном окне Matlab перечень всего множества параметров с их допустимыми значениями (в фигурных скобках указываются значения, принятые по умолчанию).
Список выходных аргументов функции fzero также может быть расширен
[z, fval,flag] = fzero(func, x0, tol, trace);
где fval – реальное значение функции в найденном приближении к корню z, flag – признак решения: 1 – корень найден; -1 – не удалось определить интервал со сменой знака функции; -3 – в процессе вычислений получена бесконечность (inf) или выполнена операция с неопределенным результатом (nan), например, деление нуля на ноль; -4 – в ходе вычислений получилось комплексное значение; -5 – решение сошлось в особую точку.
Пример:
Найдем корни уравнения
.
В
ыполним
отделение корней графическим методом.
Построим график функции на интервале
[-5; 5]:
fplot('sin(x)-x.^2.*cos(x)', [-5 5])
grid
Из графика функции (рис. 8.1) видно, что у нее 4 корня: вблизи х = -5, х = -2, х = 0 и х = 5. Уточним корень вблизи х = -5:
fx=inline('sin(x)-x.^2.*cos(x)');
[x1, fval]=fzero(fx,-5)
Получим уточненное значение корня x1 = -4.7566 и значение функции в нем fval = 2.6645e-15.
За одно обращение к fzero можно уточнить только один корень. Важной особенностью fzero является и то, что она вычисляет только вещественные корни и только те из них, в которых функция меняет знак, а не касается оси абсцисс. Так, например найти корень уравнения х2 = 0 при помощи fzero не удастся! Нет интервалов, на которых функция меняет свой знак. А корень есть!