Upload
lynda
View
33
Download
0
Embed Size (px)
DESCRIPTION
Příklady z Matlabu 2. Práce s polynomy v Matlabu. Zadávání polynomů Zadávají se jako vektory koeficientů polynomu. Polynom n-tého řádu je vektor o n+1 prvcích: p ( x )=2x 5 -3x 4 +x 2 -4x-2 p=[2, -3, 0, 1, -4, - 2] V yčí slen í pol y nomu (funkce polyval) pro x=2 : - PowerPoint PPT Presentation
Citation preview
Příklady z Matlabu 2
Práce s polynomy v Matlabu
• Zadávání polynomůZadávají se jako vektory koeficientů polynomu. Polynom n-tého řádu je vektor o n+1 prvcích:
p(x)=2x5-3x4+x2-4x-2
p=[2, -3, 0, 1, -4, -2]
Vyčíslení polynomu (funkce polyval) pro x=2 :
p(2)=2.25-3.24+22-4.2-2=10
polyval(p,2)
ans=10
Derivace polynomu (funkce polyder) :
polyder(p)
ans= [10 -12 0 2 -4]
Tedy d p(x)/dt = 10x 4 -12x 3 +2x-4
Kořeny polynomu (funkce roots) :roots(p)ans= 1.7900
0.5000 + 1.0790i 0.5000 - 1.0790i -0.7900
-0.5000 Vytvoření polynomu k zadaným kořenům (funkce poly):A=[1,3,2]r=roots(A)r= -2
-1poly(r)ans= 1 3 2
Vynásobení a vydělení polynomů :
a=[1, 2, 3]; b= [2, -2, 1];
conv(a,b) %násobení polynomu
ans= 2 2 3 -4 3
deconv(a, b) %dělení polynomů
ans=0.5
Proložení naměřených dat polynomy (funkce polyfit)
x=[ -4:0.5:4 ];
y=[ 0 : 0.5 : 3.5,4, 3.5:-0.5:0];
p1=polyfit(x, y, 1) %prolozeni dat polynomem 1.radu
p1= -0.0000 1.8824
p2=polyfit(x, y, 2) %prolozeni dat polynomem 2.radu
p2= -0.2229 0.0000 3.2198
p5=polyfit(x, y, 5) %prolozeni dat polynomem 5.radu
p5= 0.0000 0.0114 -0.000 -0.3972 0.0000 3.5285
Vykreslení do grafu:
x=[ -4:0.5:4 ];
y=[ 0 : 0.5 : 3.5,4, 3.5:-0.5:0];
p1=polyfit(x, y, 1); %prolozeni dat polynomem 1.radu
p2=polyfit(x, y, 2); %prolozeni dat polynomem 2.radu
p5=polyfit(x, y, 5); %prolozeni dat polynomem 5.radu
hold on
plot(x, y, 'r'); % původní data - červeně
plot(x, polyval(p1, x), 'b' ); % polynom 1.stupně - modře
plot(x, polyval(p2, x), 'g' ); % polynom 2.stupně - zeleně
plot(x, polyval(p5, x), 'k' ); % polynom 5.stupně - černě
hold off;
grid on
legend('lomena cara' , 'linearni prol. ', 'kvadraticke prol. ', 'polynom 5.radu') ;
Vykreslení do grafu:
-4 -3 -2 -1 0 1 2 3 4-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
lomena cara
linearni prol.
kvadraticke prol.
polynom 5.radu
Datová interpolace:
x1 = linspace( 0, 2*pi, 60 ); % lineární interpolace
x2 = linspace( 0, 2*pi, 6 );
plot(x1,sin(x1),x2,sin(x2), '--');
xlabel('x'); ylabel('sin(x)'); title('lineární interpolace');
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x
sin(
x)
lineární interpolace
Splinová interpolace (s využitím funkce interp1):
Tyto 2 vektory representují sčítání lidu od roku 1900 do roku 1990 a tomu korespondující množství populace v USA v milionech obyvatel.
t = 1900:10:1990;p = [75.995 91.972 105.711 123.203 131.669... 150.697 179.323 203.212 226.505 249.633];
Výraz interp1(t,p,1975) interpoluje tuto hodnotu v roce 1975. Výsledek je
ans = 214.8585
Nyní interpolujeme hodnotu od roku 1900 do roku 2000 a vyneseme výsledek do grafu:
x = 1900:1:2000; y = interp1(t,p,x,'spline'); plot(t,p,'o',x,y) grid on
1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 200050
100
150
200
250
300
Př.: Máme naměřené hodnoty bodů o souřadnicích x=[ 0:9 ]; y=[ 0,2,3,4,6,9,11,11,10,8]; Proložte je polynomem 1 až 8 řádu a vykreslete je do grafu.
clc; clearx = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; y = [0, 2, 3, 4, 6, 9, 11, 11, 10, 8];plot(x, y, 'or', 'MarkerSize', 10, 'MarkerFaceColor', 'r'); % nakresleni bodůgrid on; xlabel('x'); ylabel('y'); title('Prolozeni namerenych hodnot');
hold on; % umožnění připisování grafuxp=linspace(0,9,100);p=polyfit(x,y,1); y1=polyval(p,xp); plot(xp,y1,'k');p=polyfit(x,y,2); y2=polyval(p,xp); plot(xp,y2,'r');p=polyfit(x,y,3); y3=polyval(p,xp); plot(xp,y3,'g');p=polyfit(x,y,4); y4=polyval(p,xp); plot(xp,y4,'b');p=polyfit(x,y,5); y5=polyval(p,xp); plot(xp,y5,'c');p=polyfit(x,y,6); y6=polyval(p,xp); plot(xp,y6,'m');p=polyfit(x,y,7); y7=polyval(p,xp); plot(xp,y7,'y');p=polyfit(x,y,8); y8=polyval(p,xp); plot(xp,y8,'k');hold off;legend('namerene hodnoty', '1. stupen', '2. stupen', '3. stupen', '4. stupen', '5.
stupen', '6. stupen', '7. stupen','8.stupen');
0 1 2 3 4 5 6 7 8 9
-2
0
2
4
6
8
10
12
x
y
Prolozeni namerenych hodnot
namerene hodnoty1. stupen
2. stupen
3. stupen
4. stupen5. stupen
6. stupen
7. stupen8.stupen