You are on page 1of 9

Symbolic Math Toolbox – це адаптована до мови MATLAB версія

системи комп’ютерної математики Maple фірми Waterloo Maple,


Inc. Дана підсистема дозволяє використовувати принципи
символьної математики, на основі якої можна виконувати такі
операції, як розкриття дужок, перетворення виразів,
знаходження коренів рівнянь, похідних функцій та виразів
невизначених інтегралів.
Наведемо назви команд для аналітичних операцій, які
застосовуються у випадку перетворення виразів:
• subs – оперція підстановки;
• subexpr – операція запису з підстановками
• simplify – операція спрощення виразу;
• simple – операція спрощення виразу з перерахуванням
варіантів;
• expand – операція розкриття дужок;
• factor – операція розкладання виразу на множники;
• collect – операція перетворення вираження в поліном з
виділенням коефіцієнтів при ступенях заданих змінних;
• numden – операція приведення до раціональної форми;

Функція відображення графіків символьних функцій


ezplot(f2,-h,h)

syms a b c d x
t = solve(a*x^3+b*x^2+c*x == 0, x);
[r,s] = subexpr(t,'s');

>> r

r =

0
-(b + s)/(2*a)
-(b - s)/(2*a)

>> s

s =

(b^2 - 4*a*c)^(1/2)

Функція диференціювати - diff.


Щоб знайти похідну символьного виразу, слід скористатися
однією з наступних форм функції diff:

diff (S) Диференціює вираз S по незалежним змінним, певним


функцією findsym
diff (S, t) Диференціює вираз S по змінної t
diff (S, n) n раз диференціює вираз S
diff (S, t, n) n раз диференціює вираз S по змінної t

Функція інтегрувати - int.


int (S) Інтегрує вираз S по незалежним змінним, певним
функцією findsym. Якщо S - константа, то інтегрування
виконується по x
int (S, t) Інтегрує вираз S по змінної t
int (S, a, b) Обчислює певний інтеграл на проміжку [a, b]
int (S, t, a, b) Обчислює певний інтеграл по зазначеній
змінної

Функція знайти межа - limit.

Функція рішення рівнянь в символьній формі - solve


solve (E1, E2, ..., EN)
solve (E1, E2, ..., EN, var1, var2, ..., varN)
Функція solve повертає єдине символьний вираз, якщо
рівняння (система рівнянь) має єдине рішення і
вектор рішень в противному випадку. Якщо рівняння містить
періодичні функції і може мати нескінченне число рішеннь,
функція обмежується тим, що повертає корені за один період
в околиці нуля.

Функція dsolve може знаходити як спільне рішення ОДУ, так і


приватне рішення для заданих початкових або граничних
умов. При цьому слід дотримуватися певні обмеження на форму
запису рівняння (або системи рівнянь). Так, якщо невідома
функція позначена символічною змінної y, то її похідні
слід позначати як D [n] y, де в квадратних дужках вказано
порядок похідної. Таким чином, похідна повинна позначатися
символьному виразі Dy, друга похідна - D2y і т.д.
Функція dsolve може викликатися з різним набором
параметрів, в залежності від типу розв'язуваної задачі і
порядку системи рівнянь. Деталі можна знайти в
документації.

Нехай необхідно вирішити задачу Коші виду

y'' + 2y' + y = x sin 2x, y(0) = 1, yj(0) = ?1.

clear all;

eq ='D2y + 2*Dy + y - x*sin(2*x)'; Записуємо рівняння


x0 = 0; Початкові умови
y0 = 1;
y10 = -1;

ic1 = sprintf('( d) = d’\', x0, y0); Переводимо в символи


ic2 = sprintf('Dy( d) = d', x0, y10);
fprintf('Диференціальне рівняння:: \n s=0\n’, eq);
fprintf('Початкові умови: \n s\n s\n’, ic1, ic2);

Sol = dsolve(eq, ic1, ic2, ’x’); Вирішуємо початкову


задачу
if isempty(Sol) Якщо рішень немає, то ...
disp('Рішення не знайдені'); друкуємо відповідь
else В іншому випадку ...
n = length(Sol);
fprintf('Знайдено рішень: d \ n', n))
for i = 1:n друкуємо всі рішення
fprintf(’ 'Рішення\ny= s\n’, i, char(Sol(i)));
end
end

Об'явлення символьних обєктів


clear all
syms a b x
whos a b x
f=(sin(x)+a)^2*(cos(x)+b)^2/sqrt(abs(a+b))
f
pretty(f)

syms y
g=(exp(-y)+1)/exp(y)
g

h=f*g
h
pretty(h)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
z=sym('c^2/(d+1)') % попередження
pretty(z)
whos
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syms c d
z=sym('c^2/(d+1)')
pretty(z)
% обчислення символьних виразів vpa
cc=sym(sqrt(2))
vpa(cc)
Da=vpa(cc,100)
AD=double(Da)

r1=sym(1/3,'r')
r1=sym(1/3,'f')

Вектори Матриці
syms a b c d r f g h k L
whos

A=[a b; c d]
B=[r f; g h]
V=[k L];
C=A*B
det(A) % визначник
A1=inv(A) % обернена
pretty(A1)
X=A\V.' % рішення системи
A*X % перевірка рішення

simplify(A*X)
точні обчислення
format long
1.0e10+1.0e-10
lar=sym(1.0e10)
sm=sym(1.0e-10)
s=lar+sm
format short

%Розрахунок в символьному форматі


W=[3.5 6.4; 23 4.8]
V=[4.33 5.7]'
VV=sym(V)
AW=sym(W)
det(AW)
inv(AW)
X=AW\VV
B=double(AW)

Графічне зображення символьних функцій


syms x
ff=sym('x^2*sin(x)')
ezplot(ff,[-3 2])
grid on

fff=x^2*sin(x)
ezplot(ff,[-3 2])
grid on
syms a1 b1
Z=sym(a1^2+b1^3)
ezplot(Z,[-3 2 -3 2])
ezsurf(Z,[-3 2 -3 2])

Розкладення в ряд Тейлора


syms x
ttf=1/(1+x)
tf=taylor(ttf)
pretty(f)
ezplot(ttf,[-1 1.5])
hold on
ezplot(tf,[-1 1.5])
tf10=taylor(ttf,'Order', 10)
hold on
ezplot(tf10,[-1 1.5])

Знайти суму ряду

syms k
fs=(-1)^k/k^2
s=symsum('(-1)^k/k^2',k,1,Inf)
s
fs=(-1)^k/k^2
sf=symsum(fs,k,1,Inf)
%**********
taylortool % Додаток

Ліміт

syms a x
limit((1+1/x)^(a*x),x,Inf)
limit(sin(x)/x,x,0)

syms x
y2=(1+1/x)^x;
limit(y2,inf)

y3=1/x;
limit(y3,x,0,'left')

y4=1/x;
limit(y4,x,0,'right')
Похідна
p=diff(atan(x),x,1)
pretty(p)

p=diff(atan(x),x,2)
pretty(p)

Інтеграл

syms x
fi=x^3*exp(x)
I=int(fi,x)
pretty(I)
syms x h
int((x+h)^2/x,h)

Інтеграл визначений

syms a b x
f=(x^3+1)/(x-1)
I=int(f,x,a,b)
pretty(I)

Рішення рівнянь та систем


syms x
fu=x^3+x^2-5*x+1
r=solve(fu,x)
pretty(r)
r(1)
double(r(1))
ezplot(fu,[0 6])
double(r) % переведення в float
% перевірка рішення
simplify(subs(fu,'x',r(1))) %підстановка і спрощення
різні записи рішення рівнянь та систем

syms x
solve(sin(x)-.5)

d=solve(sin(x)-.5)

d=solve(x^2-.5)

a=double(d)
syms x y
[x,y] = solve(x^2 + x*y + y == 3,x^2 - 4*x + 3 == 0)

Система рівнянь solve

syms x1 x2
f1=x1*(2-x2)-cos(x1)*exp(x2)
f2=2+x1-x2-cos(x1)-exp(x2)
s=solve(f1,f2,x1,x2)
s.x1
s.x2
double(s.x1)
double(s.x2)

%перевірка рішення
Pf=simplify(subs(f1,'x1',s.x1))
pf2=simplify(subs(Pf,'x2',s.x2))

%Система 3х рівнянь
syms t1 t2 t3
f1=(1-0.5)*exp(t3)-2*exp(t2)+2*exp(t1)-1;
f2=(1-0.5)*exp(0.5*t3)-2*exp(0.5*t2)+2*exp(0.5*t1)-1;
f3=(1-0.5)*exp(0.25*t3)-2*exp(0.25*t2)+2*exp(0.25*t1)-1;
[T1,T2,T3]=solve(f1,f2,f3,t1,t2,t3)
TT1=vpa(T1,4)
TT2=vpa(T2,4)
TT3=vpa(T3,4)
% перевірка рішення
O4=(1-0.5).*exp(T3(3))-2.*exp(T2(3))+2.*exp(T1(3))-1\
Рішення диференціального рівняння першого
порядку
% x'+2x=sin(t), x(0)=10

close all
%D -Dx- позначає похідну
syms x,t
d=dsolve('Dx+2*x=sin(t)','x(0)=10','t')
%diff(x)-позначає похідну
syms x(t) t
x=dsolve(diff(x)==sin(t)-2*x,'x(0)==10','t')
x % – рішення

t=[0:0.1:12]; %- побудова графіка


% в plot зaписуємо рішення
% % % % plot(t,(x))
plot(t,(51*exp(-2*t))/5 - (5^(1/2)*cos(t + atan(2)))/5)
ezplot(x,[0 12])

Символьне рішення диференціального рівняння


другого порядку.
D2 -позначення другої похідної

f=dsolve('100*D2x+10*D1x+101*x=50*sin(0.25*t)','x(0)=0','Dx
(0)=1','t')
% Рішення. Права частина рівняння =50*sin(0.25*t)
ezplot(f,[0 150])

% Рішення. Права частина рівняння =0


f3=dsolve('100*D2x+10*D1x+101*x=0','x(0)=0','Dx(0)=1','t')
ezplot(f3,[0:50])

f4=diff(f3,1)

Приклади рішень диференційних рівняння

x1=dsolve('Dx=-0.5*x','x(0)=10')

ezplot(x1,[-0.5,7]),grid,title('Диф.рівняння')

[x1,x2]=dsolve('Dx1=-
0.5*x2','Dx2=3*x1','x1(0)=0','x2(0)=1');

ezplot(x1,0,13),grid,hold on,ezplot(x2,
[0,13]),title('Однородна система 2-х рівнянь')
x=dsolve('2.5*D2x+3*Dx+5*x=12','Dx(0)=0','x(0)=0');

ezplot(x,[-0.2 9]),grid,title('Диф.рівняння 2-го порядку')

x=dsolve('1.5*D3x+4*D2x+3*Dx+5*x=12','D2x(0)=0','Dx(0)=0','
x(0)=0');

ezplot(x,[-0.2 21]),grid,title('Диф.рівняння 3-го порядк')

You might also like