- •Введение
- •Лабораторная работа ип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
4. Решение систем нелинейных уравнений
Решение систем нелинейных уравнений в Matlab осуществляется функцией fsolve, обращение к которой имеет вид:
х=fsolve(func,x0);
где х – вектор решения; х0 – вектор начального приближения к х; func – ссылка на имя m-функции, описывающей систему уравнений.
Пример: пусть необходимо решить следующую систему нелинейных уравнений:
Данная система имеет бесконечное количество корней. Найдем положительные корни, не превосходящие 3.
В ыполним отделение корней, ведь для обращения к fsolve нам придется задать начальное приближение. Построим графики функций и определим точки их пересечения.
x1=-3:0.1:10;
x2=sin(x1).*x1;
hold on
plot(x1,x2)
x2=-3:0.1:3;
x1=x2.^2+1;
plot(x1,x2,'--')
grid
hold off
legend('x2=x1sin(x1)','x1=x2^2+1')
xlabel('x1')
ylabel('x2')
Из графиков (рис. 8.2) следует, что при рассматриваемых ограничениях на значение корней система имеет только одну пару корней, приближенные значения которых х1 =2,5 и х2 =1,2.
Составим m-функцию, описывающую систему уравнений
function fun=nonlinearsystem(x)
fun=[x(1).*sin(x(1))-x(2);
x(2).^2-x(1)+1];
и файл-сценарий с обращением к fsolve для уточнения решения
x0=[2.5; 1.2;];
[xx, fx]=fsolve(@nonlinearsystem,x0,optimset('TolFun',1e-9))
В результате получим следующее решение (пару корней и значения левых частей обоих уравнений при этих корнях):
xx =
2.6349
1.2786
fx =
1.0e-015 *
0.2220
0.4441
Примечание. В примере при обращении к fsolve в качестве третьего входного аргумента указана одна из возможных настроек опций, управляющих решением: задана относительная погрешность TolFun значения функции в точке корня.
5. Контрольные вопросы
Из каких этапов состоит решение нелинейных уравнений?
Как можно выполнить отделение корней нелинейного уравнения?
Каковы особенности использования функции roots?
Какие ограничения существуют на использование функции fzero?
Как функции fzero можно задать нелинейное уравнение, корни которого ищутся?
Какие выходные аргументы может иметь функция fzero?
C помощью какой функции можно найти корни системы нелинейных уравнений?
Какие дополнительные входные параметры можно задавать для функций, выполняющих поиск корней?
Как можно узнать текущие значения параметров управления процессом поиска корней?
Как можно изменить текущие значения параметров управления?
6. Индивидуальные задания
1. Для нелинейного уравнения, заданного вариантом (табл. 8.2), выполнить отделение корня графическим методом. Используя стандартную функцию fzero выполнить поочередное уточнение всех корней уравнения. Для одного из корней "поиграть" настройками параметров optimset управления вычислительным процессом и контроля за ним. Оценить, как меняется результат.
Таблица 8.2
Вариант |
Уравнение |
Интервал поиска корней |
1 |
|
[3,5; 6] |
2 |
|
[-1; 2] |
3 |
|
[1; 7] |
4 |
|
[-2; 2] |
5 |
|
[-1,5; 1] |
6 |
|
[-1; 2] |
7 |
|
[0; 2] |
8 |
|
[-2; 2] |
9 |
|
[0; 1,5] |
10 |
|
[-1; 2] |
11 |
|
[3; 5] |
12 |
|
[-3; 3] |
2. Для системы нелинейных уравнений, заданной вариантом (табл. 8.3), выполнить отделение корней графическим методом. Используя стандартную функцию fsolve выполнить уточнение корней уравнения.
Таблица 8.3
Вариант |
Уравнение |
Условия на значение корней |
1 |
2 |
3 |
1 |
|
, |
2 |
|
, |
3 |
|
, |
Окончание табл. 8.3
4 |
|
, |
5 |
|
, |
6 |
|
, |
7 |
|
, |
8 |
|
, |
9 |
|
, |
10 |
|
, |
11 |
|
, |
12 |
|
, |