Решаване на примерен билет за контролна работа за MatLab



Дата18.04.2017
Размер113.78 Kb.
#19444
Решаване на примерен билет за контролна работа за MatLab

Разработчик: Сюлейман Шакиров Неджибов, спец. КММ, II курс



БИЛЕТ No 1



  1. Да се изтрият Command Window, Command History и Workspace.

  2. Да се отвори файл-дневник на работата с име:

име на студента_фак. номер_билет номер.txt’

като всички букви в името на файла да са латински (не на кирилица).



  1. Да се дефинират и изчислят:

x=5 y=3 a=10 ln(x) e2



  1. Да се зададат 2 масива a и b с 5 елемента. Да се извърши следната последователност от команди:

- ляво деление поелементно на а и b;

- дясно деление поелементно на а и b;

- умножение на a и b, като резултатът е 1 число;

- поелементно умножение на a и b-1.



  1. Да се въведе масив alpha със стойности 30, 60, 90. Да се намерят синус, косинус, тангенс, котангенс от alpha, като се счита, че стойностите на масива са въведени в градуси. Да се пресметне аркустангенс от 1, като резултатът се изведе в градуси.

  2. Да се зададе матрица М с размерност 3х3 с помощта на функцията magic. Да се намерят натурален логаритъм, корен квадратен и да се повдигнат на трета степен елементите на матрицата. Да се намери минималния, максималния елемент и детерминантата на матрицата

  3. Да се зададе z = 2.3 + 4.5i и да се намерят комплексно-спрегнатото, реалната и имагинерната част на z.

  4. Да се въведе m = 5.2, q = -5.5. Да се извършат с m, q и z:

a) отрязване на дробната им част;

б) да се закръглят до най-малкото цяло число;



  1. Да се състави програма на Matlab, с която да се въвеждат 2 отрицателни числа m и n и да се изчисли следното: ако m е четно, m да се умножи по 3, в противен случай n да се умножи по 2.

  2. Да се изтрият елементи от a и да се транспонира a, така че да се образува нов масив с 3 реда и 1 стълб. Да се реши уравнениeто М.х=a.

  3. Да се състави масив T с числата от 1 до 32. Да се намери спектъра на Фурие на масива T.

  4. Да се начертаe схемaтa и да се съхрани във файл с име primer1.mdl. Да се стартира симулацията.



  1. Да се решат:

а) x3 – 5x – 1=0. Да се провери получения резултат.

б) да се намери минимума на функцията f(x)= x3 – 5x – 1

в) да се изчисли определен интеграл от f(x) в граници от 0 до 2

г) да се реши символно или числено уравнението х’(t)=-3х(t), с начално условие х(0)=1, като t  [0, 4]. Да се провери получения резултат. Да се изчертае графиката на решението x за стойностите на t;



  1. Да се прекрати създаването на дневника на работата.

  2. Да се запише Workspace във файл.

  3. Да се запише Command History в m-файл.


Решение на билет No 1
1. За версии на Matlab след 2012:

От Home таб се избират:

Clear Workspace

Clear Commands/ Command Window

Clear Commands/ Command History
За версии на Matlab до 2012:

От менюто Edit избираме:


Edit/Clear Command Window

Edit/Clear Command History

Edit/Clear Workspace
2.В Command Window пишем:

>>diary ‘Nedjibov_092422_1.txt’


и се създава празен файл файл с име Nedjibov_092422_1.txt в работната директория на Matlab .
3.В Command Window да се дефинират и изчисляват:

>>x=5
x =


5

>>y=3


y=
3

>> a=10
a =


10

>> log(x)


ans =
1.6094

>> pi*exp(2)


ans =
23.2134

>> (2^(x+y)+a)/(sqrt(x+y)*2^x)*(x-a)

ans =
-14.6946
>> syms z

>> diff(10*z^3-sqrt(z))

ans =

30*z^2-1/2/z^(1/2)



>> syms x

>> limit(sqrt(x^2+2)/(3*x+6),x,inf)

ans =

1/3


>> syms z

>> int((z^3-5*z)/(z+5)^(1/3),'z')

ans =

3/11*(z+5)^(11/3)-45/8*(z+5)^(8/3)+42*(z+5)^(5/3)-150*(z+5)^(2/3)



4.В Command Window задаваме два масива с произволни числа:

>> a=[3 5 78 0 -4]


a =
3 5 78 0 -4

>> b=[3 4 7 56 1]


b =
3 4 7 56 1
-дясно деление поелементно на а и b:

>> a./b
ans =


1.0000 1.2500 11.1429 0 -4.0000

-ляво деление поелементно на а и b:

>> a.\b

Warning: Divide by zero.



(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans =
1.0000 0.8000 0.0897 Inf -0.2500
- умножение на a и b, като резултатът е 1 число

>> a*transpose(b)


ans =
571
-поелементно умножение на a и b-1:

>> a.*(b.^-1 )


ans =
1.0000 1.2500 11.1429 0 -4.0000
5.В Command Window въвеждаме масив alpha със стойности 30,60,90:

>> alpha=[30 60 90]


alpha =
30 60 90

-синус от alpha:

>> sind(alpha)
ans =
0.5000 0.8660 1.0000
-косинус от alpha:

>> cosd(alpha)


ans =
0.8660 0.5000 0.0000

-тангенс от alpha:

>> tand(alpha)
ans =

0.5774 1.7321 Inf


-котангенс от alpha:

>>cotd(alpha)


ans =
1.7321 0.5774 0.0000
- да се пресметне аркустангенс от 1, като резултатът се изведе в градуси

>> atand(1)


ans =
45
6. В Command Window задаваме матрица М с размерност 3х3 с помощта на magic:

>> M=magic(3)


M =

8 1 6


3 5 7

4 9 2


-Намираме натурален логаритъм на матрицата М:

>> log(M)


ans =
2.0794 0 1.7918

1.0986 1.6094 1.9459

1.3863 2.1972 0.6931
-Намираме корен квадратен на матрицата М:

>> sqrt(M)


ans =
2.8284 1.0000 2.4495

1.7321 2.2361 2.6458

2.0000 3.0000 1.4142

-Повдигаме на трета степен елементите на матрицата М:

>> M.^3
ans=
512 1 216

27 125 343

64 729 8
-Намираме минималният елемент на матрицата М:

>> min(M)


ans =
3 1 2
>>min(min(M))
ans =
1

-Намираме максималният елемент на матрицата М:

>> max(M)
ans =
8 9 7
>> max(max(M))
ans =
9

-Намираме детерминантата на матрицата М:

>> det(M)
ans =
-360
7.В Command Window задаваме:

>> z=2.3+4.5*i


z =
2.3000 + 4.5000i
-намираме комплексно-спрегнатото число на z

>> conj(z)


ans =
2.3000 - 4.5000i
-Намираме модула на z:

>> abs(z)


ans =
5.0537
-Намираме реалната част на z:

>> real(z)


ans =
2.3000

-Намираме имагинерната част на z:

>> imag(z)
ans =
4.5000
8.В Command Window въвеждаме:

>> m=5.2
m =


5.2000
>> q=-5.5
q =
-5.5000

а)отрязване на дробната им част:

>> fix([m q z])
ans =
5.0000 -5.0000 2.0000 + 4.0000i
б)да се закръглят до най-малкото цяло число:

>> floor([m q z])


ans =
5.0000 -6.0000 2.0000 + 4.0000i
9. Програмата се въвежда в m-файл. За целта от Home-таба се стартира New Script. В отворения редактор се въвежда текста на програмата:
m=input('Vavedi otricatelno chislo m: ')

n=input('Vavedi otricatelno chislo n: ')

if m>=0 | n>=0

error('Chislata triabwa da sa otricatelni')

end

if mod(m,2)==0



m=m*3

else


n=n*2

end


disp(' m n')

disp([m n])


Общ вид на програмата в редактора:

След това програмата се записва под определено име – например bilet1.m и се изпълнява. Изпълнението може да стане с бутона Run от редактора или след написване на името на програмата в Command Window и натискане на Enter. По-долу е показан резултатът от стартирането й в Command Window:
>> bilet1

Vavedi otricatelno chislo m: -3


m =
-3
Vavedi otricatelno chislo n: -4
n =
-4

n =
-8


m n

-3 -8
Стартиране на програмата като зададем m положително число.

>> bilet1

Vavedi otricatelno chislo m: 8


m =
8
Vavedi otricatelno chislo n: 0
n =
0
??? Error using ==> bilet1

Chislata triabwa da sa otricatelni


10.От панела Workspace натискаме два пъти с левия бутон на мишката върху името на масива а и той се отваря в Variable Editor. Изтриват се две от клетките на масива подобно на работата в Excel и той вече има 3 вместо 5 стойности.

След това в Command Window въвеждаме:

>> a=transpose(a)

a =
3

5

78


-Решаваме уравнението М.х=а:

>> x=M\a
x =


4.7028

8.1611


-7.1306
-Проверка на решението:

>> M*x
ans =


3.0000

5.0000


78.0000
11.В Command Window съставяме масив Т с число от 1 до 32:

>> T=[1:32]


T =
Columns 1 through 10
1 2 3 4 5 6 7 8 9 10
Columns 11 through 20
11 12 13 14 15 16 17 18 19 20
Columns 21 through 30
21 22 23 24 25 26 27 28 29 30
Columns 31 through 32
31 32

-Намираме спектъра на Фурие на масива Т:

s=fft(T)
s =
1.0e+002 *
Columns 1 through 3
5.2800 -0.1600 + 1.6245i -0.1600 + 0.8044i
Columns 4 through 6
-0.1600 + 0.5274i -0.1600 + 0.3863i -0.1600 + 0.2993i
Columns 7 through 9
-0.1600 + 0.2395i -0.1600 + 0.1950i -0.1600 + 0.1600i
Columns 10 through 12
-0.1600 + 0.1313i -0.1600 + 0.1069i -0.1600 + 0.0855i
Columns 13 through 15
-0.1600 + 0.0663i -0.1600 + 0.0485i -0.1600 + 0.0318i
Columns 16 through 18
-0.1600 + 0.0158i -0.1600 -0.1600 - 0.0158i
Columns 19 through 21
-0.1600 - 0.0318i -0.1600 - 0.0485i -0.1600 - 0.0663i
Columns 22 through 24
-0.1600 - 0.0855i -0.1600 - 0.1069i -0.1600 - 0.1313i
Columns 25 through 27
-0.1600 - 0.1600i -0.1600 - 0.1950i -0.1600 - 0.2395i
Columns 28 through 30
-0.1600 - 0.2993i -0.1600 - 0.3863i -0.1600 - 0.5274i
Columns 31 through 32
-0.1600 - 0.8044i -0.1600 - 1.6245i

12.В Command Window пишем simulink и натискаме Enter. Отваря се прозореца Simulink Library Browser. В бялото текстово поле вдясно от бутона Find, пишем името или част от името на първия блок от схемата.

Примерно: въвеждаме Sine Wave или само Sine и натискаме Enter или бутона Search - той има форма на бинокъл и под него пише Search for subsystems and blocks by name (enter at least 2 characters). Показва се селектиран блок. Ако не е този блокът, който търсим, отново натискаме Enter или бутона Search. Когато намерим търсения блок– в случая Sine Wave, натискаме десен бутон върху него и избираме командата Add to a new model. Отваря се нов прозорец, в който автоматично се позиционира избраният блок. В този прозорец на модела ще начертаем схемата. Същите действия по търсене и поставяне на блока в прозореца на модела извършваме и за останалите три блока: Integrator, Mux и Scope, като командата Add to a new model вече се е променила в Add to untitled.

Свързваме блоковете по указания в задачата начин. Получаваме:



След това стартираме симулацията – от менюто Simulation избираме опцията Start, за Matlab 2013 - Run .

За да проверим резултата от симулацията натискаме два пъти с левия бутон на мишката върху Scope, при което се визуализира графиката на осцилоскопа.

Натискаме върху черния екран на Scope десния бутон на мишката и избираме опцията Autoscale. В резултат се показва:



За да съхраним файла от прозореца на схемата избираме менюто File/Save as, въвеждаме име на файла и натискаме Save. За Matlab 2012 и по-висока версия се избира формат на файла .slx или .mdl.
13.Да се решат:

а) x3 – 5x – 1=0. Да се провери получения резултат.

I начин:

>> syms x

>> solve('x^3-5*x-1=0')

ans =


[ 1/6*(108+12*i*1419^(1/2))^(1/3)+10/(108+12*i*1419^(1/2))^(1/3)]

[ -1/12*(108+12*i*1419^(1/2))^(1/3)-5/(108+12*i*1419^(1/2))^(1/3)+1/2*i*3^(1/2)*(1/6*(108+12*i*1419^(1/2))^(1/3)-10/(108+12*i*1419^(1/2))^(1/3))]

[ -1/12*(108+12*i*1419^(1/2))^(1/3)-5/(108+12*i*1419^(1/2))^(1/3)-1/2*i*3^(1/2)*(1/6*(108+12*i*1419^(1/2))^(1/3)-10/(108+12*i*1419^(1/2))^(1/3))]
II начин:

>> coef=[1 0 -5 -1]


coef =
1 0 -5 -1
>> koreni=roots(coef)
koreni =
2.3301

-2.1284


-0.2016
Проверка:

>> coef2=poly(koreni)


coef2 =
1.0000 -0.0000 -5.0000 -1.0000
Вижда се, че coef2=coef, т.е. решението е вярно.
б) да се намери минимума на функцията f(x)= x3 – 5x – 1

1.Изчертава се графиката на функцията за да се уточни интервала, където функцията има минимум - може с ezplot, както е показано по-долу

>> syms x y

>> y=x^3-5*x-1

y =

x^3-5*x-1



>> ezplot(y)

Вижда се, че минимумът на функцията може да се търси в [0, 2].


2. Дефинира се функцията f(x). Използванa е променлива y :

За версии на Матлаб след 2012:

>> y=@(x) x^3-5*x-1
y =
@(x)x^3-5*x-1
За версии на Матлаб до 2012:

Дефинира се функцията f в inline обект.

>> y=inline('x^3-5*x-1')
y =
Inline function:

y(x) = x^3-5*x-1


3. Извикваме функцията fminbnd за търсене на минимум в интервала (в случая [0, 2]) и намираме стойността на х, за която функцията има минимум – нека тази стойност е xmin

>> xmin=fminbnd(y,0,2)

xmin =
1.2910
4. Намираме стойността на минимума ymin като извикаме функцията f с аргумент получената стойност за xmin, т.e.

>> ymin=y(xmin)

ymin =
-5.3033

в) да се изчисли определен интеграл от f(x) в граници от 0 до 2


Можем да използваме Toolbox Symbolics Math – функция int или функцията integral (или quad за по-стари версии).

Решение с int:


>> syms x

>> int(x^3-5*x-1,0,2)


ans =
-8
г) да се реши символно или числено уравнението х’(t)=-3х(t), с начално условие х(0)=1, като t  [0, 4]. Да се провери получения резултат. Да се изчертае графиката на решението x за стойностите на t;
Символно решение на уравнението:

>> syms x(t)

>> dsolve(diff(x)==-3*x, x(0)==1)

ans =


exp(-3*t)
Изчертаване на графиката:

>> t=0:0.1:4

>>d=exp(-3*t)

>>plot(t,d)

>> xlabel('t')

>> ylabel('x(t)')

>> title('Symbolic Solution of the equation dx/dt=-3x(t)')


Проверка на началното условие:

>> exp(0)


ans =
1

Втори начин на решаване - числено

1. Записваме уравнението като функция във файл oneurawn.m в m-редактора:


function damp=oneurawn(t,x)

damp=-3*x


2. Извикваме odе45:
>>[t,х]=ode45(@oneurawn,[0 4],1)
3. Резултатите се получават в workspace в променливата t – стойности на времето t и в променливата x - стойност на функцията x(t). Изчертаваме графиката на x(t).
>> plot(t,x)

Допълнително могат да се поставят етикети по осите х и y и заглавие на графиката с командите:


>>xlabel('t')

>> ylabel('x(t)')

>> title('Solution of the equation dx/dt=-3x(t)')
Графиката изглежда така:

14.В Command Window пишем:

>>diary off

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

15.От менюто File избираме Save Workspace as и записваме Workspace във файл.

16.Маркираме всички редове в Command History. Натискаме десен бутон на мишката върху маркираната област. От контекстното меню избираме Create M-File и се отваря М-редактора. Оттам избираме File/Save as и записваме файла.


Всички файлове се съхраняват в директорията, която Matlab подразбира за записване на файловете си. Тя е работната директория на продукта.


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница