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

From Ilianko
Line 202: Line 202:
 
  Ixy =
 
  Ixy =
 
  -((c^2 - d^2)*(cos(a) - cos(b)))/2
 
  -((c^2 - d^2)*(cos(a) - cos(b)))/2
 +
 +
== Символно сумиране ==
 +
 +
>> syms k;
 +
S = symsum(1/k^2, k, 1, inf)
 +
S =
 +
 +
pi^2/6
 +
 +
== Ред на тейлор ==
 +
 +
>> syms x y
 +
>> f = 1/(x^2 + y);
 +
>> tf = taylor(f , 7, x)
 +
 +
tf =
 +
 
 +
x^4/y^3 - x^2/y^2 - x^6/y^4 + 1/y
 +
 +
>> pretty(taylor(f , 7, y))
 +
  2    3    4    5    6
 +
  y    y    y    y    y    y    1
 +
  -- - -- + --- - --- + --- - -- + --
 +
  6    8    10    12    14    4    2
 +
  x    x    x    x    x    x    x
  
 
== Литература ==
 
== Литература ==

Revision as of 12:56, 18 April 2011

Смесени частни производни

Matlab няма собствена функция. Трябва да се използват собствени програми включващи diff().


Pregled

Definirani simwolni nizowe

x = sym('x')
A = sym('[a, b; c, d]'); - символна матрица
eq = sym('a*x^2 + y');
syms x y a b c;
f = (x+b); - всеки израз имащ символни променливи става символен 

Aritmetika с променлива точност

vpa(expr), vpa(expr, 20) - rezultat  с 20 значещи цифри
digits(50)

Преобразовнания

А = [1/2 ....

S = sym(A) - double-> symbolic

V = vpa(S) - symbolic -> 32 бита точност

А = double(S) - symbolic -> double

Опростяване

collect() simple() subs() simplify()

sub(expr, old, new)

Линейна алгебра

det() inv() poly()

syms b1 b2 b3
b = [ b1; b2; b3] ; 
x = A\B - решаване система уравнения
[v, E] = eig(A) собствени стойност -  собствени честоти на трептене!

Решаване уравнения

solve(f,x)
sym x y;
[x y] = solve(f1, f2, x, y) - решава системата
 f1(x,y) = 0 ; f2(x,y) = 0

Matemati`eski анализ

limit(f, x, a); - granica na f при х клонящо към а
diff(f,x)

int(f,x) - неопределен интеграл
int(f,x,a,b) - определен интеграл
symsum( f(k), k , n ,m) - suma
taylor( f, n, x, a ) - ред на тейлор 

Analitichno решаване на ОДУ

y = dsolve('deq', 'x') - общо решение y = dsolve('deq', 'inic', 'x') - частно решение

Система ОДУ

[y1, y2, y3 ...] = dsolve = ('deq1', 'deq2', ..., 'inic1', 'inic2',... , 'x')


Пример:

ay + by' + cy = 2sin(x), y0(x) = y0 ....

Диференциране

>> syms x y;
>> f = exp(-x/y)*sin(x*y)
 
f =
 
sin(x*y)/exp(x/y)
 
>> diff(f,x,2) % втора производна по x
 
ans =
 
sin(x*y)/(y^2*exp(x/y)) - (2*cos(x*y))/exp(x/y) - (y^2*sin(x*y))/exp(x/y)
>> simplify(diff(diff(f,x,2), y, 2))
 
ans =
 
(x^2*sin(x*y) + 6*y^2*sin(x*y) - 2*y^6*sin(x*y) - 6*x*y*sin(x*y) - 4*x*y^7*cos(x*y) - 2*x*y^5*sin(x*y) + 2*x^2*y^4*sin(x*y) + x^2*y^8*sin(x*y))/(y^6*exp(x/y))
 
>> sub(ans, {x,y}, {1.23, pi/2})
??? Undefined function or method 'sub' for input arguments of type 'sym'.
 
>> subs(ans, {x,y}, {1.23, pi/2})

ans =

    1.9785
>> str1 = 'x = '; 
>> str2 = 'sin(pi/2)';
>> str = [str1, str2]
str =
x = sin(pi/2)
>> eval(str)
x =
    1


Съставяне на функции с променлив брой рагументи

function [a b] = in2out3(x,y,z)
if nargout == 1 %един изходен аргумент
  switch nargin  % брой входящи аргументи
    case 1
       a = x;
    case 2
       a = x+y;
    case 3;
       a = x +y + z;
  end
else
  switch nargin 
    case 1
        a = x;
        b = x*x;
    case 2;
         a = x+y;
        b = x*x+y*y;
      case 3;
           a = x+y+z;
        b = x*x+y*y+z*z;
  end
end

end

Неограничен брой на входни и изходни параметри

function d = var(f, varargin) 
% neograniчen брой променливи
  n = length(varargin);
  for i = 1:n
    var = varargin{i} % ! индексът е с големи скоби
    syms var;
  end

  for i = 1:n
    f= diff(f,varargin{i});
  end
  d = f;
end
>> syms x y
>> var(f,x,y)
var =

x
var =
y
ans =
cos(x*y)/exp(x/y) + sin(x*y)/(y^2*exp(x/y)) - ...
 (x*y*sin(x*y))/exp(x/y) - (x*sin(x*y))/(y^3*exp(x/y))

Решаване на интеграли

>> syms x 
>> int(x)
ans =
x^2/2

Определен интеграл

>> syms a b x
>> int(x, a, b)
ans =
b^2/2 - a^2/2
syms a b c d x y;
>> Ix = int(y*sin(x),x, a, b)
Ix =
y*(cos(a) - cos(b))
>> Ixy = int(Ix, y, c, d)
Ixy =
-((c^2 - d^2)*(cos(a) - cos(b)))/2

Символно сумиране

>> syms k;
S = symsum(1/k^2, k, 1, inf)
S =

pi^2/6

Ред на тейлор

>> syms x y
>> f = 1/(x^2 + y);
>> tf = taylor(f , 7, x)

tf =
 
x^4/y^3 - x^2/y^2 - x^6/y^4 + 1/y
>> pretty(taylor(f , 7, y))
  2    3    4     5     6
 y    y    y     y     y     y    1
 -- - -- + --- - --- + --- - -- + --
  6    8    10    12    14    4    2
 x    x    x     x     x     x    x

Литература