Difference between revisions of "Упражнение 3. Matlab"

From Ilianko
Line 227: Line 227:
 
   %UNTITLED3 Summary of this function goes here
 
   %UNTITLED3 Summary of this function goes here
 
   %  Detailed explanation goes here
 
   %  Detailed explanation goes here
 
 
     syms x a b;
 
     syms x a b;
 
     F = int(f, x, a, b);
 
     F = int(f, x, a, b);

Revision as of 12:20, 15 April 2011

Управляващи оператори

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   |
 +- 

Подразбиращи се символни променливи

При повече променливи се диференцира по най близката до "х", ако няма зададена

 function  F  = intAB( f )
 % интеграл от произволна функция
 % a,b, - интервал на интегриране
 %UNTITLED3 Summary of this function goes here
 %   Detailed explanation goes here
   syms x a b;
   F = int(f, x, a, b);
 end
>> y = intAB( sin(x) )
y =
cos(a) - cos(b)