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

6.4. Символьное решение уравнений

6.4.1. Решение отдельных уравнений

Команда x=solve(f) – решение уравнения, заданного символьно или в виде строкового вы­ражения; если знак равенства не указан, предполагается, что :

сравните:

» f='a*x^2+b*x+c'; solve(f) % или » f='a*x^2+b*x+c=0'; solve(f)

ans =

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

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

» syms a b c x

и

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

ans =

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

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

Команда x=solve(f,v) – решение уравнения относительно переменной v:

» solve(f,a)

ans =

-(b*x+c)/x^2

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

Пусть требуется решить систему из двух уравнений

В этом случае решение будет иметь вид

» syms x y

» f1=x^2+x*y+y-3; f2=x^2-4*x+3; [x y]=solve(f1,f2)

x =

[ 1]

[ 3]

y =

[ 1]

[ -3/2]

Другой вариант решения:

» syms x y

» f1=x^2+x*y+y-3; f2=x^2-4*x+3; u=solve(f1,f2)

u =

x: [2x1 sym]

y: [2x1 sym]

» disp(u.x)

[ 1]

[ 3]

» disp(u.y)

[ 1]

[ -3/2]

Упражнение. Решить уравнение .

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

Функция r=dsolve(‘eq1’,’eq2’,…,’cond1’,’cond2’,…) вычисляет аналитическое решение ОДУ eq1, eq2,… с учетом начальных условий cond1, cond2,… По умолчанию независимой переменной является t. Символ D означает дифференцирование, т.е. ; . Результат зависит от исходных данных:

а) для одного уравнения и одного выходного аргумента – одномерный или многомерный массив ячеек;

б) для систем уравнений с одинаковым числом выходных переменных и аргументов – решения упорядочены по именам переменных в алфавитном порядке;

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

Рассмотрим примеры:

Решим ДУ 1-го порядка: .

» f='Dy=-a*y';

» y=dsolve(f) % без учета начальных условий

y =

exp(-a*t)*C1

» y=dsolve(f,'y(0)=1') % начальное условие учтено (С1=1)

y =

exp(-a*t)

Решим ДУ 2-го порядка: – уравнение осциллятора без демпфирования:

» f='D2y+a^2*y=0'; disp(dsolve(f))

C1*sin(a*t)+C2*cos(a*t)

» disp(dsolve(f,'Dy(0)=1','y(0)=0'))

1/a*sin(a*t)

Решим систему ДУ:

» [x y]=dsolve('Dx=y','Dy=-x','x(0)=0','y(0)=1')

x =

sin(t)

y =

cos(t)

Упражнение. Решить ДУ

7. Пакет моделирования динамических систем simu­link

Simulink – программа, предназначенная для моделирования динамических систем; она является пакетным расширением системы MATLAB, обладает многими ее свойствами и предъявляет аналогичные требования к аппаратной части компьютера. Simulink использует новый тип окон, в которых создаются блок-схемы (модели, или, как их иногда называют, S-модели) исследуемых систем. При этом имеется возможность наблюдать за ходом моделирования, варьировать параметры и характеристики отдельных бло­ков, а также размеры рабочего окна. В настоящем пособии рассматривается версия 2.2.

Simulink имеет обширную библиотеку блочных компонентов и удобный редактор блок-схем – разновидность средств визуального программирования. Технически модель создается достаточно просто: выбирая нужные компоненты из библиотеки, пользователь с помощью мыши переносит их в рабочее окно модели (технология Drag & Drop), соответствующим образом соединяет их между собой и настраивает. Модели хранятся в файлах с расширением .mdl. Модель может иметь сложную иерархическую структуру, т.е. включать модели нескольких более низких уровней. Гибкость системы MATLAB проявляется и в данном случае, поскольку пользователь может дополнять стандартные библиотеки собственными блоками.

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

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