Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
4.6 Mб
Скачать

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

Для нахождения решения уравнения (в том числе нелинейного) и систем уравнений в символьном виде используется функция solve, обращение к которой в общем случае имеет вид:

solve(expr1, expr2, ..., exprN, var1, var2, ..., varN)

и которая возвращает значения переменных var1, var2, …, varN, при которых соблюдаются равенства, заданные выражениями expr1, expr2, … exprN. Рассмотрим ниже работу этой функции на примерах.

Решим уравнение относительно переменной . Имеем:

>> syms a0 a1 x

>> S=a1*x+a0

S =

a0 + a1*x

>> solve(S,x)

ans =

-a0/a1

Пусть требуется решить уравнение относительно переменной . Имеем:

>> syms a0 a1 a2 x

>> S=a2*x^2+a1*x+a0

S =

a2*x^2 + a1*x + a0

>> solve(S,x)

ans =

-(a1 + (a1^2 - 4*a0*a2)^(1/2))/(2*a2)

-(a1 - (a1^2 - 4*a0*a2)^(1/2))/(2*a2)

Пусть требуется найти корни полинома . Имеем:

>> syms x

>> solve(x^3+3*x^2+3*x+1,x)

ans =

-1

-1

-1

Пусть требуется решить уравнение относительно переменной . Имеем (заметим, что функция solve возвращает лишь значения корней, находящихся в интервале ):

>> solve('cos(x)+sin(x)=1',x)

ans =

0

pi/2

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

Имеем:

>> syms x y alpha

>> [X,Y]=solve(x^2*y^2-1, x-y/4-alpha)

X =

alpha/2 + (alpha^2 + 1)^(1/2)/2

alpha/2 - (alpha^2 + 1)^(1/2)/2

alpha/2 + ((alpha - 1)*(alpha + 1))^(1/2)/2

alpha/2 - ((alpha - 1)*(alpha + 1))^(1/2)/2

Y =

2*(alpha^2 + 1)^(1/2) - 2*alpha

- 2*alpha - 2*(alpha^2 + 1)^(1/2)

2*((alpha - 1)*(alpha + 1))^(1/2) - 2*alpha

- 2*alpha - 2*((alpha - 1)*(alpha + 1))^(1/2)

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

Имеем:

>> [x1,x2]=solve('a1*x1+b1*x2=c1','a2*x1+b2*x2=c2')

x1 =

-(b1*c2 - b2*c1)/(a1*b2 - a2*b1)

x2 =

(a1*c2 - a2*c1)/(a1*b2 - a2*b1)

§ 2.27. Визуализация результатов символьных вычислений

2.27.1. Построение двумерных графиков.

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

Построить график функции одной переменной можно с использованием функции ezplot, обращение к которой имеет вид:

ezplot(func [, xmin, xmax])

где func – символьное выражение, задающее функцию одной переменной; xmin и xmax – границы отрезка, на котором требуется построить график функции, причем если эти границы не указываются (т.е. указан лишь один параметр при обращении к функции ezplot, то график будет построен на интервале .

Построим график функции (рис. 2.27.1):

>> syms x

>> ezplot(cos(x/2)+cos(5*x)/5)

Кривая на рис. 2.27.2 получена в результате выполнения команды

>> ezplot(cos(x/2)+cos(5*x)/5,[-15 15])

На рис. 2.27.3 приведен график разрывной функции :

>> syms x

>> ezplot(x/(x^2-4))

Важной особенностью функции ezplot является возможность построения графика функции, заданной неявно (неявной функции). Для этого команда должна быть вызвана в формате

ezplot(func [, xmin, xmax, ymin, ymax])

где xmin и xmax – пределы изменения первого по алфавиту аргумента симметричной функции ; ymin и ymax – тоже для второго аргумента.

На рис. 2.27.4 приведен график функции после команды вида

>> ezplot('x^2/5+y^2/7-1')

а на рис. 2.27.5 приведен график той же функции, но при обращении

>> ezplot('x^2/5+y^2/7-1',[-2.5 2.5 -4 4])

Построим теперь график функции (рис. 2.26.6):

>> syms x y

>> ezplot(x^3-y^4)

>> ezplot(x^4-y^6)

Функция ezplot позволяет также отображать параметрические функции. Для этого используется следующий синтаксис вызова:

ezplot(X, Y [, tmin, tmax])

где X и Y – символьные выражения, задающие правые части уравнений и ; [tmin, tmax] – границы изменения параметра (если они не указаны, то принимается, что ).

Построим, например, график параметрически заданной функции вида , , . Имеем (рис. 2.27.7):

>> ezplot('cos(t)+t*sin(t)','sin(t)-t*cos(t)',[0 4*pi])

Для построения графика функции в полярных координатах используется команда

ezpolar(func, [, alpha, beta])

где func – символьное выражение, задающее правую часть заданной в полярной системе координат функции ; [alpha, beta] – интервал изменения переменной (по умолчанию принимается ).

Рис. 2.27.1. График функции .

Рис. 2.27.2. График функции при .

Рис. 2.27.3. График функции .

Рис. 2.27.4. График функции .

Рис. 2.27.5. График функции .

Рис. 2.26.6. График функции .

Рис. 2.27.7. График функции , .

Рис. 2.27.8. График функции .

Построим, например, график функции (рис. 2.27.8):

>> ezpolar('sin(7*fi)')

Построим график функции (рис. 2.27.9):

>> syms t

>> ezpolar(1+sin(t))

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]