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

From Ilianko
Line 77: Line 77:
 
'''Пример: '''
 
'''Пример: '''
 
ay'' + by' + cy = 2sin(x), y0(x) = y0 ....
 
ay'' + by' + cy = 2sin(x), y0(x) = y0 ....
 +
 +
 +
== Диференциране ==
 +
 +
<pre>
 +
>> 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)
 +
</pre>
 +
 +
<pre>
 +
>> 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
 +
</pre>
  
  

Revision as of 11:48, 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') - частно решение

Sistema ОДУ [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