Интерактивна система за технически изчисления, визуал...
Download
1 / 114

???????????? ??????? ?? ?????????? ??????????, ????????????? ? ???????????? ( MATLAB ) ?????????? - PowerPoint PPT Presentation


  • 208 Views
  • Uploaded on

Интерактивна система за технически изчисления, визуализиране и програмиране ( MATLAB ) Приложение математически изчисления; разработка на алгоритми; моделиране, симулиране и създаване на прототипи; представяне, визуализиране и анализ на данни; графика;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '???????????? ??????? ?? ?????????? ??????????, ????????????? ? ???????????? ( MATLAB ) ??????????' - hasana


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Matlab

  • Интерактивна система за технически изчисления, визуализиране и програмиране (MATLAB)

  • Приложение

  • математически изчисления;

  • разработка на алгоритми;

  • моделиране, симулиране и създаване на

    прототипи;

  • представяне, визуализиране и анализ на данни;

  • графика;

  • разработка на приложения с графичен

  • потребителски интерфейс.

  • Включва специални приложения (toolboxes) за обработка на сигнали, системи за управление, невронни мрежи, симулация и др.


Matlab

  • Характеристики на системата технически изчисления, визуализиране и програмиране (MATLAB

  • MATLAB език – език от високо ниво за обработка на матрици;

    • включва: оператори, функции, структури данни,

    • вход/изход, обектно-ориентирано

    • програмиране;

  • Работна среда на MATLAB –средства за управление на променливите в работната среда, внасяне и изнасяне на данни; разработка и управление на М-файлове, MATLAB приложения.

  • Управление на графика – двумерна и тримерна визуализация, обработка на изображения, анимация и представяне на графики; изграждане на графичен потребителски интерфейс.


Matlab

  • Библиотека с математически функции – сума, тригонометрични функции, комплексна аритметика, обръщане на матрица, Беселови функции, бързи трансформации на Фурие и др.

  • Интерфейс за приложни програми – динамично свързване на модули, написани на C, C++, Java или Fortran с модули от MATLAB.


Matlab

Стартиране на функции MATLAB

StartPrograms MATLAB 6.5


Matlab

Команден прозорец за въвеждане на променливи и изпълнение на функции и М-файлове

Помощ

Текуща директория – за управление на директории и файлове

Работно пространство – за изобразяване на променливите

История на командите – за наблюдение изпълнението на архивни команди

Старт – за изобразяване на документация, демо програми и специални приложения


Matlab

MATLAB на променливи и изпълнение на функции и М-файловекато мощен калкулатор

»указва въвеждане на команда

; блокира извеждане на резултата

ans променлива със стойността на резултата

= присвояване

fun()вградена функция

... пренасяне на израз на нов ред


Matlab

» на променливи и изпълнение на функции и М-файлове 2+3

ans =

5

» x=sin(0.5)

x =

0.4794

» V=[1 2 3 4];

» sin(V)

ans =

0.8415 0.9093 0.1411 -0.7568

» exp(V)

ans =

2.7183 7.3891 20.0855 54.5982

» magic(3)

ans =

8 1 6

3 5 7

4 9 2

вградена функция

вектор

блокира извеждане на резултата

вградена функция

MAGIC(N) е NxN матрица от целите числа 1N2с еднакви суми във всеки ред, стълб и диагонали, където N>0 без N=2.


Matlab

Типове данни на променливи и изпълнение на функции и М-файлове

15 типa данни (или класове)

Всеки тип данни е във формата на масив.

Двумерният масив се нарича матрица.

Едномерният масив се нарича вектор.

Матрица 1x1 се нарича скалар.


Matlab

  • Оператори на променливи и изпълнение на функции и М-файлове

  • Аритметични оператори


Matlab

» на променливи и изпълнение на функции и М-файлове A=[7 2;4 3];

» B=[1 4;6 7];

» A+B

ans =

8 6

10 10

» A*B

ans =

19 42

22 37

% поелементно

» A.*B

ans =

7 8

24 21

» A.^B

ans =

7 16

4096 2187

% ляво деление

» A\B

ans =

-0.6923 -0.1538

2.9231 2.5385

» inv(A)*B

ans =

-0.6923 -0.1538

2.9231 2.5385

% дясно деление

» B/A

ans =

-1.0000 2.0000

-0.7692 2.8462

» B*inv(A)

ans =

-1.0000 2.0000

-0.7692 2.8462

Функция inv(A) – обръща матрицата А.


Matlab

Пример:А==B– сравнява матриците елемент-по-елемент, Aи B трябва да са с еднакви размери, резултантната матрица показва дали съответните елементи от Aи B са равни.

» A=[1 2 3;4 5 6;7 8 9];

»B=[1 5 10;2 5 8;4 7 9];

» A==B

ans =

1 0 0

0 1 0

0 0 1


Matlab

  • Логически оператори на променливи и изпълнение на функции и М-файлове

  • 3.1. Поелементни логически оператори и функции

  • »А=[0 1 1 0 1];

  • »B=[1 1 0 0 1];


Matlab

3.2. Побитови логически функции на променливи и изпълнение на функции и М-файлове

»А=28;% двоично 11100

»B=21;% двоично 10101


Matlab

3. на променливи и изпълнение на функции и М-файлове3. Къси логически оператори (за скалари)

»А=28;

»B=-21;


Matlab

Изрази на променливи и изпълнение на функции и М-файлове

Израз – състои се от операнди и операции; операндите могат да бъдат променливи, константи или функции.

  • Променливи

  • автоматично се създава променлива за всяко име и се отделя необходимата памет;

  • името на променливата се състои от букви, цифри, знак за подчертаване (_), като MATLAB използва първите 31 символа;

  • различава малки и главни букви.

  • »A=10% създава се 1x1 матрица с име А и един елемент със стойност 10

  • А =

  • 10


Matlab

  • Числа – съхраняват се с дълга плаваща запетая (16 значещи цифри, област 10-308 до 10+308).

    Начини за представяне:

  • десетично представяне с незадължителна десетична точка и водещ знак плюс;

  • научно представяне чрез буквата е, определяща 10 на степен;

  • имагинерните числа използват като суфикс iилиj.

    10 -430.001

    3.4632987 1.63е-20 1.43i


Matlab

  • Комплексно число плаваща запетая (16 значещи цифри, област 10

  • модул (амплитуда)

  • m=abs(z)връща модула (амплитудата) на z

  • фазов ъгъл

    theta=angle(z)връща фазовия ъгъл на zв радиани

    Комплексно число в полярни координати

  • »z=3+j*4;

  • % Конвертира z в полярни координати

  • »A=abs(z)

  • A =

  • 5

  • » theta=angle(z)

  • theta =

  • 0.9273

  • % Обратно конвертира до z=x+jy

  • »z=A*exp(j*theta)

  • z =

  • 3.0000 + 4.0000i


Matlab

  • Символи и коментари плаваща запетая (16 значещи цифри, област 10

  • Символна константа е последователност от

  • символи, заградени в апострофи ′.

  • Коментар започва със символа %.

  • »A=[′София ′;′Пловдив′]% матрица 2x7

  • А =

  • София

  • Пловдив

  • Оператори

  • аритметични оператори;

  • оператори за сравнение;

  • логически оператори.


Matlab

4.1. Оператор плаваща запетая (16 значещи цифри, област 10:

a:b– резултатът е вектор-ред, съдържащ числата

отaдо bсъс стъпка 1.

a:c:b – резултатът е вектор-ред, съдържащ числата

отaдо bсъс стъпка c.

»1:10% стъпка 1

ans =

1 2 3 4 5 6 7 8 9 10

»100:-10:50% стъпка -10

ans =

100 90 80 70 60 50


Matlab

  • Функции плаваща запетая (16 значещи цифри, област 10

  • аbsабсолютна стойност

  • sqrt корен квадратен

  • еxp е на степен

  • sin синус

  • clear изчиства променливите и функциите от

  • паметта

  • clear allизчиства всички променливи, глобални

  • променливи, функции и връзки

  • close затваря фигура

  • close allзатваря всички прозорци с фигури

  • help получаване на помощ

  • format установява изходния формат

  • Константи:

  • pi 3.1459265

  • i имагинерна единица -1

  • j имагинерна единица -1

  • »help elfun% елементарни математически функции

  • »help specfun% специални математически функции

  • »help elmat% матрични функции


Matlab

» плаваща запетая (16 значещи цифри, област 10format short% мащабиран формат с фиксирана точка с 5 цифри

»format long% мащабиран формат с фиксирана точка с 15 цифри

»format hex% шестнадесетичен формат

»format rat% апроксимация чрез отношение от малки цели числа


Matlab

Примери: плаваща запетая (16 значещи цифри, област 10

»s=(1+sqrt(10))/2

s =

2.0811

» n=1:5 % оператор : -> вектор-ред

n =

1 2 3 4 5

» n=n'% оператор ' (транспониране) -> вектор-стълб

n =

1

2

3

4

5

» x=n.^2% оператор .^ (поелементно повдигане на степен)

x =

1

4

9

16

25


Matlab

Изчертаване на графики плаваща запетая (16 значещи цифри, област 10


Matlab

цвят плаваща запетая (16 значещи цифри, област 10_линиятип_линиятип_маркер

rчервен- плътна+

bсин-- тиретаo

gзелен-. тирета и точки*

wбял. от точки.

kчерен: двуеточияx

cсиньо зеленnone без линия

mпурпурен

yжълт


Matlab

Пример плаваща запетая (16 значещи цифри, област 10: Изчертава синусоида в интервала .

»t=0:pi/100:2*pi;

»y=sin(t);

»plot(t,y)

» polar(t,y)


Matlab

Пример плаваща запетая (16 значещи цифри, област 10: Изчертава синусоида.

»t=-pi:pi/100:pi;

»y=sin(t);

»plot(t,y);

»axis([-pi pi -1 1]);

»xlabel('-\pi \leq \itt \leq \pi');

»ylabel('\itsin(t)');

»title('Графика на функцията синус');

»grid on

\piстойност на 

\leq≤

\itкурсивен шрифт


Matlab

Пример плаваща запетая (16 значещи цифри, област 10: Изчертаваспрямо в интервала

.

» x=0.1:0.1:100;

» loglog(x,exp(x)),grid on

Пример: Изчертава спрямо в интервала

.

» x = 0:.1:10;

» semilogy(x,10.^x)


Matlab

» плаваща запетая (16 значещи цифри, област 10y1=sin(t);

»y2=cos(t);

»subplot(211),plot(t,y1)

»subplot(212),plot(t,y2)

»subplot(111)


Matlab

» плаваща запетая (16 значещи цифри, област 10plot(t,y1,t,y2)


Matlab

» плаваща запетая (16 значещи цифри, област 10t = 0:pi/100:10*pi;

» y1=sin(t);

»y2=cos(t);

»plot3(y1,y2,t);

»grid on;


Matlab

Пример плаваща запетая (16 значещи цифри, област 10: Изчертава дискретен сигнал y[x].

» x=1:5;

»y=[1 2 3 4 5];

»stem(x,y)

»stem(x,y,'filled')

»stem(x,y,'--')


Matlab

Пример: плаваща запетая (16 значещи цифри, област 10 Изчертава дискретния във времето

сигнал x[n], зададен чрез следните стойности:

x[0]=1, x[1]=2, x[2]=1, x[3]=0, x[4]=-1, където x[n]=0

за всяко друго n. Нека векторът n да съдържа

стойностите на времето в интервал от -2 до 6sс

нарастване 1s.

» n=-2:6;

» x=[0 0 1 2 1 0 -1 0 0];

» stem(n,x,'filled')

» xlabel('n')

» ylabel('x[n]')


Matlab

Пример: плаваща запетая (16 значещи цифри, област 10 Непрекъснатият сигнал

се прилага към електронен ключ, който се

затваря за много кратко вереме на всеки Т

секунди. Изчертава модулирания сигнал –

функция на дискретните точки на времето ,

където n=...,-2,-1,0,1,2,..., а Т се нарича период на

модулация. Нека Т=1s, n[0,30] и x[-1,1].

» n=0:30;

» t=0:30;

» x=exp(-0.1*t).*sin(2/3*t);

» axis([0 30 -1 1])

» stem(n,x,'filled')

» xlabel('n')

» ylabel('x[n]')


Matlab

  • Пример: плаваща запетая (16 значещи цифри, област 10 Изчертава периодичния дискретен сигнал

    • за две стойности на : 1=/3 и 2=1,

  • където =0, А=1. Нека n[-10,30] и x[-1.5,1.5];

  • възстановете възможността за изчертаване върху

  • целия прозорец.

  • » n=-10:30;

  • » OMEGA1=pi/3;

  • » OMEGA2=1;

  • » x1=cos(OMEGA1*n);

  • » x2=cos(OMEGA2*n);

  • » subplot(211),stem(n,x1,'filled')

  • » xlabel('n')

  • » ylabel('x[n]')

  • » axis([-10 30 -1.5 1.5])

  • » subplot(212),stem(n,x2,'filled')

  • » xlabel('n')

  • » ylabel('x[n]')

  • » axis([-10 30 -1.5 1.5])

  • » subplot(111)


Matlab

  • Матрици плаваща запетая (16 значещи цифри, област 10

  • Определения

  • Матрица е правоъгълен масив от числа.

  • Скалар е 1x1 матрица.

  • Вектор е матрица само с един ред или стълб.

  • Въвеждане на матрици чрез явен списък от елементи – матрицата се запомня автоматично в работното пространство.

  • » А=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]

  • A =

  • 16 3 2 13

  • 5 10 11 8

  • 9 6 7 12

  • 4 15 14 1


Matlab

  • Обръщение към матрица – чрез нейното име.

  • » А

  • A =

  • 16 3 2 13

  • 5 10 11 8

  • 9 6 7 12

  • 4 15 14 1

  • Сума от елементите във всеки стълб – резултатът е вектор-ред и се запазва в променливата ans.

  • »sum(А)

  • ans =

  • 34 34 34 34


Matlab

  • Сума от елементите на всеки ред – резултатът е вектор-стълб.

  • Алгоритъм:

  • транспониране на матрицата (операция ′);

  • изчисляване на сумите по стълбове;

  • транспониране на резултата.

  • » А′

  • ans =

  • 16 5 9 4

  • 3 10 6 15

  • 2 11 7 14

  • 13 8 12 1

  • »sum(А′)′

  • ans =

  • 34

  • 34

  • 34

  • 34


Matlab

  • Сума от елементите от главния диагонал.

  • »diag(А)

  • ans =

  • 16

  • 10

  • 7

  • 1

  • »sum(diag(А))

  • ans =

  • 34

  • Сума от елементите от второстепенния диагонал.

  • »sum(diag(fliplr(А)))

  • ans =

  • 34

  • Функциятаfliplrобръща матрицата отляво надясно.


Matlab

  • Индекси – елементът в ред диагонал.iи стълбj се означава чрез A(i,j).

  • а) достъп до елемент на матрицата

  • » А(4,2)

  • ans =

  • 15

  • б) сума от елементите в 4-тия стълб

  • » А(1,4)+A(2,4)+A(3,4)+A(4,4)

  • ans =

  • 34

  • в) достъп до елемент на масив чрез един индекс –масивът се съхранява по стълбове като един дълъг вектор-стълб; напр. достъп до елемент A(4,2):

  • » А(8)

  • ans =

  • 15


Matlab


Matlab


Matlab

  • Специални матрици диагонал.

  • zeros всички елементи са 0;

  • ones всички елементи са 1;

  • randправилно разпределени случайни числа;

  • randnнормално разпределени случайни числа;

  • magicмагически квадрат от степен N е NxN

  • матрица с елементи естествени числа от 1 до

  • N2 така, че сумата от числата във всеки

  • хоризонтал, вертикал или главен диагонал е

  • една и съща, равна на N(N2+1)/2;

  • pascal матрица на Паскал от степен N: симетрична

  • положително дефинирана матрица с

  • целочислени стойности, получени от

  • триъгълника на Паскал (първото и

  • последното число във всеки ред е 1,

  • а другите се получават като сума от двете

  • числа над него).


Matlab

» диагонал.o=ones(2,4)

o =

1 1 1 1

1 1 1 1

»A=magic(3)

A =

8 1 6

3 5 7

4 9 2

»A=pascal(3)

A =

1 1 1

1 2 3

1 3 6


Matlab

  • Слепване на матрици диагонал.

  • [] оператор за слепване

  • »A=magic(3)

  • A =

  • 8 1 6

  • 3 5 7

  • 4 9 2

  • » B=[A A+5;A+10 A+20]

  • B =

  • 8 1 6 13 6 11

  • 3 5 7 8 10 12

  • 4 9 2 9 14 7

  • 18 11 16 28 21 26

  • 13 15 17 23 25 27

  • 14 19 12 24 29 22


Matlab

  • Изтриване на редове и стълбове диагонал.

  • [] двойка квадратни скоби

  • » A=magic(3)

  • A =

  • 8 1 6

  • 3 5 7

  • 4 9 2

  • »A(2,:)=[]% изтрива втори ред от А

  • A =

  • 8 1 6

  • 4 9 2

  • » A(:,2)=[]% изтрива втори стълб от А

  • A =

  • 8 6

  • 4 2


Matlab

  • Изграждане на таблици диагонал.

  • » n=(0:9)';% вектор-стълб

  • » pows = [n n.^2]% таблица от квадратите на 2

  • pows =

  • 0 0

  • 1 1

  • 2 4

  • 3 9

  • 4 16

  • 5 25

  • 6 36

  • 7 49

  • 8 64

  • 9 81


Matlab

  • Вход/изход на информация диагонал.

  • въвеждане на информация в диалогов режим – чрез функция input;

  • » A=[1 2 3 4 5];

  • » A(6)=input('Enter A[6]=')

  • Enter A[6]=6

  • A =

  • 1 2 3 4 5 6

  • »name=input('Ime=','s')

  • Ime=Ivan

  • name =

  • Ivan


Matlab


Matlab

  • Закони в електрическите вериги функция

  • Първи закон на Кирхоф – сумата от токовете, излизащи от възел, е равна на нула.

  • Втори закон на Кирхов – сумата от напрежителните падове в клоните на затворен контур е равна на сумата от електродвижещите сили на източниците в този контур.

Уравнение на възловите напрежения

[Y][U]=[I][Y] –матрица на проводимостите,

[U]=[Y]-1[I][U]– вектор на напрежения, [I]– вектор на токове

» U=Y\I % ляво деление или » U=inv(Y)*I

Уравнение на контурните токове

[Z][I]=[U][Z] – матрица на съпротивленията

[I]=[Z]-1[U]

» I=Z\U % ляво деление или » I=inv(Z)*U


Matlab

Пример: функция Изчисление на токапрез резистора RB и мощността на постояннотоковия източник на напрежение по метод на контурните токове.

Уравнение на контурните токове

Z – матрица на съпротивленията

I– вектор на контурните токове

U – вектор на напреженията


Matlab

» функция % Уравнение на контурните токове ZI=U

»% Матрица на съпротивленията Z

»Z=[40 -10 -30;-10 30 -5;-30 -5 65];

»% Вектор на напреженията U

»U = [10;0;0];

»% Вектор на контурните токове I

»I=Z\U % или I=inv(Z)*U

»IRB=I(3)-I(2)% ток през съпротивлението RB

»P=I(1)*10% мощност на захранващия източник

I =

0.4753

0.1975

0.2346

IRB =

0.0370

P =

4.7531


Matlab

  • Файлова система функция MATLAB

  • Видове файлове:

  • .mat– двоичен файл, в който се записваработната сесия на системата.

  • Запазване съдържанието на работнатасесия във

  • файл име.mat

  • »save име

  • Зареждане на работната сесия от файл име.mat

  • »load име


Matlab

  • .m функция – текстов файл, който съдържа функции и скриптове.

  • файл-скрипт – съдържа команди на MATLAB:

    • обработва съществуващи данни в работното пространство или създава нови данни;

    • създадените променливи остават в работното пространство;

  • файл-функция – има входни аргументи и връща изходни резултати:

    • името на m-файла и името на функцията съвпадат;

    • обработва променливи в тяхното собствено работно пространство, различно от основното.


Matlab

  • Създаване на функция .m файл от командния прозорец

    • FileNew M-file

  • Запазване на .m файл от командния прозорец

    • FileSave As…

  • Промяна на директорията за съхранение на .m

  • файловете

  • FileSet Path


Matlab

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

Файл-скрипт my.m

FileNew M-file

A=[…

16.0 3.0 2.0 13.0

5.0 10.0 11.0 8.0

9.0 6.0 7.0 12.0

4.0 15.0 14.0 1.0];

FileSave As… my

Скриптът създава в работното пространство на MATLABпроменлива А, която съдържа матрица.

  • Изпълнение на .m файл

  • в работното пространство

  • »my

  • »A

  • A =

  • 16 3 2 13

  • 5 10 11 8

  • 9 6 7 12

  • 4 15 14 1

Операторътmy чете от файла my.m и използвасъздадената променлива А, която съдържа

матрицата.


Matlab

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

Файл-функция my.m

FileNew M-file

function y=my()

y=[...

16.0 3.0 2.0 13.0

5.0 10.0 11.0 8.0

9.0 6.0 7.0 12.0

4.0 15.0 14.0 1.0];

FileSave As… my

FileCompile

Функцията е с име my, няма входни параметри и връща матрица.

Изпълнение на .m файл

– в работното пространство

»A=my

A =

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Извиква се функцията my и върнатият резултат се присвоява на променливата А, която получава матрицата.


Matlab

Глобални променливи функция

  • global X

  • X– глобална променлива;

    • ако Xсе дефинира в няколко функции и в работното пространство като global, тогава те споделят единствено копие на X;

    • инициализира се с празна матрица.


Matlab

Пример функция : Изследване на влиянието на фазата φ

върху напрежението на независимия източник на

напрежение .

Файл-функция vcos.m:

function u = vcos(t)

global FI % фаза

uA=0.33E-3; % амплитуда=0.33mV

f=50; % честота=50HzFigure No. 1

u=uA*cos(2*pi*f*t+FI);

Изпълнение

» figure(1);

» t=0:0.001:0.2;

»global FI

» FI=0;

»u=vcos(t);

»plot(t,u);

» hold on;

» FI=45;

»u=vcos(t);

»plot(t,u);


Matlab

  • Управляващи структури функция

  • Условен операторif

    • ifизраз

    • оператори

    • elseifизраз

    • оператори

    • elseизраз

    • оператори

    • end

  • Условен операторswitch

    • switchswitch_израз

    • casecase_израз,

    • оператор,…,оператор

    • case {case_израз,...,case_израз}

    • оператор,…,оператор

    • ...

    • otherwise

    • оператор,…,оператор

    • end


Matlab

3. функция Оператор за цикъл for

forпроменлива=старт:нарастване:край,

оператори

end

4. Оператор за цикъл while

whileизраз

оператори

end

5. Оператор за прекъсване на цикъл break –

прекъсва изпълнението на whileили for.


Matlab

» функция for k=1:10,

x(k)=cos(k);

еnd

»x

x =

0.5403 -0.4161 -0.9900 -0.6536 0.2837 0.9602 0.7539 -0.1455 -0.9111 -0.8391

или

» k=1:10;

» x=cos(k);

»x

»a=2;

»b=5;

»if(a>b) c=a;

else c=b;

end

»c

c =

5


Matlab

Пример функция : 3-битов А/D конвертор

Преобразува аналоговия

сигнал xв цифров сигнал y

съгласно уравнението:

Файл-функция AD3.m:

function y=AD3(x)

if x<-2.5y=0;

elseif x<-1.5y=1;

elseif x<-0.5y=2;

elseif x<0.5y=3;

elseif x<1.5y=4;

elseif x<2.5y=5;

elseif x<3.5y=6;

else

y=7;

end

Изпълнение

»y1=AD3(-1.25)

y1 =

2

»y2=AD3(2.57)

y2 =

6

»y3=AD3(6.0)

y3 =

7




Matlab

Интегриране функция.


Matlab

Нелинейни числени методи функция.

I. Числено решаване на обикновени диференциални уравнения

Всяко обикновено диференциално уравнение от n-ти ред може да се запише като система от n уравнения от първи ред така, че от лявата страна да се намират само производните, а от дясната страна производните да не участват:

ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb – всички функции решават системата от обикновени диференциални уравнения y'=f(t,y);

ode15s, ode23s, ode23tи ode23tb решават системи от вида my'=f(t,y), като от последните с изключение на ode23s решават уравненията m(t)y'=f(t,y).


Matlab

[t,y]=ode_function('f',tspan,yo) функция.

[t,y]=ode_function('f',tspan,yo,options)

[t,y]=ode_function('f',tspan,yo,options,p1,p2,...)

fе името на .m файла, който съдържа дясната страна на уравненията – функцията f(t,y)и връща вектор-стълб;

има вида:

function dydt = f(t,y)

където tе скалар, dydtиy са вектор-стълбове.

tspanе вектор, определящ интервала [t0 tfinal];

yo е вектор, определя началните условия;

options е незадължителен параметър, който се създава чрез функцията odeset;

p1,p2,...са незадължителни параметри, които се предават на f;

[t,y]е матрица на решението.


Matlab

Пример: функция. Уравнение на Ван дер Пол

с начални условия:

Еквивалентно е на система от диференциални уравнения от 1 ред:

с начални условия:


Matlab

Файл-фукция функция. vdp.m:

function dy=vdp(t,y) % u=1

dy=zeros(2,1);

dy(1)=y(2);

dy(2)=(1-y(1)^2)*y(2)-y(1);

% t=0 до 20s

t0=0; tfinal=20;

y0=[2; 0]; % начални условия

[t,y]=ode45('vdp',[t0 tfinal],y0);

plot(t,y(:,1),'b',t,y(:,2),'r')

Файл-фукцияvdp.m:

function dy=vdp(t,y,options,u)

dy=zeros(2,1);

dy(1)=y(2);

dy(2)=u*(1-y(1)^2)*y(2)-y(1);

% t=0 до 20s

t0=0; tfinal=20;

y0=[2; 0]; % начални условия

[t,y]=ode45('vdp',[t0 tfinal],y0,[],5);

plot(t,y(:,1),'b',t,y(:,2),'r')


Matlab

  • Анализ на преходни процеси функция.

  • RC верига

  • а) разреждане на кондензатор

  • –времеконстанта

  • Ако кондензаторът е бил

  • зареден до напрежение ,

  • аналитичното решение е:


Matlab

б) функция. зареждане на кондензатор

Ако кондензаторът не е бил

зареден, т.е. ,

аналитичното решение е:


Matlab

Пример: функция. В момента t=0 ключът се затваря и RC

веригата се свързва към източник на ток. Да се

изчисли напрежението върху кондензатора, ако

R=10, C=10F и е приложен постоянен източник

на ток I=1A.


Matlab

  • Файл-функции – зареждане на кондензатор

  • RC1diff.m – диференциално уравнение

  • function duc=RC1diff(t,uc,options,I,R,C)

  • tau=R*C;

  • duc(1)=-uc(1)/tau+I/C;

  • RC1.m – аналитично решение

  • function u=RC1(R,C,I,t)

  • tau=R*C;

  • u=I*R*(1-exp(-t/tau))


Matlab

% RC верига кондензатор – зареждане на кондензатор

t0=0; % начално време

tfinal=0.003; % крайно време

uc0=0; % начално условие uc(t=0)=0

I=1;C=10e-6;R=10;

[t1,uc1]=ode45('RC1diff',[t0 tfinal],[uc0],[],I,R,C); % числено решение

u1=RC1(R,C,I,t1); % аналитично решение

% Графика на uc=f(t)

subplot(121),plot(t1,uc1)

axis([0 0.003 0 12])

xlabel('t[s]'),ylabel('uC[V]')

subplot(122),plot(t1,u1)

axis([0 0.003 0 12])

xlabel('t[s]'),ylabel('uC[V]')


Matlab

Пример: кондензатор Входното напрежение на RC веригата е

правоъгълен импулс с амплитуда 5V и ширина

0.5s. Да се изчисли напрежението върху

кондензатора за две стойности на R=2.5К и

R=10К, ако C=10F. Да се начертае графиката на

напрежението на кондензатора в зависимост от

времето.


Matlab

  • Файл-функции кондензатор

  • Разреждане на кондензатор

  • RCDdiff.m – диференциално уравнение

  • function duc=RCDdiff(t,uc,options,Um,R,C)

  • tau=R*C;

  • duc(1)=-uc(1)/tau;

  • RCD.m – числено решение

  • function u=RCD(R,C,Um,t)

  • tau=R*C;

  • u=Um*exp(-t/tau)

  • Зареждане на кондензатор

  • RCdiff.m– диференциално уравнение

  • function duc=RCdiff(t,uc,options,E,R,C)

  • tau=R*C;

  • duc(1)=-uc(1)/tau+E/tau;

  • RC.m– числено решение

  • function u=RC(R,C,E,t)

  • tau=R*C;

  • u=E*(1-exp(-t/tau))


Matlab

% RC верига кондензатор

t0=0; % начално време

tfinal=0.5; % крайно време

uc0=0; % начално условие uc(t=0)=0

E=5;% амплитуда на правоъгълния импулс

C=10e-6;

R=2.5e3;

% Числено решение

[t11,uc11]=ode45('RCdiff',[t0 tfinal],[uc0],[],E,R,C); % зареждане на C

Um=uc11(end);% начално условие

[t12,uc12]=ode45('RCDdiff',[t0 tfinal],[Um],[],Um,R,C); % разреждане на C

% Аналитично решение

u11=RC(R,C,E,t11); % зареждане на C

Um=u11(end); % начално условие

u12=RCD(R,C,Um,t12); % разреждане на C


Matlab

R=10e3; кондензатор

% Числено решение

[t21,uc21]=ode45('RCdiff',[t0 tfinal],[uc0],[],E,R,C);% зареждане на C

Um=uc21(end); % начално условие

[t22,uc22]=ode45('RCDdiff',[t0 tfinal],[Um],[],Um,R,C);% разреждане на C

% Аналитично решение

u21=RC(R,C,E,t21);% зареждане на C

Um=u21(end);% начално условие

u22=RCD(R,C,Um,t22);% разреждане на C

% Графика на uc=f(t) – числено решение

subplot(211),plot(t11,uc11,'b',t12+0.5,uc12,'b',t21,uc21,'r',t22+0.5,uc22,'r')

axis([0 1 0 6]),xlabel('t[s]'),ylabel('uC[V]')

text(0.4, 2.0, 'R=2.5K'),text(0.6, 2.0, 'R=10K')

% Графика на uc=f(t) – аналитично решение

subplot(212),plot(t11,u11,'b',t12+0.5,u12,'b',t21,u21,'r',t22+0.5,u22,'r')

axis([0 1 0 6]),xlabel('t[s]'),ylabel('uC[V]')

text(0.4, 2.0, 'R=2.5K'),text(0.6, 2.0, 'R=10K')


Matlab

  • RL кондензаторверига

  • а) разсейване на енергия в бобина

  • –време константа

  • Ако е началната стойност

  • на тока през бобината,

  • аналитичното решение е:


Matlab

б) натрупване на енергия в бобина кондензатор

Ако началната стойност

на тока през бобината е 0,

, решението е:


Matlab

Пример: кондензатор За схемата токът през бобината е 0. В

момента t=0 ключът се затваря към позиция 1,

където остава 1s. След това закъснение от 1s

ключът се премества от позиция 1 в позиция 2,

където остава неограничено време. Напрежението

на постоянотоковия източник е E=40V.

Елементите в схемата са: R1=50Ω, R2=50Ω,

R3=150Ω, L=200H.Да се начертае графиката на

тока през бобината спрямо времето.


Matlab

Файл-функции кондензатор

1. Разсейване на енергията в бобина

RLDdiff.m – диференциално уравнение

function diL=RLDdiff(t,iL,options,Im,R,L)

tau=L/R;

diL(1)=-iL(1)/tau;

RLD.m – числено решение

functioni=RLD(R,L,Im,t)

tau=L/R;

i=Im*exp(-t/tau)

2. Натрупване на енергия в бобина

RLdiff.m – диференциално уравнение

function diL=RLdiff(t,iL,options,E,R,L)

tau=L/R;

diL(1)=-iL(1)/tau+E/L;

RL.m– числено решение

function i=RL(R,L,E,t)

tau=L/R;

i=E/R*(1-exp(-t/tau))


Matlab

% кондензаторRL верига

R1=50;R2=50;R3=150;L=200;E=40;

R=R1+R2; % ключът е в позиция 1 – натрупване на енергия в L

t0=0; % начално време

tfinal=1; % крайно време

iL0=0; % начално условие iL(t=0)=0

[t1,iL1]=ode45('RLdiff',[t0 tfinal],[iL0],[],E,R,L); % числено решение

i1=RL(R,L,E,t1);% аналитично решение

R=R2+R3;% ключът е в позиция 2 – разсейване на енергия в L

t0=0;% начално време

tfinal=5; % крайно време

Im=iL1(end);% начално условие

[t2,iL2]=ode45('RLDdiff',[t0 tfinal],[Im],[],Im,R,L);% числено решение

Im=i1(end);% начално условие

i2=RLD(R,L,Im,t2);% аналитично решение

% Графика на iL=f(t) – числено решение

subplot(121),plot(t1,iL1,'r',t2+1,iL2,'r')

axis([0 6 0 0.18]),xlabel('t[s]'),ylabel('i[A]'),title('RL')

% Графика на iL=f(t) – аналитично решение

subplot(122),plot(t1,i1,'b',t2+1,i2,'b')

axis([0 6 0 0.18]),xlabel('t[s]'),ylabel('i[A]'),title('RL')


Matlab

  • RLC кондензатор верига


Matlab

Пример: кондензатор В момента t=0 ключът се затваря и RLC

веригата се свързва към източник на напрежение.

Да се изчисли напрежението върху

кондензатора, ако R=10, L=10mH, C=100F и е

приложен постоянен източник на напрежение

U=50V.


Matlab

Файл-функция кондензаторRLC.m – RLC верига

function dy=RLC(t,y,options,u,R,L,C)

dy=zeros(2,1);

a=1/L;b=R/L;c=1/C;

dy(1)=a*u-b*y(1)-a*y(2);

dy(2)=c*y(1);

% RLC верига

U=50;R=10;L=10e-3;C=100e-6;

t0=0;% начално време

tfinal=30e-3;% крайно време

iL0=0;% начално условие iL(t=0)=0

uC0=0; % начално условие uC(t=0)=0

[t,x]=ode45('RLC',[t0 tfinal],[iL0 uC0],[],U,R,L,C); % числено решение

plot(t,x(:,1),'b',t,x(:,2),'r')

axis([0 30e-3 -10 60]),xlabel('t[s]')

text(0.015, 2, 'iL(t)'),text(0.015, 52, 'uC(t)')


Matlab

II. кондензаторЧислено интегриране

Квадратура е числен метод за апроксимация на площта под графиката на функцията f(x), дефинирана върху интервала [a,b], т.е. определен интеграл:

quad('f',a,b) – изчислява определен интеграл от f(x) от a до b с относителна грешка 1е-3, като използва адаптивното правило на Simpson;

'f' е символен низ, съдържащ името на функцията;

връща вектор от изходните стойности, ако е даден вектор с входни стойности;

връща q=inf, ако е достигнато крайно ниво на рекурсия.


Matlab

quad кондензатор('f',a,b,tol) – интегрира, докато се достигне относителна грешка tol; за определяне на относителна и абсолютна грешка се използва tol=[относителна_грешка, абсолютна грешка].

quad('f',a,b,tol,trace) – интегрира до относителна грешка tol и при ненулева стойност на trace изчертава графика, показваща процеса на интегрирането.

quad('f',a,b,tol,trace,p1,p2,...) – позволява директно предаване на параметрите p1,p2,... към функцията f(x,p1,p2,...); за да се използват подразбиращите се стойности за tol иtrace, те се предават в празна матрица [ ].

quadработи с нелинейни функции f(x,p1,p2,...) на скаларна променлива, т.е. една функция работи с друга функция; нелинейната функция fсе представя чрез .m файл, чието име съвпада с името на функцията.


Matlab

» q=quad('sin',0,pi,[],1)

q =

2.0000


Matlab


Matlab

Файл-функцияp.m:

function y=p(x)

y=4./(1.+x.^2);

»q=quad('p',0,1);

» q

q =

3.1416


Matlab

  • Полиноми кондензатор

  • Нули на полином

  • r=roots(p)

  • p–вектор-ред, съдържа коефициентите на полинома в намаляващ ред

  • r –вектор-стълб, съдържа корените на полинома p

  • Пример:

  • » p=[1 -6 -72 -27];

  • »r=roots(p)

  • r =

  • 12.1229

  • -5.7345

  • -0.3884


Matlab

  • Коефициенти на полином кондензатор

  • p=poly(r)

  • r–вектор-стълб, съдържа корените на полином

  • p –вектор-ред, съдържа коефициентите на полинома в намаляващ ред

  • Пример:Корените на полином са 12.1229, -5.7345

  • и -0.3884

  • » r=[12.1229 -5.7345 -0.3884]';

  • » p=poly(r)

  • p =

  • 1.0000 -6.0000 -72.0000 -27.0011


Matlab

  • Стойност на полином кондензатор

  • y=polyval(p,s)

  • p –вектор-редс дължина n+1, съдържа коефициентите на полинома в намаляващ ред

  • s– вектор-ред, съдържа стойности, за които полиномът ще се изчислява

  • y– вектор-ред, съдържа изчислените стойности на полинома

  • Пример:Стойности на полинома при s=1, 2 и 3

  • »p=[1 -6 -72 -27];

  • » s=[1 2 3];

  • » y=polyval(p,s)

  • y =

  • -104 -187 -270


Matlab

  • Апроксимиране с полином кондензатор

  • p=polyfit(x,y,n)

  • x,y – данните, които се апроксимират

  • n – степен на полинома

  • p –вектор-редс дължина n+1, съдържа коефициентите на полинома в намаляващ ред, който апроксимира p(x(i))към y(i)


Matlab

Пример: кондензаторАпроксимиране с полином от степен 6

на измерени данни

»t=0:0.1:2.5;

» i=[0 0.1125 0.2227 0.3286 0.4284 0.5205 0.6039 ...

0.6778 0.7421 0.7969 0.8427 0.8802 0.9103 0.9340 ...

0.9523 0.9661 0.9763 0.9838 0.9891 0.9928 0.9953 ...

0.9970 0.9981 0.9989 0.9993 0.9996];

» p=polyfit(t,i,6)

» plot(t,i,'ro',t,polyval(p,t))

Резултати:

p =

0.0084 -0.0985 0.4222 -0.7440 0.1475 1.1064 0.0005


Matlab

Z - импеданс

– ефективна стойност на напрежението

– ефективна стойност на тока

– средна мощност

– фактор на мощността


Matlab

Ако кондензатори са синусоидални:

то:

– реактивна мощност

– комплексна мощност

– кръгова честота

– преобразуване на ъгъл от градуси в радиани


Matlab

Пример: кондензатор Да се изчислят средната мощност, ефективните стойности на напрежението и тока, фактора на мощността (аналитично и числено), ако и .

Файл-функции

voltage.m

function u2=voltage(t)

u2=(10*cos(120*pi*t+60*pi/180)).^2;

current.m

function i2=current(t)

i2=(6*cos(120*pi*t+30*pi/180)).^2;

power_average.m

function p=power_average(t)

i=6*cos(120*pi*t+30.0*pi/180);

u=10*cos(120*pi*t+60.0*pi/180);

p=i.*u;


Matlab

w=120*pi; кондензатор% кръгова честота

T=2*pi/w;% период на синусоидата

% Числено решение

a=0; % долна граница на интеграла

b=T; % горна граница на интеграла

u=quad('voltage',a,b);

Ueff=sqrt(u/T);

i=quad('current',a,b);

Ieff=sqrt(i/T);

p=quad('power_average',a,b);

P=p/T;

pf=P/(Ueff*Ieff);

% Аналитично решение

Ueffa=10/sqrt(2);

Ieffa=6/sqrt(2);

Pa=Ueffa*Ieffa*cos(30*pi/180);

pfa=cos(30*pi/180);

% Извеждане на резултатите

disp('Ueff'),disp(Ueff),disp(Ueffa);

disp('Ieff'),disp(Ieff), disp(Ieffa);

disp('P'), disp(P),disp(Pa);

disp('pf'),disp(pf),disp(pfa);

Резултати:

Ueff

7.0711

7.0711

Ieff

4.2426

4.2426

P

25.9808

25.9808

pf

0.8660

0.8660


Matlab

  • Комплексна форма на напреженията и токовете

  • Ако , то ,

  • – комплексно напрежение.

  • Ако е напълно синусоидално,

– амплитуда

– начална фаза

– комплексна амплитуда на напрежението

– комплексна честота


Matlab

Комплексно честотно представяне

–предавателна

функция

–разлагане на множители

– константа

–нули

–полюси

–дробни части


Matlab

[r,p,k]=residue(num,den) напреженията и токовете

num– вектор-ред, съдържа коефициентите на

полинома-числител в намаляващ ред

den – вектор-ред, съдържа коефициентите на

полинома-знаменател в намаляващ ред

r– вектор-стълб, съдържа остатъците от

частното на numиden

p– вектор-стълб, съдържа полюсите

k– вектор-ред, съдържа директните изрази


Matlab

Пример: напреженията и токовете За RLC веригата намерете:

  • предавателната функция ;

  • нулите и полюсите на ;

  • , ако .

  • предавателна функция

=> комплексна честота

  • комплексна амплитуда на входното напрежение

  • комплексна амплитуда на изходното напрежение


Matlab

R=10;L=10e-3;C=100e-6; напреженията и токовете

% Разлагане на множители на предавателната функция

num=[R/L 0];

den=[1 R/L 1/(L*C)];

z=roots(num);% нули

p=roots(den);% полюси

disp('z'),disp(z);% изобразява изчислените величини

disp('p'),disp(p);

[r,p,k]=residue(num,den);% разлагане на дроби на предавателната disp('r'),disp(r);% функция

disp('p'),disp(p);

disp('k'),disp(k);

% Стойност на предавателната функция при дадена комплексна честота

s=-3+j*2;% комплексна честота

n=polyval(num,s);

d=polyval(den,s);

% Изходно напрежение

Uout=10*exp(j*40*pi/180)*n/d;% комплексна амплитуда

Um=abs(Uout);% амплитуда

fi=angle(Uout)*180/pi;% начална фаза в градуси

disp('Um'), disp(Um);

disp('fi'),disp(fi);


Matlab

Резултати: напреженията и токовете

z

0

p

1.0e+002 *

-5.0000 + 8.6603i

-5.0000 - 8.6603i

r

1.0e+002 *

5.0000 + 2.8868i

5.0000 - 2.8868i

p

1.0e+002 *

-5.0000 + 8.6603i

-5.0000 - 8.6603i

k

Um

0.0362

fi

-173.8043


Matlab

  • Честотен анализ напреженията и токовете

  • Честотна характеристика – отговорът на схемата при синусоидален входен сигнал

  • – амплитудно-честотна характеристика

  • – фазово-честотна характеристика

Пример: За RLC веригата начертайте амплитудно-

честотната и фазово-честотната характеристика

за две стойности на съпротивлението: R=10Ωи

R=0.5Ω.


Matlab

Файл-функция напреженията и токоветеtransfer.m – предавателна функция

function h=transfer(w,R,L,C)

h=(j*w*(R/L))./((j*w).^2+j*w*(R/L)+1/(R*C));

L=10e-3;C=100e-6;

w=[0.1:0.1:10^4];

R=10;

H1=transfer(w,R,L,C);

R=0.5;

H2=transfer(w,R,L,C);

f=w/(2*pi);

% Графика на амплитудно-честотните характеристики на RLC верига

subplot(221),loglog(f,abs(H1),'b'),grid on,ylabel('|H(j\omega)'),xlabel('f[Hz]');

subplot(222),loglog(f,abs(H2),'r'),grid on,ylabel('|H(j\omega)'),xlabel('f[Hz]');

% Графика на фазово-честотните характеристики на RLC верига

subplot(223),semilogx(f,angle(H1)*180/pi,'b'),grid on;

ylabel('\angleH(j\omega)(\circ)'),xlabel('f[Hz]');

subplot(224),semilogx(f,angle(H2)*180/pi,'r'),grid on;

ylabel('\angleH(j\omega)(\circ)'),xlabel('f[Hz]'); ,


Matlab

При намаляване стойността на напреженията и токоветеR от 10 до 0.5Ω лентата на пропускане на амплитудно-честотната характеристика намалява и качественият фактор на схемата нараства.