Как решить уравнение в matlab

Корпорация "Центр"

Решение нелинейных уравнений в Matlab

Доброго времени суток. В этой статье мы разберем решение простых нелинейных уравнений с помощью средств Matlab. Посмотрим в действии как стандартные функции, так и сами запрограммируем три распространенных метода для решения нелинейных уравнений.

Общая информация

Уравнения, которые содержат переменные, находящиеся в степенях, отличающихся от единицы, или имеющие нелинейные математические выражения (корень, экспонента, логарифм, синус, косинус и т.д.), а также имеющие вид f(x) = 0 называются нелинейными. В зависимости от сложности такого уравнения применяют методы для решения нелинейных уравнений.

В этой статье, помимо стандартных функций Matlab, мы рассмотрим следующие методы:

  • Метод перебора
  • Метод простых итераций
  • Метод половинного деления

Рассмотрим коротко их алгоритмы и применим для решения конкретной задачи.

Стандартные функции Matlab

Для решения нелинейных уравнений в Matlab есть функция fzero. Она принимает в качестве аргументов саму функцию, которую решаем, и отрезок, на котором происходит поиск корней нелинейного уравнения.

И сразу же разберем пример:

Решить нелинейное уравнение x = exp(-x), предварительно определив интервалы, на которых существуют решения уравнения.

Итак, для начала следует привести уравнение к нужному виду: x — exp(-x) = 0 , а затем определить интервалы, в которых будем искать решение уравнения. Методов для определения интервалов множество, но так как пример достаточно прост мы воспользуемся графическим методом.

Здесь задали примерные границы по оси x, чтобы можно было построить график и посмотреть как ведет себя функция. Вот график:

Из графика видно, что на отрезке [0;1] есть корень уравнения (там, где y = 0), соответственно в дальнейшем будем использовать этот интервал. Чем точнее выбран интервал, тем быстрее метод придет к решению уравнения, а для сложных уравнений правильный выбор интервала определяет погрешность, с которой будет получен ответ.

С помощью стандартной функции Matlab находим корень нелинейного уравнения и выводим. Теперь для проверки отобразим все это графически:

Как вы видите, все достаточно точно просчиталось. Теперь мы исследуем эту же функцию с помощью других методов и сравним полученные результаты.

Метод перебора Matlab

Самый простой метод, который заключается в том, что сначала задается какое то приближение x (желательно слева от предполагаемого корня) и значение шага h. Затем, пока выполняется условие f(x) * f(x + h) > 0, значение x увеличивается на значение шага x = x + h. Как только условие перестало выполняться — это значит, что решение нелинейного уравнения находится на интервале [x; x + h].

Теперь реализуем метод перебора в Matlab:

Лучше всего создать новый m-файл, в котором и прописать код. После вызова получаем такой вывод:

Функцию объявляем с помощью очень полезной команды inline, в цикле пока выполняется условие отсутствия корней (или их четного количества), прибавляем к x значение шага. Очевидно, что чем точнее начальное приближение, тем меньше итераций необходимо затратить.

Метод простых итераций Matlab

Этот метод заключается в том, что функцию преобразуют к виду: x = g(x). Эти преобразования можно сделать разными способами, в зависимости от вида начальной функции. Помимо этого следует задать интервал, в котором и будет производиться итерационный процесс, а также начальное приближение. Сам процесс строится по схеме xn= g(xn-1). То есть итерационно проходим от предыдущего значения к последующему.

Процесс заканчивается как только выполнится условие: , то есть, как только будет достигнута заданная точность. И сразу же разберем реализацию метода простых итераций в Matlab для примера, который был приведен выше.

Здесь должно быть все понятно, кроме одного: зачем задавать число итераций? Это нужно для того, чтобы программа не зацикливалась и не выполняла ненужные итерации, а также потому что не всегда программа может просчитать решение с нужной точностью — поэтому следует ограничивать число итераций.

А вот и вывод программы:

Очевидно, что метод простых итераций работает гораздо быстрее и получает точное решение.

Метод половинного деления Matlab

Метод достаточно прост: существует отрезок поиска решения [a;b], сначала находят значение функции в точке середины c, где c = (a+b)/2. Затем сравнивают знаки f(a) и f(c). Если знаки разные — то решение находится на отрезке [a;c], если нет — то решение находится на отрезке [c;b]. Таким образом мы сократили область в 2 раза. Такое сокращение происходит и дальше, пока не достигнем заданной точности.

Перейдем к реализации метода в Matlab:

Все самое важное происходит в цикле: последовательно сокращаем область нахождения решения, пока не будет достигнута заданная точность.
Вот что получилось в выводе:

Этот метод хорошо работает, когда правильно определен интервал, на котором находится решение. Тем не менее, метод простых итераций считается наиболее точным и быстрым.

Заключение

Сегодня мы рассмотрели решение нелинейных уравнений в Matlab. Теперь нам известны методы перебора, половинного деления, простых итераций. А также, когда нам не важно реализация метода, то можно использовать стандартную функцию в Matlab.

На этом все — спасибо за внимание. В следующей статье мы разберем решение систем нелинейных уравнений в matlab.

Модуль-3-210700 / 2Дисциплина ВВЕДЕНИЕ В МАТЕМАТИЧЕСКИЕ ППП-210700 / Раздел-05-ППП-MatLab / Учебное пособие / Тема-05-02-MatLab

Для решения систем алгебраических уравнений и одиночных урав­нений служит функция solve:

solve(expr1, expr2. exprN, var1, var2. varN)— возвращает значения переменных var1, при которых соблюдаются равенства, заданные выражениями exprI. Если в выражениях не используются знаки равенства, то полагается ехргI = 0;

solve(expr1, expr2, . exprN)аналогична предшествующей функ­ции, но переменные, по которым ищется решение, определяются функцией findsym.

Пример 4.2-1. Решить несколько нелинейных уравнений.

Пример4.2-1

» so1ve(x^3 -1, x)

» syms a b с

»S = solve(x+y=3,x*y^2=4, x, y)

» solve(sin(x)=0.5, x)

0.52359877559829887307710723054658

Пример4.2-2. Отделить корни уравнения с непрерывной правой частью.

Найдем отрезок, на концах которого имеет разные знаки. Т.е. решим уравнение .

Пример 4.2-2.

В математическом пакете MatLab имеется также ряд встроенных функций для численного вычисления корней уравнений.

Рассмотрим программные средства MatLabна примерах.

Пример 4.2-3. Локализовать корни уравнения f(x)=x 3 cos(x)+1.

Пример 3.4-20

>>f = inline(‘x.^3 — cos(x) + 1’);

Решение алгебраических и трансцендентных уравнений в среде MatLAB проще реализовать с помощью встроенных функций: solve(), fzero(), roors().

Для нахождения вещественных корней уравнений вида f(х)=0 используется функция fzero(). Алго­ритм, реализованный этой функцией, представляет собой комбинацию метода дихотомии (деления пополам), метода секущих и метода обрат­ной квадратичной интерполяции. В простейшем варианте обращения кроме указателя на функцию, корень которой ищется, задается окрестность х0, с которой начинается поиск: х = fzero(f, x0).

Аргумент fможет быть задан одним из способов:

формойс неизвестным х, заключенная в апострофы;

именем m-файла (в апострофах и без расширения m);

указателем на функцию (например, @f_name);

указателем на анонимную функцию (например, f_handie).

При этом формула, заключенная в апострофы, в качестве независимой переменной мо­жет содержать только х. Использование независимой переменной с другим именем вызовет сообщение об ошибке.

Аргумент х0 может быть задан одним из двух способов:

вектором [a;b], представляющим интервал (а<b),на концах которого функция f()меняет знак, что гарантирует нахождение, по крайней мере, одного корня на этом интервале;

скалярным значением, в окрестности которого предполагается нахождение корня. В этом случае функция fzero() сама пытается найти отрезок с центром в заданной точке х0, на концах которого функцияf ()меняет знак.

Чтобы облегчить работу по выбору начального приближения, разумнее всего построить график функции y=f (x).

Пример 4.2-4. Построить график функции f(x)=xe x +sin(x) для локализации корня.

Пример 4.2-4.

x = 0 : 0.1 : 2* pi;

Из графика видно, что один из корней находится на интервале [3;4]. Используем полученную информациюи обратимся к функ­ции fzero( ):

Пример 4.2-4

Вместо явного задания формулы для функции f мы могли бы объявить соответствующую функцию, запомнив ее в виде автономного m-файла или включив ее в качестве подфункции в файл нашей программы.

Пример 4.2-4

function fzerol

function y=f1(z)

Если мы хотим получить не только значение корня, но и узнать значение функции в найденной точке, то к функции fzero( ) можно обратиться с двумя выходными параметрами.

В ряде задач такая точность может оказаться излишней. MatLab предо­ставляет пользователю возможность формировать различные условия прекращения итерационного процесса — по точности вычисления координаты х, по модулю значения функции f(), по количеству обращений к функции f() и т. д.

Пример 4.2-5. Найти решения tg(x)=0 на интервале[1;2].

Пример 4.2-5

Якобы «корень», соответствующий приближенному значению ?/2, на самом деле является точкой разрыва, при переходе через которую функция меняет знак. Выведенное значение функции в найденной точке убеждает нас в том, что найден не корень.

Функция fzero() может возвратить еще два выходных параметра.

Пример 4.2-5

Положительное значение e_fiag (обычно, это 1) означает, что удалось най­ти интервал, на концах которого функция f( ) меняет знак (пример с tg(x)не должен притупить вашу бдительность). Если такой интервал не обнару­жен, то e_fiag=-1. Структура inform содержит три поля с именами iterations, funcCountи algorithm. В первом из них находится количество итераций, выполненных при поиске корня, во втором – количество обращений к функции f( ), в третьем – наименование алгоритма, использован­ного для нахождения корня.

Пример 4.2-6. Найти корень уравнения с помощью функции fzero().

Пример 4.2-6

» [x,f,e_flag,inform]=fzero(‘x.*exp(-)+sin(x)’,[3,4])

f= 2.0817e-016

iterations: 8

funcCount: 8

algorithm: ‘bisection, interpolation’

В данном случае достижение высокой точности по­требовалось 8 итераций. Простое деление отрезка пополам для дости­жения такой же точности потребовало бы больше итераций.

Отделение отрезка, на концах которого функция принимает значения разных знаков, является принципиальным для алгоритма, исполь­зованного в функции fzero(). Даже в таких тривиальных уравнениях, как х 2 =0, обычно не удается найти решение.

Для символьного (аналитического) решения уравнений в MatLab используется функция solve(),которая представляется в следующем виде:solve(‘f(x)’,x),solve(‘f(x)’),где: ‘f(x)’– решаемое уравнение, записанное в одиночных кавычках и представленное в произвольной форме; x– искомая символьная неизвестная (symsx).

Рассмотрим технологию определения корня с помощью функции solve() на примерах.

Пример 4.2-7.Найти решение уравнения2x3(ab)=0 в символьном виде.

Пример 4.2-7

Пример 4.2-8.Решить уравнение 2 x 4∙x+3=0 аналитически.

Корпорация "Центр"

Пример 4.2-8

Функция в ряде случаев позволяет определить все корни уравнения f(x)=0 без указания начальных значений x или областей изоляции корней.

Функция solve() имеет следующий недостаток. Она не требует информации о начальном значении корня или области его изоляции. Поэтому в случае трансцендентных уравнений и в ряде других случаев, она не находит всех корней уравнения.

Пример 4.2-9.Решить уравнение 2x3(ab)=0, где a независимая переменная.

Пример 4.2-9

solve

Поддержка вектора символов или входных параметров строки была удалена. Вместо этого используйте syms объявить переменные и входные параметры замены, такие как solve(‘2*x == 1′,’x’) с solve(2*x == 1,x) .

Синтаксис

Описание

S = solve( eqn , var ) решает уравнение eqn для переменной var . Если вы не задаете var , symvar функция определяет переменную, чтобы решить для. Например, solve(x + 1 == 2, x) решает уравнение x + 1 = 2 для x.

S = solve( eqn , var , Name,Value ) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы.

Y = solve( eqns , vars ) решает систему уравнений eqns для переменных vars и возвращает структуру, которая содержит решения. Если вы не задаете vars , solve использование symvar найти, что переменные решают для. В этом случае, количество переменных это symvar находки равны количеству уравнений eqns .

Y = solve( eqns , vars , Name,Value ) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы.

[ y1. yN ] = solve( eqns , vars ) решает систему уравнений eqns для переменных vars . Решения присвоены переменным y1. yN . Если вы не задаете переменные, solve использование symvar найти, что переменные решают для. В этом случае, количество переменных это symvar находки равны количеству выходных аргументов N .

[ y1. yN ] = solve( eqns , vars , Name,Value ) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы.

[ y1. yN , parameters , conditions ] = solve( eqns , vars ,’ ReturnConditions ‘,true) возвращает дополнительные аргументы parameters и conditions это задает параметры в решении и условиях на решении.

Примеры

Решите квадратное уравнение

Решите квадратное уравнение, не задавая переменную, чтобы решить для. solve выбирает x возвратить решение.

Задайте переменную, чтобы решить для и решить квадратное уравнение для a .

Решите полином и возвратите действительные решения

Решите полином пятой степени. Это имеет пять решений.

Возвратите только действительные решения установкой ‘Real’ опция к true . Единственными действительными решениями этого уравнения является 5 .

Численно решите уравнения

Когда solve не может символически решить уравнение, оно пытается найти числовое решение с помощью vpasolve . vpasolve функция возвращает первое найденное решение.

Попытайтесь решить следующее уравнение. solve возвращает числовое решение, потому что оно не может найти символьное решение.

Постройте левые и правые стороны уравнения. Заметьте, что уравнение также имеет положительное решение.

Figure contains an axes object. The axes object contains 2 objects of type functionline.

Найдите другое решение путем прямого вызова числового решателя vpasolve и определение интервала.

Решите многомерные уравнения и присвойте Выходные параметры структуре

При решении для нескольких переменных может быть более удобно сохранить выходные параметры в массиве структур, чем в отдельных переменных. solve функция возвращает структуру, когда вы задаете один выходной аргумент, и существуют несколько выходных параметров.

Решите систему уравнений, чтобы возвратить решения в массиве структур.

Доступ к решениям путем обращения к элементам структуры.

Используя массив структур позволяет вам удобно заменять решениями в другие выражения.

Используйте subs функционируйте, чтобы заменить решениями S в другие выражения.

Если solve возвращает пустой объект, затем никакие решения не существуют.

Решите неравенства

solve функция может решить неравенства и возвратить решения, которые удовлетворяют неравенствам. Решите следующие неравенства.

x 2 + y 2 + x y < 1

Установите ‘ReturnConditions’ к true возвратить любые параметры в решении и условиях на решении.

Параметры u и v не существуйте в рабочей области MATLAB®, и должен быть получен доступ с помощью S.parameters .

Проверяйте если значения u = 7/2 и v = 1/2 удовлетворите условию с помощью subs и isAlways .

isAlways возвращает логическую единицу ( true ) указание, что эти значения удовлетворяют условию. Замените этими значениями параметров в S.x и S.y найти решение для x и y .

Решите многомерные уравнения и присвойте Выходные параметры переменным

Решите систему уравнений.

При решении больше чем для одной переменной порядок, в котором вы задаете переменные, задает порядок, в котором решатель возвращает решения. Присвойте решения переменных solv и solu путем определения переменных явным образом. Решатель возвращает массив решений для каждой переменной.

Записи с тем же индексом формируют пару решений.

Используйте параметры и условия совершенствовать решение

Возвратите полное решение уравнения параметрами и условиями решения путем определения ‘ReturnConditions’ как true .

Решите уравнение sin ( x ) = 0 . Обеспечьте две дополнительных выходных переменные для выходных аргументов parameters и conditions .

Решение π k содержит параметр k , где k должно быть целое число. Переменная k не существует в рабочем пространстве MATLAB и должен быть получен доступ с помощью parameters .

Ограничьте решение 0 < x < 2 π . Найдите допустимое значение k для этого ограничения. Примите условие, conditions , и используйте solve найти k . Замените значением k найденный в решение для x .

В качестве альтернативы определите решение для x путем выбора значения k . Проверяйте, удовлетворяет ли выбранное значение условию на k использование isAlways .

Проверяйте если k = 4 удовлетворяет условию на k .

isAlways возвращает логическую единицу ( true ), подразумевать, что 4 допустимое значение для k . Замена k с 4, чтобы получить решение для x . Используйте vpa получить числовое приближение.

Сократите результат с правилами упрощения

Решите уравнение exp ( log ( x ) log ( 3 x ) ) = 4 .

По умолчанию, solve не применяет упрощения, которые не допустимы для всех значений x . В этом случае решатель не принимает это x положительное вещественное число, таким образом, оно не применяет логарифмическую идентичность log ( 3 x ) = log ( 3 ) + log ( x ) . В результате solve не может решить уравнение символически.

Установите ‘IgnoreAnalyticConstraints’ к true применять правила упрощения, которые могут позволить solve найти решение. Для получения дополнительной информации см. Алгоритмы.

solve применяет упрощения, которые позволяют решателю находить решение. Математические правила применялись, когда выполняющие упрощения не всегда допустимы в целом. В этом примере решатель применяет логарифмические тождества учитывая, что x положительное вещественное число. Поэтому решения, найденные в этом режиме, должны быть проверены.

Проигнорируйте предположения на переменных

sym и syms функции позволяют вам установить предположения для символьных переменных.

Примите что переменная x положительно.

Когда вы решаете уравнение для переменной под предположениями, решатель только возвращает решения, сопоставимые с предположениями. Решите это уравнение для x .

Позвольте решения, которые не удовлетворяют предположениям установкой ‘IgnoreProperties’ к true .

Для дальнейших расчетов очистите предположение, что вы устанавливаете на переменной x путем воссоздания его с помощью syms .

Решите полиномиальные знатные уравнения

Когда вы решаете полиномиальное уравнение, решатель может использовать root возвратить решения. Решите полином третьей степени.

Попытайтесь получить явное решение для таких уравнений путем вызова решателя с ‘MaxDegree’ . Опция задает максимальную степень полиномов, для которых решатель пытается возвратить явные решения. Значением по умолчанию является 2 . Увеличивая это значение, можно получить явные решения для полиномов высшего порядка.

Решите те же уравнения для явных решений путем увеличения значения ‘MaxDegree’ к 3 .

Возвратите одно решение

Решите уравнение sin ( x ) + cos ( 2 x ) = 1 .

Вместо того, чтобы возвратить бесконечное множество периодических решений, решатель выбирает три решения, что он считает самым практическим.

Выберите только одно решение установкой ‘PrincipalValue’ к true .

Входные параметры

eqn — Уравнение, чтобы решить
символьное выражение | символьное уравнение

Уравнение, чтобы решить в виде символьного выражения или символьного уравнения. Оператор отношения == определяет символьные уравнения. Если eqn символьное выражение (без правой стороны), решатель принимает, что правая сторона 0 и решает уравнение eqn == 0 .

var — Переменная, для которой вы решаете уравнение
символьная переменная

Переменная, для которой вы решаете уравнение в виде символьной переменной. По умолчанию, solve использует переменную, определенную symvar .

eqns Система уравнений
символьные выражения | символьные уравнения

Система уравнений в виде символьных выражений или символьных уравнений. Если любые элементы eqns символьные выражения (без правой стороны), solve приравнивает элемент к 0 .

vars — Переменные, для которых вы решаете уравнение или систему уравнений
символьный вектор | символьная матрица

Переменные, для которых вы решаете уравнение или систему уравнений в виде символьного вектора или символьной матрицы. По умолчанию, solve использует переменные, определенные symvar .

Порядок, в котором вы задаете эти переменные, задает порядок, в котором решатель возвращает решения.

Аргументы name-value

Real — Отметьте для возврата только действительных решений
false (значение по умолчанию) | true

Отметьте для возврата только действительных решений в виде разделенной запятой пары, состоящей из ‘Real’ и одно из этих значений.

false Возвратите все решения.
true Возвратите только те решения, для которых каждое подвыражение исходного уравнения представляет вещественное число. Эта опция также принимает, что все символьные параметры уравнения представляют вещественные числа.

ReturnConditions — Отметьте для возврата параметров и условий
false (значение по умолчанию) | true

Отметьте для возврата параметров в решении и условиях, при которых решение верно в виде разделенной запятой пары, состоящей из ‘ReturnConditions’ и одно из этих значений.

false Не возвращайте параметрированные решения и условия, при которых решение содержит. solve функционируйте заменяет параметры на соответствующие значения.
true Возвратите параметры в решении и условиях, при которых решение содержит. Для вызова с одной выходной переменной, solve возвращает структуру с полями parameters и conditions . Для нескольких выходных переменных, solve присваивает параметры и условия к последним двум выходным переменным. Это поведение означает, что количество выходных переменных должно быть равно количеству переменных, чтобы решить для плюс два.

Пример: [v1, v2, params, conditions] = solve(sin(x) +y == 0,y^2 == 3,’ReturnConditions’,true) возвращает параметры в params и условия в conditions .

IgnoreAnalyticConstraints — Правила упрощения применились к выражениям и уравнениям
false (значение по умолчанию) | true

Правила упрощения применились к выражениям и уравнениям в виде разделенной запятой пары, состоящей из ‘IgnoreAnalyticConstraints’ и одно из этих значений.

false Используйте строгие правила упрощения.
true Примените чисто алгебраические упрощения в выражениях и уравнениях. Установка IgnoreAnalyticConstraints к true может дать вам простые решения, которые могли привести к результатам, не обычно допустимым. Другими словами, эта опция применяет математические тождества, которые удобны, но результаты не могут содержать для всех возможных значений переменных. В некоторых случаях это также включает solve решить уравнения и системы, которые не могут быть решены в противном случае.

IgnoreProperties — Отметьте для возврата решений, противоречивых со свойствами переменных
false (значение по умолчанию) | true

Отметьте для возврата решений, противоречивых со свойствами переменных в виде разделенной запятой пары, состоящей из ‘IgnoreProperties’ и одно из этих значений.

false Не включайте решения, противоречивые со свойствами переменных.
true Включайте решения, противоречивые со свойствами переменных.

MaxDegree — Максимальная степень полиномиальных уравнений, для которых решатель использует явные формулы
2 (значение по умолчанию) | положительное целое число, меньшее, чем 5

Максимальная степень полиномиальных уравнений, для которых решатель использует явные формулы в виде положительного целого числа, меньшего, чем 5. Решатель не использует явные формулы, которые вовлекают радикалов при решении полиномиальных уравнений степени, больше, чем заданное значение.

PrincipalValue — Отметьте для возврата одного решения
false (значение по умолчанию) | true

Отметьте для возврата одного решения в виде разделенной запятой пары, состоящей из ‘PrincipalValue’ и одно из этих значений.

false Возвратите все решения.
true Возвратите только одно решение. Если уравнение или система уравнений не имеют решения, решатель возвращает пустой символьный объект.

Выходные аргументы

S — Решения уравнения
символьный массив

Решения уравнения, возвращенного как символьный массив. Размер символьного массива соответствует количеству решений.

Y — Решения системы уравнений
структура

Решения системы уравнений, возвращенной как структура. Количество полей в структуре соответствует количеству независимых переменных в системе. Если ‘ReturnConditions’ установлен в true , solve функция возвращает два дополнительных поля, которые содержат параметры в решении и условия, при которых решение верно.

y1. yN — Решения системы уравнений
символьные переменные

Решения системы уравнений, возвращенной как символьные переменные. Количество выходных переменных или символьных массивов должно быть равно количеству независимых переменных в системе. Если вы явным образом задаете независимые переменные vars , затем решатель использует тот же порядок возвратить решения. Если вы не задаете vars , независимые переменные видов тулбокса в алфавитном порядке, и затем присваивают решения для этих переменных к выходным переменным.

parameters — Параметры в решении
вектор из сгенерированных параметров

Параметры в решении, возвращенном как вектор из сгенерированных параметров. Этот выходной аргумент только возвращен если ReturnConditions true . Если один выходной аргумент обеспечивается, parameters возвращен как поле структуры. Если несколько выходных аргументов обеспечиваются, parameters возвращен как предпоследний выходной аргумент. Сгенерированные параметры не появляются в MATLAB &#x00AE; рабочая область. К ним нужно получить доступ с помощью parameters .

Пример: [solx, params, conditions] = solve(sin(x) == 0, ‘ReturnConditions’, true) возвращает параметр k в аргументе params .

conditions — Условия, при которых решения допустимы
вектор из символьных выражений

Условия, при которых решения допустимы, возвратились как вектор из символьных выражений. Этот выходной аргумент только возвращен если ReturnConditions true . Если один выходной аргумент обеспечивается, conditions возвращен как поле структуры. Если несколько выходных аргументов обеспечиваются, conditions возвращен как последний выходной аргумент.

Пример: [solx, params, conditions] = solve(sin(x) == 0, ‘ReturnConditions’, true) возвращает условие in(k, ‘integer’) в conditions . Решение в solx допустимо только при этом условии.

Советы

Если solve не может найти решение и ReturnConditions false , solve функционируйте внутренне вызывает числовой решатель vpasolve это пытается найти числовое решение. Для полиномиальных уравнений и систем без символьных параметров, числовой решатель возвращает все решения. Для неполиномиальных уравнений и систем без символьных параметров, числовой решатель возвращает только одно решение (если решение существует).

Если solve не может найти решение и ReturnConditions true , solve возвращает пустое решение с предупреждением. Если никакие решения не существуют, solve возвращает пустое решение без предупреждения.

Если решение содержит параметры и ReturnConditions true , solve возвращает параметры в решении и условиях, при которых решения верны. Если ReturnConditions false , solve функционируйте или выбирает значения параметров и возвращает соответствующие результаты или возвращает параметрированные решения, не выбирая особые значения. В последнем случае, solve также выдает предупреждение, указывающее на значения параметров в возвращенных решениях.

Если параметр не появляется ни в каком условии, это означает, что параметр может взять любое комплексное число.

Выход solve может содержать параметры от исходных уравнений в дополнение к параметрам, введенным solve .

Параметры, введенные solve не появляйтесь в рабочем пространстве MATLAB. К ним нужно получить доступ с помощью выходного аргумента, который содержит их. В качестве альтернативы использовать параметры в использовании рабочего пространства MATLAB syms инициализировать параметр. Например, если параметром является k , используйте syms k .

Имена переменных parameters и conditions не позволены как входные параметры solve .

Чтобы решить дифференциальные уравнения, используйте dsolve функция.

При решении системы уравнений всегда присваивайте результат выходным аргументам. Выходные аргументы позволяют вам получить доступ к значениям решений системы.

MaxDegree только принимает положительные целые числа, меньшие, чем 5 потому что, в целом, нет никаких явных выражений для корней полиномов степеней выше, чем 4.

Выходные переменные y1. yN не задавайте переменные для который solve решает уравнения или системы. Если y1. yN переменные, которые появляются в eqns , затем нет никакой гарантии что solve(eqns) присвоит решения y1. yN использование правильного порядка. Таким образом, когда вы запускаете [b,a] = solve(eqns) , вы можете получить решения для a присвоенный b и наоборот.

Чтобы гарантировать порядок возвращенных решений, задайте переменные vars . Например, вызов [b,a] = solve(eqns,b,a) присваивает решения для a к a и решения для b к b .

Алгоритмы

Когда вы используете IgnoreAnalyticConstraints , решатель применяет эти правила к выражениям с обеих сторон уравнения.

регистрируйте (a) + журнал (b) = журнал (a · b) для всех значений a и b. В частности, следующее равенство допустимо для всех значений a, b и c:

журнал (a b ) = b · регистрируйте (a) для всех значений a и b. В частности, следующее равенство допустимо для всех значений a, b и c:

Если f и g являются стандартными математическими функциями и f (g (x)) = x для всех маленьких положительных чисел, f (g (x)) = , x принят, чтобы быть допустимым для всех комплексных чисел x. В частности:

Решатель может умножить обе стороны уравнения по любому выражению кроме 0 .

Корпорация "Центр"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *