Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Лабораторна робота №1
Тема: «Основні команди і функції MATLAB»
Львів – 2008
Мета роботи: Вивчити формати основних команд і функцій MATLAB, навчитися застосовувати їх для розв’язування задач лабораторних робіт даної дисципліни.
Розв’язування нелінійних рівнянь
Для розв’язування нелінійних рівнянь в MATLAB 4.х призначена функція fzero. Формат цієї функції такий: fzero(’ім’я функції’, х0, tol), де х0 – нульове наближення розв’язку; tol – точність шуканого розв’язку, що задається користувачем.
Розв’язування звичайних диференційних рівнянь (систем)
Для розв’язування систем нелінійних рівнянь а MATLAB 5.х призначена функція fsolve. Формат цієї функції наступний: fsolve(’ім’я функції’, х0, tol), де ’ім’я функції’ – процедура-функція, в якій всі рівняння системи представлені у вигляді fi=0, i= (n – кількість невідомих); х0 – нульове наближення розв’язку; tol – точність шуканого розв’язку, що задається користувачем.
Числове інтегрування
Для обчислення інтегралів числовим методом використовують дві функції, формати яких є такими: quad(’ім’я функції’,a,b,tol) і quat8(’ім’я функції’,a,b,tol),
Де ’ім’я функції’ – ім’я процедури-функції, в якій записано підінтегральний вираз; a,b – відповідно верхня і нижня границі інтегрування; tol – точність обчислення визначеного інтегралу.
Розв’язування звичайних диференційних рівнянь (системи)
Для чисельного інтегрування звичайних диференційних рівнянь (ЗДР) (систем звичайних диференційних рівнянь) в MATLAB є декілька функцій
Апроксимація експериментальних даних поліномом
Для апроксимації експериментальних даних в MATLAB використовують функцію polyfit (x,y,n), де y – значення функції при відповідних значеннях аргументу х; n – степінь полінома p(x), яким апроксимують експериментальні дані. Функція polyfit знаходить коефіцієнти полінома p(x) в степені n, який апроксимує функцію y(x) методом найменших квадратів. Для обчислення значення полінома у точках х використовують функцію polyval (p,x), де p – вектор значень коефіцієнтів полінома p(x) n-ї степені.
Порядок виконання роботи
1. Протабулювати функцію і побудувати її графік на заданому інтервалі
y=tg|3x|+|cos(x)-1| x [-π/5, π/3]
function y=kom1(x);
y=tan(abs(3*x))+abs(cos(x)-1);
%kom_lab1
clear,clc
x1=-pi/5;
x2=pi/3;
n=10;
xt=[x1:(x2-x1)/n:x2];
yt=tan(abs(3*xt))+abs(cos(xt)-1);
yt=kom1(xt);
disp('x');disp(xt');
disp('y');disp(yt');
xg=[x1:(x2-x1)/100:x2];
yg=tan(abs(3*xg))+abs(cos(xg)-1);
yg=kom1(xg);
x_z=fzero('kom1',(x1+x2)/2);
figure('numbertitle','off','name','y=f(x)');
plot(xg,yg,'b',xt,yt,'or',x_z,0,'*g','linewidth',2);grid
xlabel('x');
ylabel('y');
title('Graphic KOMARETSKIY');
s1=quad('kom1',x1,x_z,1e-5)
s2=quad('kom1',x_z,x2,1e-5)
s3=quad('kom1',x1,x2,1e-5)
x
-0.6283
-0.4608
-0.2932
-0.1257
0.0419
0.2094
0.3770
0.5445
0.7121
0.8796
1.0472
y
-2.8867
5.3465
1.2515
0.4038
0.1272
0.7484
2.1953
-15.7499
-1.3327
-0.1872
0.5000
s1 = 9.5034
s2 = -11.1031
s3 = -1.5943
2. Розв’язати систему звичайних диференційних рівнянь (ЗДР)
y'=x+y2 x [0, 1], y(0)=0.5;
function z=kom2(x,y);
z=x+y.^2;
%kom_lab1
clear,clc
x1=-pi/5;
x2=pi/3;
n=10;
xt=[x1:(x2-x1)/n:x2];
yt=tan(abs(3*xt))+abs(cos(xt)-1);
yt=kom1(xt);
disp('x');disp(xt');
disp('y');disp(yt');
xg=[x1:(x2-x1)/100:x2];
yg=tan(abs(3*xg))+abs(cos(xg)-1);
yg=kom1(xg);
x_z=fzero('kom1',(x1+x2)/2);
[x,y]=ode23('kom2',0,1,0.1);
figure('numbertitle','off','name','y=f(x),dy/dx=f(x)');
plot(x,y,'b',x,kom2(x,y),'r');grid;
legend('y=f(x)','dy/dx=fx');
3.Апроксимувати експериментальні дані поліномами 1, 2 і
3-го порядків.
x
y
-12
-11
-10
-9
-8
-7
-6
-5
-4
-3
1
2.1
2.9
3.5
5.5
4.9
5.0
3.8
2.7
2.2
function y=kom1(x);
y=tan(abs(3*x))+abs(cos(x)-1);
%kom_lab1
clear,clc
x1=-pi/5;
x2=pi/3;
n=10;
xt=[x1:(x2-x1)/n:x2];
yt=tan(abs(3*xt))+abs(cos(xt)-1);
yt=kom1(xt);
disp('x');disp(xt');
disp('y');disp(yt');
xg=[x1:(x2-x1)/100:x2];
yg=tan(abs(3*xg))+abs(cos(xg)-1);
yg=kom1(xg);
x_z=fzero('kom1',(x1+x2)/2);
xe=[-12 -11 -10 -9 -8 -7 -6 -5 -4 -3];
ye=[1 2.1 2.9 3.5 5.5 4.9 5.0 3.8 2.7 2.2];
p1=polyfit(xe,ye,1);
f1=polyval(p1,xe);
p2=polyfit(xe,ye,2);
f2=polyval(p2,xe);
p3=polyfit(xe,ye,3);
f3=polyval(p3,xe);
whitebg;
figure('numbertitle','off','name','aproximation');
plot(xe,ye,'*r',xe,f1,'k',xe,f2,'g',xe,f3,'b');grid;xlabel('x');ylabel('y');
D1=f1-ye;
d1=D1./ye.*100;
del_s1=sqrt(sum(d1.^2));
D2=f2-ye;
d2=D2./ye.*100;
del_s2=sqrt(sum(d2.^2));
D3=f3-ye;
d3=D3./ye.*100;
del_s3=sqrt(sum(d3.^2));
disp(['polinom 1-го порядку - ' num2str(del_s1) '%']);
disp(['polinom 2-го порядку - ' num2str(del_s2) '%']);
disp(['polinom 3-го порядку - ' num2str(del_s3) '%']);
polinom 1-го порядку - 207.2036%
polinom 2-го порядку - 49.5356%
polinom 3-го порядку - 42.4928%
Висновок: На цій лабораторній роботі я вивчив формати основних команд і функцій MATLAB (для чого кожен із них призначений), застосовувати їх для розв’язування лабораторних робіт даної дисципліни, навчився будувати різні графіки в середовищі MATLAB, застосовувати