Материал: MATLAB 5. Анализ технических систем. Слепокуров Ю.С

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

»[R,HOW]=simple(cos(x)+i*sin(x))

R = exp(i*x) HOW = convert(exp)

»[R,HOW]=simple(cos(3*acos(x)))

R = 4*x^3-3*x HOW = expand

numden

Приведение к рациональной форме

 

 

Функция [N,D] = numden(A) преобразует каждый элемент массива А в рациональную форму в виде отношения двух неприводимых полиномов с целочисленными коэффициентами. При этом N и D - числители и знаменатели каждого преобразованного элемента массива. Пример:

» [n, d]=numden(x*y+y/x) n =

y*(x^2+1) d =

x

subs

Обеспечение подстановок

 

 

Одной из самых эффектных и часто используемых операций символьной математики является операция подстановки. Она реализуется функцией subs, имеющей ряд форм записи:

subs(S) заменяет в символьном выражении S все переменные их символьными значениями, которые берутся из вычисляемой функции или рабочей области системы MATLAB;

subs(S,NEW) - заменяет все свободные символьные переменные в S из списка NEW;

subs(S,OLD,NEW) - заменяет OLD на NEW в символьном выражении S. При одинаковых размерах массивов OLD и NEW замена идет поэлементно. Если S и OLD - скаляры, a NEW - числовой массив или массив ячеек, то скаляры расширяются до массива результатов;

если подстановка subs(S, OLD ,NEW) не меняет S, то выполняется подстановка subs(S, NEW, OLD);

subs(S, OLD, NEW, 0) - исключает попытку обратной подстановки. Примеры:

» subs(x-y,y,1) ans =

x-1

» subs(sin(x)+cos(x),[x,y],[a,b]) ans =

sin(a)+cos(a)

solve

Решение алгебраических уравнений

 

 

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

solve(expr1,expr2,...,exprN,var1,var2,...varN) - возвращает значения пере-

менных vari, при которых соблюдаются равенства, заданные выражениями expri. Если в выражениях не используются знаки равенства, то полагается expri = 0;

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

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

для одного уравнения и одной переменной решение возвращается в виде одномерного или многомерного массива ячеек;

при одинаковом числе уравнений и переменных решение возвращается в упорядоченном по именам переменных виде;

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

Примеры:

»solve(x^3-1,x)

ans =

[ 1]

[ -1/2+1/2*i*3^(1/2)] [ -1/2-1/2*i*3^(1/2)]

» solve(x^2+5*x+6,x) ans =

[ -3] [ -2]

»syms a b c

»solve(a*x^2+b*x+c)

ans =

[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

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

x:[3x1 sym]

y:[3x1 sym]

»s.x

ans = [ 4] [ 1] [ 1]

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

dsolve

Решение дифференциальных уравнений

 

 

Для решения дифференциальных уравнений в форме Коши MATLAB имеет следующую функцию dsolve.

dsolve('eqn1','eqn2', ...) возвращает аналитическое решение системы дифференциальных уравнений с начальными условиями. Они задаются равенствами eqni (вначале задаются уравнения, затем начальные условия).

По умолчанию независимой переменной считается переменная 't', обычно обозначающая время. Можно использовать и другую переменную, включив ее в конец списка параметров функции dsolve. Символ D обозначает производную

по независимой переменной, то есть ddt , при этом D2 означает d 2 dt 2 и так

далее. Имя независимой переменной не должно начинаться с буквы D. Начальные условия задаются в виде равенств 'у(а) = b' или 'Dy(a) = b', где

у независимая переменная, а и b константы. Если число начальных условий меньше, чем число дифференциальных уравнений, то в решении будут присутствовать произвольные постоянные Cl, C2 и так далее. Правила вывода подобны приведенным выше для функции solve.

Примеры применения функции dsolve:

» dsolve('D2x=-2*x')

ans = C1*sin(2^(1/2)*t)+C2*cos(2^(1/2)*t)

» dsolve('D2y=-2*x+y','y(0)=1','x')

ans = 2*x+C1*sinh(x)+cosh(x)

finverse

Обращение функции

 

 

Часто возникает необходимость в задании функции, обратной по отношению к заданной функции f. Для этого в Symbolic имеется функция обращения finverse, которая задается в двух формах:

g = finverse(f) - возвращает функцию, обратную f Считается, что f - функция одной переменной, например 'х'. Тогда g(f(x)) = х;

g=finverse(f, v) - возвращает функцию, обратную f, относительно заданной переменной v, так что g(f(v)) = v. Эта форма используется, если f - функция ряда переменных.

Примеры:

» finverse(sinh(x))

ans = asinh(x)

» finverse(exp(x)) ans =

log(x)

compose

Суперпозиция функций

 

 

К числу часто встречаемых в символьной математике манипуляций с функциями относится суперпозиция функций, реализуемая функциями compose:

compose(f,g) - возвращает f(g(y)), где f = f(x) и g = g(y). Независимые переменные х и у находятся с помощью функции findsym;

compose(f,g,z) - возвращает f(g(z)), где f = f(x), g = g(y);

compose(f,g,x,z) - возвращает f(g(z)) и при этом рассматривает х как независимую переменную х для функции f. Так, если f = cos(x/t), то compose(f,g,x,z) возвращает cos(g(z)/t), a compose(f,g,t,z) возвращает cos(x/g(z)); compose(f,g,x,y,z) - возвращает f(g(z)) и рассматривает х как независимую переменную для функции f и у - как независимую переменную для функции g.

Для f = cos(x/t) и g=sin(y/u) compose(f,g,x,y,z) возвращает cos(sin(z/u)/t), a compose(f,g,x,u,z) возвращает cos(sin(y/z)/t).

Примеры:

»f=1/(1+x^2); g=sin(y); h=x^t; p=exp(-y/u);

»compose(f,g)

ans = 1/(sin(y)^2+1)

» compose(f,g,t) ans = 1/(sin(t)^2+1)

» compose(h,g,x,z) ans =

sin(z)^t

» compose(h,g,t,z) ans =

x^sin(z)

» compose(h,p,t,u,z) ans =

x^exp(-y/z)

ezplot

Построение графиков символьных функций

 

 

Чтобы избавить пользователя от возни с вполне возможным построением графиков функций с помощью стандартных средств (например, команды plot), в пакет Symbolic введены довольно удобные команды класса ezplot:

ezplot(f) - строит график символьно заданной функции f(x) независимой переменной 'х'. Она определена в интервале [-2*pi, 2*pi];

ezplot(f, xmin, xmax) или ezplot(f, [xmin, xmax]) - делает то же, но позволяет задать диапазон изменения независимой переменной х от xmin до хmах;

ezplot(f, [xmin xmax], fig) - обеспечивает спецификацию графика с помощью параметра fig.

Команды класса ezplot позволяют строить графики функций, имеющих особенности более наглядно, чем функция plot. Примером такого рода является построение графика функции tan(x), имеющего разрывы:

Источник: https://studfile.net/preview/16565812/