Difference between revisions of "Упражнение 3. Matlab"
Line 164: | Line 164: | ||
ans = | ans = | ||
3.7493e-12 | 3.7493e-12 | ||
+ | |||
+ | Sled като отдясно всичко е символни величини и от ляво става символна | ||
+ | |||
+ | >> syms x a b z | ||
+ | >> f = sin(x)*exp(z)^a/b | ||
+ | f = | ||
+ | (exp(z)^a*sin(x))/b | ||
+ | |||
+ | По ясна визуализация | ||
+ | >> pretty(f) | ||
+ | |||
+ | a | ||
+ | exp(z) sin(x) | ||
+ | -------------- | ||
+ | b | ||
+ | |||
+ | Получаване на директно символна матрица | ||
+ | >> syms a b c | ||
+ | >> A = [a b c; b c a; c a b] | ||
+ | |||
+ | A = | ||
+ | |||
+ | [ a, b, c] | ||
+ | [ b, c, a] | ||
+ | [ c, a, b] | ||
+ | |||
+ | Изчисляване на детерминанта | ||
+ | >> det(A) | ||
+ | ans = | ||
+ | - a^3 + 3*a*b*c - b^3 - c^3 | ||
+ | |||
+ | |||
+ | >> pretty(inv(A)) | ||
+ | |||
+ | +- -+ | ||
+ | | 2 2 2 | | ||
+ | | b c - a a c - b a b - c | | ||
+ | | - ----------------------, - ----------------------, - ---------------------- | | ||
+ | | 3 3 3 3 3 3 3 3 3 | | ||
+ | | a - 3 a b c + b + c a - 3 a b c + b + c a - 3 a b c + b + c | | ||
+ | | | | ||
+ | | 2 2 2 | | ||
+ | | a c - b a b - c b c - a | | ||
+ | | - ----------------------, - ----------------------, - ---------------------- | | ||
+ | | 3 3 3 3 3 3 3 3 3 | | ||
+ | | a - 3 a b c + b + c a - 3 a b c + b + c a - 3 a b c + b + c | | ||
+ | | | | ||
+ | | 2 2 2 | | ||
+ | | a b - c b c - a a c - b | | ||
+ | | - ----------------------, - ----------------------, - ---------------------- | | ||
+ | | 3 3 3 3 3 3 3 3 3 | | ||
+ | | a - 3 a b c + b + c a - 3 a b c + b + c a - 3 a b c + b + c | | ||
+ | +- | ||
[[Category:Matlab]] | [[Category:Matlab]] |
Revision as of 12:09, 15 April 2011
Contents
Управляващи оператори
if
if <expression>
statment
end
if <expression>
statement;
else
statement;
end
if <expression>
statement;
elseif
statement;
else
statement;
end
Релации и логически оператори
< , <= , >, >= , ~=, ==
&, &&, |, ||, ~
Логическо равенство да не се ползва за числа с плаваща запетая
switch
switch expression case val1 statement case {val2, val3 statement
otherwise statement end
Логическо равенство да не се ползва за числа с плаваща запетая
for
for index = nachalo:stypka:kraj % ako nqma stypka tq e 1 statement end
for i = A % A e vektor/matrica statement end
while
while expression statemnet end
Dopълнителни управляващи оператори
break continue - преминаване към следваща итерация на for или while цикъл pause - пауза до натискане на клавиш ( pause(4) <=> sleep(4) ) keyboard - predawa uprawlenieto на клавиатурата (използва се при дебъгване). Спира се програмата и може да проверяваме всички стойност return - връща се към програмата след keyboard
файл функции
function [a, b, c] = ime(x, y, z) global p, q; a = x; b = y; c = z; end
Записва се като ime.m
function y = signum(x)
% сигнум функция
if x>0
y = 1;
elseif x<0
y = -1;
else
0
end
end
>> signum(-5)
ans =
-1
>> signum(0)
ans =
0
>> signum(5)
ans =
1
Символни преобразувания
clear - изчистване на workspace
Задаване на символни величини
оператори за създаване на символни величини
sym - по-универсален
x = sym('x') ; x = x
>> y = pi y = 3.1416
Символите се показват по вляво!
Дефиниране на цял стринг
>> eq = sym ('a*x^2') eq = a*x^2
Диференциране по x >> diff(eq,x) ans = 2*a*x
Matrica на хилберт
H = hilb(5)
H =
1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111
Извеждане в символичен вид
>> sym(H) ans = [ 1, 1/2, 1/3, 1/4, 1/5] [ 1/2, 1/3, 1/4, 1/5, 1/6] [ 1/3, 1/4, 1/5, 1/6, 1/7] [ 1/4, 1/5, 1/6, 1/7, 1/8] [ 1/5, 1/6, 1/7, 1/8, 1/9]
В този случай няма да има грешка от закръгляне
>> det(H) ans = 3.7493e-12
Sled като отдясно всичко е символни величини и от ляво става символна
>> syms x a b z >> f = sin(x)*exp(z)^a/b f = (exp(z)^a*sin(x))/b
По ясна визуализация
>> pretty(f)
a exp(z) sin(x) -------------- b
Получаване на директно символна матрица
>> syms a b c >> A = [a b c; b c a; c a b] A = [ a, b, c] [ b, c, a] [ c, a, b]
Изчисляване на детерминанта
>> det(A) ans = - a^3 + 3*a*b*c - b^3 - c^3
>> pretty(inv(A))
+- -+ | 2 2 2 | | b c - a a c - b a b - c | | - ----------------------, - ----------------------, - ---------------------- | | 3 3 3 3 3 3 3 3 3 | | a - 3 a b c + b + c a - 3 a b c + b + c a - 3 a b c + b + c | | | | 2 2 2 | | a c - b a b - c b c - a | | - ----------------------, - ----------------------, - ---------------------- | | 3 3 3 3 3 3 3 3 3 | | a - 3 a b c + b + c a - 3 a b c + b + c a - 3 a b c + b + c | | | | 2 2 2 | | a b - c b c - a a c - b | | - ----------------------, - ----------------------, - ---------------------- | | 3 3 3 3 3 3 3 3 3 | | a - 3 a b c + b + c a - 3 a b c + b + c a - 3 a b c + b + c | +-