Доброго времени суток! В этой статье мы поговорим о решении систем нелинейных алгебраических уравнений в Matlab. Вслед за решением нелинейных уравнений, переходим к их системам, рассмотрим несколько методов реализации в Matlab.
- Общая информация
- Оператор Matlab для решения СНАУ
- Метод простых итераций в Matlab для решения СНАУ
- Метод Ньютона в Matlab для решения СНАУ
- Заключение
- Графический метод решения систем нелинейных уравнений, 8-й класс
- Ход урока
- I. Организационный момент
- П. Актуализация опорных знаний
- III. Объяснение нового материала
- IV. Закрепление темы
- V. Работа на компьютере
- VI. Итог урока
- MathCAD — это просто! Часть 5. Системы нелинейных уравнений
- 🎦 Видео
Общая информация
Итак, в прошлой статье мы рассмотрели нелинейные уравнения и теперь необходимо решить системы таких уравнений. Система представляет собой набор нелинейных уравнений (их может быть два или более), для которых иногда возможно найти решение, которое будет подходить ко всем уравнениям в системе.
В стандартном виде, количество неизвестных переменных равно количеству уравнений в системе. Необходимо найти набор неизвестных переменных, которые при подставлении в уравнения будут приближать значение уравнения к 0. Иногда таких наборов может быть несколько, даже бесконечно много, а иногда решений не существует.
Чтобы решить СНАУ, необходимо воспользоваться итеративными методами. Это методы, которые за определенное количество шагов получают решение с определенной точностью. Также очень важно при решении задать достаточно близкое начальное приближение, то есть такой набор переменных, которые близки к решению. Если решается система из 2 уравнений, то приближение находится с помощью построение графика двух функций.
Далее, мы рассмотрим стандартный оператор Matlab для решения систем нелинейных алгебраических уравнений, а также напишем метод простых итераций и метод Ньютона.
Оператор Matlab для решения СНАУ
В среде Matlab существует оператор fsolve, который позволяет решить систему нелинейных уравнений. Сразу рассмотрим задачу, которую, забегая вперед, решим и другими методами для проверки.
Решить систему нелинейных уравнений с точность 10 -2 :
cos(x-1) + y = 0.5
x-cos(y) = 3
Нам дана система из 2 нелинейных уравнений и сначала лучше всего построить график. Воспользуемся командой ezplot в Matlab, только не забудем преобразовать уравнения к стандартному виду, где правая часть равна 0:
Функция ezplot строит график, принимая символьную запись уравнения, а для задания цвета и толщины линии воспользуемся функцией set. Посмотрим на вывод:
Как видно из графика, есть одно пересечение функций — то есть одно единственное решение данной системы нелинейных уравнений. И, как было сказано, по графику найдем приближение. Возьмем его как (3.0, 1.0). Теперь найдем решение с его помощью:
Создадим функцию m-файлом fun.m и поместим туда следующий код:
Заметьте, что эта функция принимает вектор приближений и возвращает вектор значений функции. То есть, вместо x здесь x(1), а вместо y — x(2). Это необходимо, потому что fsolve работает с векторами, а не с отдельными переменными.
И наконец, допишем функцию fsolve к коду построения графика таким образом:
Таким образом у нас образуется два m-файла. Первый строит график и вызывает функцию fsolve, а второй необходим для расчета самих значений функций. Если вы что-то не поняли, то в конце статьи будут исходники.
И в конце, приведем результаты:
xr (это вектор решений) =
3.3559 1.2069
fr (это значения функций при таких xr, они должны быть близки к 0) =
1.0e-09 *
0.5420 0.6829
ex (параметр сходимости, если он равен 1, то все сошлось) =
1
И, как же без графика с ответом:
Метод простых итераций в Matlab для решения СНАУ
Теперь переходим к методам, которые запрограммируем сами. Первый из них — метод простых итераций. Он заключается в том, что итеративно приближается к решению, конечно же, с заданной точностью. Алгоритм метода достаточно прост:
- Если возможно, строим график.
- Из каждого уравнения выражаем неизвестную переменную след. образом: из 1 уравнения выражаем x1, из второго — x2, и т.д.
- Выбираем начальное приближение X0, например (3.0 1.0)
- Рассчитываем значение x1, x2. xn, которые получили на шаге 2, подставив значения из приближения X0.
- Проверяем условие сходимости, (X-X0) должно быть меньше точности
- Если 5 пункт не выполнился, то повторяем 4 пункт.
И перейдем к практике, тут станет все понятнее.
Решить систему нелинейных уравнений методом простых итераций с точность 10 -2 :
cos(x-1) + y = 0.5
x-cos(y) = 3
График мы уже строили в предыдущем пункте, поэтому переходим к преобразованию. Увидим, что x из первого уравнения выразить сложно, поэтому поменяем местами уравнения, это не повлияет на решение:
x-cos(y) = 3
cos(x-1) + y = 0.5
Далее приведем код в Matlab:
В этой части мы выразили x1 и x2 (у нас это ‘x’ и ‘y’) и задали точность.
В этой части в цикле выполняются пункты 4-6. То есть итеративно меняются значения x и y, пока отличия от предыдущего значения не станет меньше заданной точности.
k = 10
x = 3.3587
y = 1.2088
Как видно, результаты немного отличаются от предыдущего пункта. Это связано с заданной точностью, можете попробовать поменять точность и увидите, что результаты станут такими же, как и при решении стандартным методом Matlab.
Метод Ньютона в Matlab для решения СНАУ
Решение систем нелинейных уравнений в Matlab методом Ньютона является более эффективным, чем использование метода простых итераций. Сразу же представим алгоритм, а затем перейдем к реализации.
- Если возможно, строим график.
- Выбираем начальное приближение X0, например (3.0 1.0)
- Рассчитываем матрицу Якоби w, это матрица частных производных каждого уравнения, считаем ее определитель для X0.
- Находим вектор приращений, который рассчитывается как dx = -w -1 * f(X0)
- Находим вектор решения X = X0 + dx
- Проверяем условие сходимости, (X-X0) должно быть меньше точности
Далее, решим тот же пример, что и в предыдущих пунктах. Его график мы уже строили и начальное приближение останется таким же.
Решить систему нелинейных уравнений методом Ньютона с точность 10 -2 :
cos(x-1) + y = 0.5
x-cos(y) = 3
Перейдем к коду:
Сначала зададим начальное приближение. Затем необходимо просчитать матрицу Якоби, то есть частные производные по всем переменным. Воспользуемся символьным дифференцированием в Matlab, а именно командой diff с использованием символьных переменных.
Далее, сделаем первую итерацию метода, чтобы получить вектор выходных значений X, а потом уже сравнивать его с приближением в цикле.
В этой части кода выполняем первую итерацию, чтобы получить вектор решения и сравнивать его с вектором начального приближения. Отметим, чтобы посчитать значение символьной функции в Matlab, необходимо воспользоваться функцией subs. Эта функция заменяет переменную на числовое значение. Затем функция double рассчитает это числовое значение.
Все действия, которые были выполнены для расчета производных, на самом деле можно было не производить, а сразу же задать производные. Именно так мы и поступим в цикле.
В этой части кода выполняется цикл по расчету решения с заданной точностью. Еще раз отметим, что если в первой итерации до цикла были использованы функции diff, double и subs для вычисления производной в Matlab, то в самом цикле матрица якоби была явно задана этими частными производными. Это сделано, чтобы показать возможности среды Matlab.
За 3 итерации достигнут правильный результат. Также важно сказать, что иногда такие методы могут зацикливаться и не закончить расчеты. Чтобы такого не было, мы прописали проверку на количество итераций и запретили выполнение более 100 итераций.
Заключение
В этой статье мы познакомились с основными понятиями систем нелинейных алгебраических уравнений в Matlab. Рассмотрели несколько вариантов их решения, как стандартными операторами Matlab, так и запрограммированными методами простых итераций и Ньютона.
Видео:Графический способ решения систем уравнений. Алгебра, 9 классСкачать
Графический метод решения систем нелинейных уравнений, 8-й класс
Разделы: Математика
Класс: 8
Цель урока:
- совершенствование навыки построения графиков функций;
- применение умений, полученных на уроках информатики (графики в Ехсе1);
- развитие современной функциональной грамотности.
Задачи урока:
- Обучающие: знакомство с графическим способом решения систем нелинейных уравнений; развитие умения применять теоретические знания в процессе
решения систем уравнений; - Развивающие: развитие познавательного интереса к предмету; развитие навыка самостоятельного поиска необходимой
информации; развитие навыка самоконтроля. - Воспитательные: развитие культуры общения; желания помочь товарищу в затруднительных ситуациях.
- Здоровье-сберегающие: соблюдение гигиены умственного труда при работе с компьютером.
Виды используемых на уроке средств ИКТ: СD, универсальные, ресурсы Интернет.
Необходимое аппаратное и программное обеспечение: Мультимедийный компьютер, программные средства, наушники/
Оборудование: Чертежные инструменты.
Ход урока
I. Организационный момент
Приветствие и размещение на рабочих местах.
Учитель. Мы продолжаем изучение большой темы “Решение систем нелинейных уравнений”. Какие способы решения нами были рассмотрены? (Метод постановки, метод сложения, метод введения новых неизвестных, метод решения однородных уравнений.)
Какой еще способ нам известен из курса алгебры седьмого класса? (Графический.)
Почему он так называется? (В одной и той же системе координат строим графики обоих уравнений и находим координаты точек их пересечения.)
! Цель сегодняшнего урока: научиться решать нелинейные системы уравнений графическим методом, Используя чертежные инструменты и программу построения графиков на компьютере.
Систему координат, в которой мы будем строить графики, называют декартовой,. Почему? Ответ на этот вопрос вы узнаете, посмотрев диск.
Учащиеся переходят к компьютерам, надевают наушники и читают и слушают информацию из диска “Алгебра Кирилла и Мефодия 7–8”, тема “Графики функций” о Рене Декарте и созданной им системе координат.
П. Актуализация опорных знаний
Фронтальная беседа. Презентация “Графики функций”.
1. Какие функции нам известны? Как называются их графики?
а) у = кх + Ь – линейная функция. Графиком является прямая, которую строим по двум точкам.
Если к > 0, то угол наклона прямой к положительному направлению от Ох острый.
Если к 2 квадратная функция. Графиком является парабола. Для построения графика используем таблицу значений.
в) обратная пропорциональность: y = k/x, графиком является гипербола В(f)=x0
г) y = D(f)=[0;+)
д) уравнение окружности
х 2 + у 2 = R 2
(х – а) 2 + (у – b) 2 = R 2
0(а; b)
III. Объяснение нового материала
В чем состоит графический метод решения систем уравнений? (В одной и той же системе координат строим графики уравнений.)
Координаты точки пересечения и будут являться решением данной системы.
IV. Закрепление темы
1) Решить систему уравнений:
в) б) а)
V. Работа на компьютере
№ 130 из учебника Виленкин:
а) б) в)
г) д) е)
а) б) № 162 (г,д)
Д/з на стр. 205 № 162 (а,б)
VI. Итог урока
Применение современной техники позволяет сделать процесс решения систем уравнений графическим методом значительно быстрее, но необходимо уметь строить графики функций.
Учебник: Н.Я. Виленкин Н.Я. Алгебра. 8. – М.: Просвещение, 2001.
Видео:Способы решения систем нелинейных уравнений. 9 класс.Скачать
MathCAD — это просто! Часть 5. Системы нелинейных уравнений
Добрый день, уважаемые читатели и читательницы, мы с вами продолжаем грызть гранит науки. Делаем мы это с целью — напомню, если кто вдруг успел позабыть — овладеть замечательным математическим пакетом под названием MathCAD. И в прошлый раз мы с вами закончили на решении систем линейных алгебраических уравнений, для простоты также обозначаемых как СЛАУ. Что ж, линейные уравнения — это, конечно же, спору нет, замечательно. Однако на них, к величайшему сожалению многих поколений школьников и студентов, математические задачи далеко не заканчиваются, а даже, я бы сказал, напротив. То есть СЛАУ — это только частный случай систем уравнений, которые могут в обыкновенной вычислительной практике оказаться совсем даже и не линейными, а, напротив, нелинейными (да, именно так их и называют математики). Системы нелинейных уравнений без использования MathCAD или какого-либо другого математического пакета решать обычно не просто трудно, а очень трудно, но в MathCAD подход к ним не слишком отличается от подхода к СЛАУ — в этом вы сейчас получите возможность убедиться лично.
В общем-то, основные аспекты аналитического решения систем уравнений мы с вами уже, по большому счету, обсудили. Когда это мы так лихо успели? А вот именно тогда, когда обсуждали аналитическое решение систем линейных уравнений с помощью оператора solve. Оказывается, все те же методы вполне применимы для решения систем нелинейных уравнений. Тем не менее, чтобы вы лучше их усвоили, повторю еще раз кратко алгоритм их решения с помощью MathCAD’а и приведу небольшой пример решения подобной системы. Давайте попробуем решить следующую систему уравнений: ex + y + z(xyz)1/2 = 0
(x + y+ z)1/2 = c
x +y + cz = 0
Система выглядит несложной, но для того, чтобы решить ее без использования MathCAD’а, даже очень хорошему математику потребуется не такое уж малое количество времени. Естественно, MathCAD с этой системой справится в два счета. Для ее решения создайте матрицу размером 3 на 1 (3 строки, 1 столбец), в которую и поместите уравнения нашей системы. Напомню, что для того, чтобы MathCAD распознавал уравнения как уравнения, знак «равно» нужно нажимать, удерживая клавишу Ctrl. После того, как система будет введена в виде матрицы, найдите на панели Symbolic оператор solve — мы им уже неоднократно пользовались для решения и простых уравнений, и СЛАУ, так что вы, по идее, уже должны были запомнить, где именно он находится. После оператора через запятые укажите переменные, которые входят в нашу систему уравнений — это пусть будут для начала x, y и z. Поскольку при вводе solve с панели Symbolic MathCAD сам добавляет нужную стрелочку для аналитического решения нашей с вами системы уравнений, то больше ничего, в общем-то, делать не нужно — дальше MathCAD будет решать систему. Сколько это времени у него займет, зависит, конечно же, от мощности вашего компьютера, ну и от самой системы. Нашу систему он решит быстро, а вот если поизвращаться и написать какую-нибудь систему тригонометрических и логарифмических уравнений, да еще и с комплексными переменными (о них мы потом еще поговорим отдельно), то решать такое MathCAD может на слабых компьютерах и не один час.
Для чистоты эксперимента поменяем переменные: пусть теперь произвольной константой в нашей системе будет не c, а z. В этом случае нас ожидает совершенно другое, куда как более громоздкое, решение этой самой системы.
Как видите, аналитическое решение систем нелинейных уравнений с помощью MathCAD’а — вещь несложная, только, к сожалению, возможная далеко не всегда. Как обычно, на помощь символьному процессору MathCAD, который опускает в бессилии руки перед сложными системами, спешат численные методы. Вот здесь уже начинаются различия с системами линейных уравнений.
Численное решение нелинейных систем
В целом алгоритм решения систем нелинейных уравнений в MathCAD для пользователя мало чем отличается от него же для СЛАУ. Мы точно так же задаем начальные приближения, пишем «Given», записываем под этим словом наши уравнения и запрягаем функцию Find, которая должна вывести эти самые уравнения на чистую воду. Все точно так же, как тогда, когда мы решали СЛАУ.
Почему же я так пугал вас буквально двумя абзацами выше, говоря о том, что решать системы нелинейных уравнений намного сложнее, чем СЛАУ? Дело в том, что в случае нелинейных уравнений намного сложнее подобрать такие начальные значения, чтобы численное решение сходилось к реальным значениям корней уравнений. Честно говоря, со СЛАУ тоже не всегда все так просто, как я в прошлый раз сказал, однако в крайнем случае можно заставить MathCAD решить СЛАУ аналитически, а затем просто подставить конкретное численное значение какого-нибудь коэффициента. С нелинейными системами такой прием, что называется, «не покатит». Именно поэтому для получения максимального точного решения многих из таких систем придется озадачиться такими вещами, как задание начальных значений для наших переменных.
Первый способ, который я вам предложу, сразу предупреждаю, для людей неленивых. Заключается он в банальном подборе значений переменных собственными руками. То есть для начала берем начальные значения «с потолка» и решаем систему с помощью Find’а. Подставляем значения, выданные этой функцией, в исходные уравнения и смотрим, насколько они похожи на истинные решения. Если уравнения обращаются при подстановке в верные равенства, то все хорошо: либо система была простой, либо в вас дремлет талант подбирателя корней уравнений. Но если равенством после подстановки и близко не пахнет, то придется попотеть. Нужно начать изменять значения начальных приближений для каждой переменной и смотреть, как это отразится на близости выражений, получившихся после подстановки решений в уравнения, к равенствам. Таким нехитрым методом можно за не столь долгое время, как может сначала показаться, добиться хорошего приближения начальных значений к реальным решениям. И, несмотря на явный садомазохистский характер данного метода, он имеет то неоспоримое преимущество, что действует железно на любые системы и любые переменные — было бы терпение.
Второй метод, который я хочу предложить, этим достоинством не обладает, но зато и не требует от пользователя столь деятельного участия в решении. Думаю, вы сами сможете сформулировать главный его недостаток, если я скажу, что с этим методом мы уже сталкивались, и заключается он в построении графиков для уравнений, входящих в систему. Да, главный недостаток — это сложность в применении к системам уравнений, содержащим более трех переменных. Сложно, сами понимаете, изобразить на мониторе компьютера 25-мерное пространство для отображения решений системы с 25-ю переменными. Но для тех систем, которые содержат две или три переменные, построить график мы вполне сможем. Однако для этого сначала нужно научиться строить графики уравнений.
Построение графиков параметрических кривых
Наиболее простым способом построения графика уравнения в MathCAD’е является параметризация входящих в него переменных друг через друга или через какую-то третью переменную. Что это означает? Поясню на примере. Например, у нас есть уравнение окружности x2 + y2 = 5. Если вы попытаетесь записать функцию f(x, y) = x2 + y2 — 5, а потом построить ее график от x или от y, то вас ожидает разочарование. То, что в итоге выдаст на экран MathCAD, будет так же мало похоже на окружность, как сам MathCAD — на пасьянс «Косынка». Придется придумывать что-то другое. Например, можно подобрать такие функции переменной t, которые, будучи возведенными в квадрат, в сумме тоже дадут пять. Естественно, такими функциями будут тригонометрические — синус и косинус от переменной t, помноженные на корень из пяти. Если мы выразим таким образом x и y через t, то мы параметризуем наше уравнение и уже сможем успешно построить график x(t) от y(t) или же y(t) от x(t) — впрочем, в данном случае в силу симметричности это будет уже не столь важно.
Для того, чтобы решить систему уравнений, нужно просто подобным образом параметризовать и второе уравнение. Вполне возможно, что, как и в нашем примере, оно вполне подойдет для того, чтобы банально выразить x через y или наоборот, после чего построение графика окажется особенно простым (см. соответствующий скриншот). Для нахождения начальных приближений достаточно воспользоваться уже знакомой нам с вами трассировкой — само собой, решением будет точка пересечения двух кривых на уравнении. Для того, чтобы получить более точное значение решения, чем предлагает нам трассировка, нужно, конечно же, подставить полученные с ее помощью координаты точки пересечения графиков в численное решение системы перед Given’ом. Последний скриншот иллюстрирует, что графики мы с вами построили правильно, и с его помощью действительно намного легче искать решение системы двух исходных уравнений. А легче хотя бы уже просто потому, что видно, какого количества корней мы вправе ожидать от нашей системы.
Но работа с трехмерными графиками в MathCAD’е не так проста, как с двумерными, поскольку и сама по себе поверхность — более сложный объект, чем кривая. С поверхностями можно ожидать немалого количества не самого приятного рода сюрпризов, так что лучше о них поговорить более подробно. Этим мы с вами и займемся в следующей статье из цикла о MathCAD’е.
Компьютерная газета. Статья была опубликована в номере 17 за 2008 год в рубрике soft
🎦 Видео
Решение системы линейных уравнений графическим методом. 7 класс.Скачать
Алгебра 9 класс. Графическое решение систем уравненийСкачать
Решение системы неравенств с двумя переменными. 9 класс.Скачать
После этого видео, ТЫ РЕШИШЬ ЛЮБУЮ Систему Нелинейных УравненийСкачать
Cистемы уравнений. Разбор задания 6 и 21 из ОГЭ. | МатематикаСкачать
Решение системы нелинейных уравнений графическим способом средствами ExcelСкачать
Построение графика системы из 3 х линейных уравненийСкачать
Алгебра 7. Урок 8 - Системы линейных уравненийСкачать
3.Системы нелинейных уравнений MathcadСкачать
Способы решения систем нелинейных уравнений. Практическая часть. 9 класс.Скачать
Построить график ЛИНЕЙНОЙ функции и найти:Скачать
Математика это не ИсламСкачать
Графики, функции, решение системы линейных уравнений в MapleСкачать
ЭЛЕМЕНТАРНО, ВАТСОН! Квадратичная Функция и ее график ПараболаСкачать
Уравнение с двумя переменными и его график. Алгебра, 9 классСкачать
Построение графика линейного уравненияСкачать
Линейная функция и ее график. 7 класс.Скачать
Нелинейные уравнения с двумя переменными и их геометрический смысл. 9 класс.Скачать