Упражнение 5. Matlab

From Ilianko

Стринг с апостроф

Когато искаме апостроф слагаме два апострофа!

ilian'co => ilian''co
 >> ''diff''
 ??? ''diff''
      |
 Error: Unexpected MATLAB expression.
 
 >> '''diff'''
 ans =
 'diff'

Масив от клетки

Всеки елемент може да е от различен тип

Cells = { 10, pi, 3+4i, 'MuPad', [1 2 3], [1 2 3; 4 5 6] , {'a', 1} }

Cells = 

  Columns 1 through 5

    [10]    [3.1416]    [3.0000 + 4.0000i]    'MuPad'    [1x3 double]

  Columns 6 through 7

    [2x3 double]    {1x2 cell}

Достъп до всички данни на масива от клетки

for i = 1:6, Cells(i), end
Cells{6}{2}

Преобразувания на Лаплас

>> syms h w p k
>> syms t, ilaplace(h*w/((p^2+w^2)*(p^2+k^2)), p, t)
 
ans =
 
(h*sin(t*w))/((k + w)*(k - w)) - (h*w*sin(k*t))/(k*(k + w)*(k - w))
 
>> y = simplify(ans)
 
y =
 
(h*(k*sin(t*w) - w*sin(k*t)))/(k*(k^2 - w^2))
 
>> pretty(y)

  h (k sin(t w) - w sin(k t))
  ---------------------------
              2    2
          k (k  - w )
>>
syms p x, fi = ilaplace(1/(p-1)^2, p, x)
fi =
x*exp(x)

>> syms x p k w
>> f = exp(-k*x)*sin(w*x + k);
>> F = laplace(f, x, p)
 
F =
 
(sin(k)*(k + p) + w*cos(k))/((k + p)^2 + w^2)
 
>> syms t, pretty(simplify(F, p,x))
??? Error using ==> sym.simplify
Too many input arguments.
 
>> syms t, simplify(ilaplace(F, p,x))


 
ans =
 
sin(k + w*x)/exp(k*x)

Пример: ... няма го

>> syms x p ,laplace(exp(-x)*sin(2*x),x,p)
ans =
2/((p + 1)^2 + 4)
y = ilaplace(2*p/((p^2+p+1)*((p+1)^2+4)), p, x)
plot(-13:0.01:3,subs(y,x, -13:0.01:3))
Лаплас

Проверка

>> diff(y,x) +y + int(subs(y,x,t),t,0,x)
ans =
(2*cos(2*x))/(13*exp(x)) - (8*(cos(2*x)/4 - 2*sin(2*x)))/(13*exp(x)) - (8*(cos((3^(1/2)*x)/2)/4 +  

(3^(1/2)*sin((3^(1/2)*x)/2))/2))/(13*exp(x/2)) - (2*cos((3^(1/2)*x)/2))/(13*exp(x/2)) - (3*sin(2*x))/(13*exp(x)) + (4*(cos((3^(1/2)*x)/2) - (3^(1/2)*sin((3^(1/2)*x)/2))/6))/(13*exp(x/2)) + (14*3^(1/2)*sin((3^(1/2)*x)/2))/(39*exp(x/2))

>> simplify(ans)
ans =
sin(2*x)/exp(x)


Решаване системи линейни уравнения

A*x= B x = A\B % \ може да се прилага при правоъгълни матрици, при повече редове от колони се решава за средно квадратичната стойност

A = [3 7 5; 2 6 9; 4 4 4]
A =
    3     7     5
    2     6     9
    4     4     4
>> b = [2 3 4]'
b =
    2
    3
    4
>> A\b
ans =
   1.0500
  -0.4500
   0.4000

При лошо обоснована матрица може да има грешки

>> A = [1 2 3; 4 5 6; 7 8 9]
A =
    1     2     3
    4     5     6
    7     8     9
>> det(A)
ans =
    0  % -> лошо обоснована матрица
>> x = A\b
Warning: Matrix is close to singular or badly scaled.
        Results may be inaccurate. RCOND = 1.541976e-18. 
x =
 -3.333333333333333
  5.666666666666667
 -2.000000000000000

Eigen values lambda = eig(A)

трептения на системи с няколко степени на свобода


A*x = lam*x (A-lam*I)*x = 0 % homogenna

det(A - lam*I) = 0 % togava ima resheniq A[n][m]

a[1]lam^n + a[2]lam^(n-1) ... = 0 % edin polinom ot n stepen ima n re[eniq

lam[1], lam[2] ... - собствени стойности на матрицата А

за всяка собствена стойност има собствен вектор от решения

lambda = eig(A)
[X, L] = eig(A)
lambda[1] = L(1,1); lambda[2] = L(2,2)

Обощена задача на собствените стойности

A*x = lam*B*x % Anxn, Bnxn
(A-lam*B)x = 0
det(A-lam*B) = 0