Нелинейные уравнения и системы, интегрирование, решение обыкновенных дифференциальных уравнений и систем, обработка результатов эксперимента

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

Алгебраическое уравнение, оно же полином, оно же многочлен a0xn+a1xn-1+a2xn-2+…+an-1x+an=0

Его вектор коэффициентов p=[a0 a1 a2…an-1 an]

Произведение двух полиномов вычисляет функция conv(p1,p2) которой передаются векторы коэффициентов обоих полиномов. Деление полиномов (первого на второй) осуществляет функция [q r]=deconv(p1,p2), которая возвращает ответ и остаток от деления.

Если надо вычислить значение полинома при определенном значении х, то для этого используется функция polyval(p1,x). Нахождение производной от полинома осуществляется функцией polyder.

Решить алгебраическое уравнение вида a0xn+a1xn-1+…+an-1x+an=0 можно функцией x=roots(p); где x вектор корней алгебраического уравнения (полинома), p вектор коэффициентов полинома, то есть р=[a0 a1 …an-1 an]. Например, для уравнения х2-1=0 вектор р=1 0 -1 тогда х=roots(p)  и получается, что х=1 -1. Это и есть корни уравнения.

Например, для нахождения корней многочлена функцией roots(p), пусть вектор p3 = 1 0 0 1. Наоборот, построить полином по вектору его корней может функция poly(x).

function Start_p1p2 p1=[2 0 1]; p2=[1 0 0 1]; p=conv(p1,p2) p3=deconv(p,p1) a1=polyval(p3,2) a2=polyder(p3) x=roots(p3) a3=poly(x) end p = 2 0 1 2 0 1 p3 = 1 0 0 1 a1 = 9 a2 = 3 0 0 x = -1.0000          0.5000 + 0.8660i 0.5000 - 0.8660i a3 = 1.0000 -0.0000 0.0000 1.0000

Уравнение, в котором неизвестное входит в аргумент трансцендентных функций, называется трансцендентным уравнением. Для решения их, предварительно приведенных к виду f(x)=0, используют функцию fzero. Формат ее вызова таков: [x,y]=fzero(name,x0); где name имя М-функции, вычисляющей левую часть уравнения вида f(x)=0.

x0 начальное приближение или интервал его изоляции [a, b];

Например пусть f(x)= 0.2ex -2(х-1)2 тогда см. рис.1.25

На рис.1.25 показано, что при трех разных интервалах изоляции корня найдены три различных корня, которые были помещены в массив х по одному, по мере их нахождения, как х(1), х(2) и х(3), а затем выведены в строчку все три как содержимое массива х.

Аналогично поступили со значениями функции у(1), у(2) и у(3). Их нахождение было важно для контроля того, что действительно значения функции очень близки к нулю (они все получились порядка 10-15, что практически и есть ноль, с учетом вычислительных погрешностей).

Слева на рис.1.25 видно окно Workspace, где отображены значения переменных и их тип. В принципе, в данной задаче эта информация дублируется в обоих окнах (то есть в Command Window и в Workspace).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: