background image

 

 

 

 

PODSTAWY MATLAB-a 

background image

 

 

 

1. 

Wprowadzenie

 

MATLAB jest programem służącym do obliczeń numerycznych. 
Na prawidłowość wyników uzyskiwanych w trakcie obliczeń mają wpływ dwa podstawowe elementy: 

 

 uwarunkowanie zadania - (złe uwarunkowanie powoduje, że nawet małe odchylenia danych 

wejściowych mają duży wpływ na wynik końcowy) 

 

 stabilność algorytmów - w trakcie obliczeń następuje kumulacja błędów; obliczenia w programie 

MATLAB dokonywane są na liczbach zmiennoprzecinkowych, zarówno te liczby jak i 
wykonywane na nich operacje obarczone są pewnymi błędami uzależnionymi od precyzji zapisu. 
Błędy te w trakcie obliczeń mają tendencję do przenoszenia się i kumulowania, a jeżeli powodują 
uzyskanie wyniku znacznie oddalonego od prawidłowego to mówimy o niestabilnym algorytmie 
obliczeniowym. 

 

Jedynym  używanym typem zmiennych  są macierze, przy czym MATLAB umożliwia również 

dokonywanie operacji arytmetycznych dla poszczególnych elementów macierzy, przy wykorzystaniu  
tzw. operatorów tablicowych. 
 

Macierze należy oznaczać dużymi literami, natomiast wektory  bądź tablice wartości mogą być 

oznaczane małymi lub dużymi literami. Tę samą zmienną zapisaną raz dużą literą raz małą MATLAB traktuje 
jako dwie różne zmienne. 
 
operatory arytmetyczne:   

 

 

 

 

 

operatory porównania 

 
 

*  

mnożenie 

 

 

 

 

 

 

== równe 

 

^ potęgowanie   

 

 

 

 

 

~= różne 

 + 

- 

dodawanie, 

odejmowanie 

    < mniejsze 

 

/ 

dzielenie (dzielenie prawostronne),   

 

 

> większe    

\ 

dzielenie lewostronne (A/B = (A'\B')') 

 

 

<= mniejsze 

równe 

 

transpozycja macierzy (tablicy) 

 

 

 

>= większe równe 

 

. tablica 

wartości 

 

Części dziesiętne oddzielane są kropką (np. 3.5, 100.9). Liczby ułamkowe postaci a*10-n zapisywane 

są następująco: ae-n. 

Można podać sposób wyświetlania obliczeń pisząc polecenie format  z odpowiednim parametrem  

(np. liczba 1/3; format short – 0.3334; format long – 0.33333333333334). 
 

W celu odróżnienia działań dokonywanych na macierzach od działań dokonywanych na tablicach 

wartości, w przypadku tablic wartości należy  zawsze po zmiennej umieścić kropkę przed znakiem 
mnożenia, dzielenia i potęgowania
 (np. (x.^4).*tan(x) + x.*sin(x) - x./cos(x)). W przypadku dzielenia 
umieszcza się kropkę również po stałej przed znakiem dzielenia (np. 2./x). 
 

Najczęściej używane znaki przy pisaniu własnego programu: 

 

%  

na początku linii – linia ta jest komentarzem 

  

 na 

końcu linii zawierającej wzory – program nie wyświetla pośrednich obliczeń 

%%   na początku pierwszej linii po której jest pusty wiersz – linia ta jest helpem do pliku 
... 

na końcu linii – dalszy ciąg danej linii w następnym wierszu 

  

clc 

czyszczenie okna poleceń (Command Window

 

Napisany program należy zachowywać w skrypcie z rozszerzeniem "m" i umieszczać w katalogu  

o nazwie MATLAB. Katalog ten należy założyć na dysku sieciowym użytkownika.  

background image

 

 

 

Program obliczeniowy uruchamiany jest 

poprzez napisanie w oknie MATLAB-a nazwy pliku  

bez rozszerzenia. Przed jego wywołaniem należy podać  ścieżkę dostępu: np. path(path,'g:\MATLAB')
 lub ustawić tę ścieżkę w MATLAB-ie. 

Niektóre obliczenia wymagają zastosowania wbudowanych funkcji MATLAB-a (np. całkowanie, 

różniczkowanie, wyznaczanie zer funkcji), wówczas w skrypcie deklaruje się dane zadanie jako własną 
funkcję pisząc: "function y = f(x)  .....  ", natomiast w nowym pliku lub w oknie programu należy napisać 
polecenie zawierające odpowiednią funkcję MATLAB-a (np. quadode23fzero). 

2. Definiowanie macierzy 

a) przez wyliczenie elementów: 

 
 

 

np. :  A = [2 2 1;3 4 5; 5 6 7] 

 

 

 

 

 
A = [2 2 1 

 

 

 

        3 4 5 

 

 

 

        5 6 7] 

 

Macierz deklaruje się poprzez umieszczenie jej elementów w nawiasach kwadratowych; poszczególne 

elementy macierzy oddzielane są spacjami; koniec wiersza oznaczany jest średnikiem, lub deklarowany jest 
poprzez wciśnięcie klawisza "Enter".  
 

b) przez wygenerowanie elementów: 

 

np. 

x = -5 : 0.1 : 8  

macierz wierszowa (-5 - pierwszy element;  0.1 - krok,  8 - ostatni 

     (131) 

element) 

y = f(x) 

macierz wierszowa (y1 = f(5) - pierwszy element,  y131 = f(8) - 
ostatni (131) element) 

 

c)  przez podanie zależności określającej elementy macierzy: 

 
 

 

np. 

dla macierzy Hilberta elementy macierzy określone są następującą zależnością:  

 

 

 

a(i, j) = 1 / (i+j-1); aby wyznaczyć elementy tej macierzy można skorzystać z biblioteki 

   programu 

pisząc polecenie hilb(n), gdzie n - stopień macierzy, lub napisać  własny 

   program: 
 
 

 

 

 

     n = 

 

 

 

 

for i = 1:n 

 

 

 

 

     for j = 1:n 

     A(i,j) 

1/(i+j-1); 

 

 

 

 

    end 

 

 

 

 

end 

 

 

 

 

disp(A) 

 
  napisanie 

średnika na końcu linii powoduje pominięcie wyświetlania pośrednich obliczeń 

 

 

disp() - wyświetlenie wyniku 

 

Elementy macierzy lub tablicy wartości umieszcza się zawsze w nawiasach kwadratowych, natomiast 

nawiasy zwykłe zarezerwowane są dla poleceń i funkcji MATLABA-a. 

Poszczególne elementy polecenia  bądź funkcji oddzielane są przecinkami i jeżeli nie stanowią 

zmiennej lub liczby umieszczane są w apostrofach (np. plot(x, y, ‘r*’)). 

Program pamięta wszystkie wykorzystywane zmienne, dlatego w przypadku wprowadzenia nowej 

zmiennej pod używaną wcześniej nazwą, należy usunąć starą zmienną poleceniem 

 

clear nazwa_zmiennej; można też usunąć wszystkie dotychczasowe zmienne pisząc clear all 

background image

 

 

 

3. Podstawowe działania  arytmetyczne  na 

macierzach i tablicach wartości 

 

=

22

21

12

11

a

a

a

a

A

 

 

=

22

21

12

11

b

b

b

b

B

 

 
 

= [1 2 

 

 

= [1 1 

 

 

 

 

       

        2 3] 

 

 

        2 1] 

 

 

a) mnożenie 

 

 

  macierzy 

 

+

+

+

+

=

22

22

12

21

21

22

11

21

22

12

12

11

21

12

11

11

b

a

b

a

b

a

b

a

b

a

b

a

b

a

b

a

B

*

A

 

 
 

A*B = [5 3 

 

 

 

       

                      8 5] 

 
 
 

  tablic 

wartości  

=

22

22

21

21

12

12

11

11

b

a

b

a

b

a

b

a

B

*

.

A

 

 
 

A.*B = [1 2 

 

 

 

 

 

              4 3] 

 

 

 

b) dzielenie 

 

macierzy

  

 

B

B

*

A

B

*

A

B

/

A

*

D

1

=

=

 

 

 
 

[ ]

( )

[ ]

( )

[ ]

( )

[ ]

( )

11

4

*

22

12

3

*

21

21

3

*
12

22

2

*
11

T

*

22

*

21

*
12

*
11

*

D

b

1

B

b

1

B

b

1

B

b

1

B

B

B

B

B

B

=

=

=

=

=

 

 

 

  

 

 

=

11

21

12

22

*

D

b

b

b

b

B

 

 

 

background image

 

 

 

 

21

12

22

11

b

b

b

b

B

=

 

 

 

+

+

=

=

=

21

12

22

11

11

22

12

21

21

12

22

11

21

22

22

21

21

12

22

11

11

12

12

11

21

12

22

11

21

12

22

11

1

21

12

22

11

11

21

12

22

11

21

21

12

22

11

12

21

12

22

11

22

*

D

1

b

b

b

b

b

a

b

a

b

b

b

b

b

a

b

a

b

b

b

b

b

a

b

a

b

b

b

b

b

a

b

a

B

*

A

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

B

B

B

 

 
 
 
A / B 
= [3 -1 

 

 

 

 

 

 

 4 -1]   

 

 

 
 
 

  tablic 

wartości  

=

22

22

21

21

12

12

11

11

b

a

b

a

b

a

b

a

B

/

.

A

 

 
 
 

A. / B = [1 2 

 

 

 

 

 

             1 3] 

 
 

 

 

 

 

2. / B = [2 2 

 

 

 

 

 

            1 2] 

 
 

 

 

 

 

2 / B - działania nie można wykonać 

  

 
 

c) potęgowanie 

 

macierzy

 

 

A^3 = A*A*A  

 
 

A^3 = [21  34 

      34 

 

55] 

 

tablic wartości  

=

3
22

3
21

3

12

3

11

a

a

a

a

3

.^

A

   

 
 

background image

 

 

 

A.^3 = [1  8 

 

 

 

 

 

             8  27] 

 

d) dzielenie lewostronne 

 
macierzy 

b

\

A

x

lub

b

A

x

to

b

Ax

x

x

x

b

b

b

a

a

a

a

A

b

x

a

x

a

b

x

a

x

a

1

2

1

2

1

22

21

12

11

2

2

22

1

21

1

2

12

1

11

=

=

=

=

=

=

=

+

=

+

 

 
 

x = A \ b  

- zapis rozwiązania układu równań liniowych metodą eliminacji Gaussa 

      

   z częściowym wyborem elementu głównego (dzielenie lewostronne) 

 

x = A

-1

- rozwiązanie układu równań metodą odwracania macierzy

 

 
 
np.: 

=

=

=

=

=

=

=

=

+

=

+

1

2

b

\

A

x

1

2

b

A

x

1

2

x

7

4

b

3

2

2

1

A

7

x

3

x

2

4

x

2

x

1

2

1

2

1

 

 

 

 

 
 
 

tablic wartości  

 

A

/

.

B

a

b

a

b

a

b

a

b

B

\

.

A

22

22

21

21

12

12

11

11

=

=

 

  
 
  

 

A. \ B = [1  1/2 

  

 

 

   1  1/3] 

 

 

 

 

 

 

 

 

background image

 

 

 

4. Rysowanie wykresów 

Rysowanie wykresów na płaszczyźnie umożliwia polecenie 

plot(), np.: plot(x, y, 'typ linii'),  

przy czym 

x - zmienna niezależna, y - zmienna zależna, natomiast typ linii określa kolor i znacznik linii. 

Dopuszczalne kolory i znaczniki linii: 
 
znacznik 

 

 

 

 

 

 

kolor 

 

(kropka)

 

 

 

 

 

 

y - żółty 

(mała 

litera 

o) 

     

m - fioletowy 

(mała 

litera 

x) 

     

c - jasno-niebieski 

+ 

(plus)   

 

 

 

 

 

- czerwony 

* (znak 

mnożenia) 

 

 

 

 

g - zielony 

- (minus)      b - niebieski 
: (dwukropek) 

     

w - biały 

-. 

(minus, 

kropka)     

k - czarny 

-- (minus, 

minus)   

 

Przykładowe polecenie: 

plot(x, y, 'r*') 

 

Można umieścić kilka krzywych w jednym układzie współrzędnych (np.: y = f(x),  z = f(x), u = f(x)) 

pisząc polecenie: 

plot(x, y, 'r*', x, z, 'c+', x, u, 'co')

 

Polecenie

 subplot pozwala na umieszczenie krzywych w kilku układach współrzędnych w jednym 

oknie. Składnia tego polecenia jest następująca:  

subplot(ilość wykresów w pionie, ilość wykresów w poziomie, kolejność)  

 
np. polecenia:  

subplot(2, 1, 1) 

  plot(x, 

y) 

  subplot(2, 

1, 

2) 

  plot(z, 

w) 

 

 

umożliwiają narysowanie dwóch wykresów w pionie, przy czym wykres (x, y) jako pierwszy umieszczony 
jest na górze ekranu, natomiast (z ,w) jako drugi na dole ekranu. 
 

Polecenia

 xlabel('tekst'),  ylabel('tekst')  i  title(‘tekst’) umożliwiają dołączenie etykiet do osi x i y 

oraz tytułu wykresu, natomiast polecenie 

text(x, y, 'tekst') pozwala na dodanie dowolnego tekstu na 

wykresie, przy czym 

(x, y) są to współrzędne określające początek tekstu.  

Polecenie

 grid on powoduje wyświetlenie linii siatki, grid off usuwa linie siatki z wykresu 

 

5.  Wybrane elementarne funkcje matematyczne 

 

abs(x)   

- wartość bezwzględna    

log(x)   

- logarytm naturalny 

max(x)  

- wartość maksymalna 

 

 

log10(x) 

- logarytm dziesiętny 

real(x)  

-  część 

rzeczywista 

   

sqrt(x)  

- pierwiastek kwadratowy 

imag(x) - 

część 

urojona    

exp(x)   

- funkcja wykładnicza 

cos(x)   

 

 

 

 

 

 

pi  

 

- liczba 

Π 

atan(x) 
sin(x)  

-

 funkcje 

trygonometryczne 

       

 

tan(x) 

background image

 

 

 

 

background image

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 

PRZYBLIŻANIE FUNKCJI 

background image

 

 

 

 

Interpolacja

 

Istnieją dwie podstawowe metody interpolacji: 

 

 liniowa - w danym przedziale funkcja zastępowana jest odcinkami linii prostej 
 paraboliczna - w danym przedziale funkcja zastępowana jest wielomianem określonego stopnia 

  (mogą to być wielomiany algebraiczne, trygonometryczne bądź funkcje sklejane) 

 

Program MATLAB, dzięki swojej funkcji bibliotecznej 

interp1, umożliwia dokonanie interpolacji 

funkcji jednej zmiennej 

y = f(x) w punktach x

i

 nie będących węzłami  

 
 

y

i

 = interp1(xw, yw, x 

i

, ’metoda’)   

(xw, yw) - węzły interpolacji 

 

następującymi metodami: 

 

 linear     - interpolacja liniowa 
 spline     - interpolacja funkcjami sklejanymi trzeciego stopnia 
 cubic      - interpolacja wielomianami trzeciego rzędu 
 nearest   - interpolacja za pomocą funkcji schodkowej 

 

We wszystkich przypadkach elementy wektora 

z muszą stanowić ciąg rosnący, natomiast trzecią 

metodę należy stosować tylko dla węzłów równoodległych. W składni polecenia można pominąć nazwę 
metody; wówczas metodą domyślną jest interpolacja liniowa. 
 

background image

 

 

 

Przykłady 

 

1.  Dla wartości zapisanych w tabeli dokonać interpolacji liniowej z krokiem 0,1 a następnie narysować 

wykres, przy czym wartości z tabeli zaznaczyć na wykresie 

*

 

x -5 -4 -3 -2 -1 0 1 2 3 4 5 
y  9,5  10,1 11,3 12,5 13,7 15,1 16,7 18,4 20,7 22,5 25,8 

 

 

%%interpolacja funkcji jednej zmiennej 

 

x=-5:1:5 

            

%(x,y) - współrzędne węzłów interpolacji 

y=[9.5 10.1 11.3 12.5 13.7 15.1 16.7 18.4 20.7 22.5 25.8] 

 

xi=-5:0.1:5 

           

%(xi,yi) – współrzędne punktów w których   

 

yi=interp1(x,y,xi,

'linear'

 

 

 

 

 

% dokonywana jest interpolacja

 

 

plot(x,y,

'*'

,xi,yi) 

grid on 

title(

'interpolacja funkcji jednej zmiennej'

xlabel(

'zmienna x'

ylabel(

'zmienna y'

text(1.5,11,

'* - wezly interpolacji'

)

 

 

 

 

 

-5

-4

-3

-2

-1

0

1

2

3

4

5

8

10

12

14

16

18

20

22

24

26

interpolacja funkcji jednej zmiennej

zmienna x

zm

ienna y

* - wezly interpolacji

 

background image

 

 

 

2.  Dokonać interpolacji liniowej funkcji 

( )

x

sin

x

y

2

Π

=

 w przedziale 

< -1; 4 > z krokiem 

0,5. Narysować wykres danej funkcji i funkcji przybliżającej w jednym układzie współrzędnych, 
natomiast wykres błędu interpolacji w drugim; węzły interpolacji zaznaczyć *. Wyznaczyć maksymalną 
wartość bezwzględnego błędu interpolacji w rozpatrywanym przedziale. 

 
 

%%interpolacja funkcji jednej zmiennej 

 

x=-1:0.01:4 

y=(x.^2).*sin(pi*x) 

xw=-1:0.5:4 

       

%(xw,yw) - współrzędne węzłów interpolacji

 

yw=(xw.^2).*sin(pi*xw)    

yi=interp1(xw,yw,x) 

    

%yi - wartości funkcji przybliżającej w punktach x 

%przedziału interpolacji

 

 

bl=y-yi 

        

%bl - błąd interpolacji

 

blm=max(abs(bl)) 

     

%blm - max wartość błędu interpolacji

 

 

subplot(2,1,1) 

plot(x,y,x,yi,xw,yw,

'*'

grid on 

title(

'wykres danej funkcji i jej przyblizenia'

xlabel(

'zmienna x'

)

 

ylabel(

'zmienna y'

)

 

text(1.7,-12.5,

'* - wezly interpolacji'

)

 

 

subplot(2,1,2) 

plot(x,bl) 

grid on 

title(

'wykres bledu'

xlabel(

'zmienna x'

ylabel(

'zmienna y'

 
 
 

Maksymalna wartość błędu interpolacji w rozpatrywanym przedziale wynosi: blm = 3,8265 

-1

-0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

-15

-10

-5

0

5

10

wykres danej funkcji i jej przyblizenia

zmienna x

zm

ienna y

* - wezly interpolacji

-1

-0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

-4

-2

0

2

4

wykres bledu

zmienna x

zm

ienna y

background image

 

 

 

 

Aproksymacja 

Aproksymacja jest to przybliżanie funkcji za pomocą wielomianów. 
Dla danej funkcji 

F(x) określonej w przedziale < a, b > poszukiwana jest funkcja f(x) dająca 

najmniejsze max różnicy pomiędzy funkcją 

F(x) a f(x) w całym przedziale < a, b >

 

 

 

|

)

x

(

f

)

x

(

F

|

sup

||

)

x

(

f

)

x

(

F

||

b

,

a

x

=

>

<

ε

 

Aproksymacja jednostajna jest to aproksymacja funkcji z przestrzeni C(T) funkcji rzeczywistych 

ciągłych w ustalonym zbiorze domkniętym T zgodnie z normą: 
 
 

 

|

)

x

(

f

|

max

||

f

||

T

x

ε

=

 

 

tzn. poszukiwany jest wielomian optymalny 

pf taki, że: 

 
 

 

||

q

f

||

||

pf

f

||

  

dla dowolnego 

q 

 

Znalezienie wielomianu optymalnego nie jest łatwe, dlatego często zastępuje się go wielomianem 

prawie optymalnym. 
 

Dana jest seria 

N danych (np. wyniki pomiarów) 

[

]

T

n

1

x

,....

x

x

=

 i odpowiadająca jej seria 

N wielkości 

[

]

T

n

1

y

,....

y

y

=

. Zadaniem aproksymacji jest znalezienie funkcji 

f(x) przybliżającej w sposób optymalny 

zależność pomiędzy 

x i y. Błędy przybliżenia są sumowane po N pomiarach, otrzymuje się wówczas tzw. 

odchylenie średniokwadratowe: 
 

 

 

=

=

N

1

i

2

i

i

))

x

(

f

y

(

N

1

J

 

 

ważne jest, aby wartość 

J była możliwie jak najmniejsza. 

 

Dokonywana jest aproksymacja funkcji 

y za pomocą wielomianu W(x)

 
 

 

0

1

1

r

1

r

r

r

a

x

a

...

x

a

x

a

)

x

(

W

+

+

+

+

=

 

  
 

Na podstawie posiadanych danych 

y = f(x) 

 

x

i

 

x

1

 

x

2

 ............ x

N

 

y

i

 

y

1

 

y

2

 ............. y

N

 

 

konstruowana są: 

 

 macierz wartości X o wymiarach N x (r+1);  

  gdzie 

N - ilość danych (x

i

, y

i

)r - stopień wielomianu przybliżającego W(x);  

 wektor współczynników wielomianu a;  
 wektor wartości y

 
 

background image

 

 

 

 

=

1

...

x

x

...

...

...

...

1

...

x

x

1

...

x

x

X

1

r
N

r
N

1

r
2

r
2

1

r
1

r
1

 

 

 

=

0

1

r

r

a

...

a

a

a

 

 

 

=

N

2

1

y

...

y

y

y

 

 
 

Iloczyn 

Xa daje kolumnowe wektory wartości wielomianu W dla poszczególnych danych x

i

. Szukany 

jest taki wektor 

a, aby Xa było jak najbliższe wektorowi y

 

 

2

a

N

1

i

2

i

i

a

||

Xa

y

||

N

1

J

||

Xa

y

||

min

)

a

x

y

(

min

=

=

=

 

 

poprzez rozwiązanie równania: 

 
 a=X\y 
 

minimalizowany jest średniokwadratowy błąd przybliżenia 

J

 

Tę metodę aproksymacji w MATLAB-ie realizuje funkcja 

polyfit

 
 

a = polyfit(x, y, r) 

 

 

r - stopień wielomianu 

 

Funkcja ta dla danych wektorów 

x i y znajduje wektor współczynników  a wielomianu stopnia 

przybliżającego najlepiej w sensie średniokwadratowym zależność pomiędzy wartościami 

x a y

Dla 

r = 1 otrzymuje się najprostszą metodę aproksymacji która nazywana jest regresją liniową; jest to 

aproksymacja za pomocą funkcji liniowej. 
 

Aby otrzymać wartości wielomianu przybliżającego 

W(x) należy posłużyć się funkcją MATLAB-a 

polyval
 
 

p = polyval(a, x) 

 

Funkcja ta wyznacza wartości wielomianu o współczynnikach określonych wektorem 

a dla 

wszystkich elementów wektora 

x (macierzy X lub liczby) a otrzymane wartości umieszcza w wektorze p lub 

macierzy 

P

 

 
 

background image

 

 

 

Przykład 

1.  Dokonać aproksymacji średniokwadratowej funkcji 

2

x

x

y

2

+

=

 wielomianem 2-go stopnia w przedziale 

<-1;1> z krokiem 0,01. Narysować wykres danej funkcji i funkcji przybliżającej w jednym układzie 
współrzędnych, natomiast wykres błędu aproksymacji w drugim. Wyznaczyć maksymalną wartość 
bezwzględnego błędu aproksymacji w rozpatrywanym przedziale. 

 
 

%%aproksymacja funkcji jednej zmiennej 

 

x=-1:0.01:1 

y=x./(x.^2+2) 

r=2         

%r - stopień wielomianu przybliżającego

 

a=polyfit(x,y,r) 

    

%a – wektor współczynników wielomianu przybliżającego

 

p=polyval(a,x) 

     

%p – wektor wartości wielomianu przybliżającego

 

bl=y-p        

%bl - błąd aproksymacji

 

blm=max(abs(bl)) 

    

%blm - max wartość błędu aproksymacji 

 

subplot(2,1,1) 

plot(x,y,x,p) 

grid on 

title(

'aproksymacja funkcji jednej zmiennej'

text(0.35,0.1,

'wykres wielomianu'

text(-0.5,-0.25,

'wykres danej funkcji'

xlabel(

'zmienna niezalezna'

ylabel(

'zmienna zalezna'

 

subplot(2,1,2) 

plot(x,bl) 

grid on 

text(-0.5,0.07,

'wykres bledu aproksymacji'

xlabel(

'zmienna niezalezna'

ylabel(

'zmienna zalezna'

 

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

-0.4

-0.2

0

0.2

0.4

aproksymacja funkcji jednej zmiennej

wykres wielomianu

wykres danej funkcji

zmienna niezalezna

zm

ienna z

a

lez

n

a

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

-0.1

-0.05

0

0.05

0.1

wykres bledu aproksymacji

zmienna niezalezna

zm

ienna z

a

lez

n

a

 

 

Maksymalna wartość błędu aproksymacji w rozpatrywanym przedziale wynosi: blm = 0,0546

 

background image

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 

ZERA FUNKCJI I WIELOMIANÓW 

background image

 

 

 
 

Zera funkcji i zera wielomianów 

 

 

Zera wielomianów 

Wielomian stopnia n o rzeczywistych współczynnikach posiada dokładnie n zer, przy czym  

dla każdego zera zespolonego istnieje dokładnie jedno zero z nim sprzężone. 

Analityczne wyznaczanie rozwiązań równań o skomplikowanych funkcjach jest często niemożliwe, 

dlatego duże znaczenie mają przybliżone iteracyjne metody rozwiązywania równań. Metoda iteracyjna polega 
na obliczaniu kolejnych przybliżeń wartości zera, wykorzystując wcześniej obliczone przybliżenia. 
 

W programie MATLAB jest dostępna funkcja 

roots(a), gdzie a jest macierzą wierszową zawierającą 

współczynniki wielomianu, dzięki której można wyznaczyć  wektor 

z zawierający zera (zarówno rzeczywiste 

jak i zespolone) wielomianu 

W(x) o znanych współczynnikach a

0

, a

1

,  ......

  

a

n-1

, a

n

 . 

 
 

Jeżeli

   

n

1

n

2

n

2

1

n

1

n

0

a

x

a

....

x

a

x

a

x

a

)

x

(

W

+

+

+

+

+

=

 

 
 

to

 

 

a = [a

0

 a

1  

......

  

a

n-1 

a

n

 
 

wówczas

 

 

z = roots(a) 

 
 

background image

 

 

 

Przykłady 

 

1.  Wyznaczyć wszystkie zera następującego wielomianu i narysować jego wykres w przedziale 

zawierającym zera (zera zaznaczyć *): 

 
 

12

x

14

x

6

x

15

x

7

x

x

)

x

(

w

2

3

4

5

6

+

+

=

 

 
 

 

%%zera wielomianu 

 

a=[1 -1 -7 15 -6 -14 12] 

 

%a - wektor zawierający współczynniki wielomianu

 

z=roots(a) 

      

%z - wektor zawierający zera wielomianu

 

 

x=-3.1:0.01:2.1 

y=x.^6-x.^5-7*x.^4+15*x.^3-6*x.^2-14*x+12 

 

plot(x,y,real(z),0,

'*'

)  

 

%real(z) - wektor zawierający części rzeczywiste wektora z 

 

grid on 

title(

'wykres wielomianu'

xlabel(

'x'

ylabel(

'w(x)'

 

 

-4

-3

-2

-1

0

1

2

3

-200

-150

-100

-50

0

50

100

wykres wielomianu

x

w(x

)

 

 

Wartości zer rozpatrywanego wielomianu są następujące:  

 

 
z = 

 
- 3.000  

 

  2.000  

 

  1 + 1.000i   

 

  1 – 1.000i 

 

 

  1.000  

 

 -1.000 

 

background image

 

 

 

2.  W przedziale <-3, 3> wyznaczyć wszystkie zera 

funkcji: 

)

1

x

ctg(

ar

)

2

x

(

y

+

=

      i  narysować jej 

wykres w tym przedziale; miejsca zerowe zaznaczyć 

o.  

 

%%zera funkcji 

 

%funkcję y=f(x) zadeklarować w skrypcie o nazwie np. zera.m:  

 

function 

y=f(x) 

y=(x+2).*atan(x-1) 

 

%w nowym skrypcie zamieścić polecenia służące do wyznaczenia zer i narysowania wykresu:   

 

 

x=-3:0.01:3 

y=(x+2).*atan(x-1) 

 

%ustalić punkty w otoczeniu których poszukiwane będą zera (np. 3 i -3)  

 

z1=fzero(

'zera'

,-3) 

   

%obliczenia dokonywane są z dokładnością  2,22*10

-16

 

z

2=fzero(

'zera'

,3,1e-6)  

 

%obliczenia dokonywane są z dokładnością 10

-6

 

 

plot(x,y,z1,0,

'ro'

,z2,0,

'ro'

grid on 

title(

'zera funkcji'

xlabel(

'x'

ylabel(

'y'

 

 

 

-3

-2

-1

0

1

2

3

-2

-1

0

1

2

3

4

5

6

zera funkcji

x

y

 

 

W przedziale <-3; 3> funkcja ta posiada dwa zera rzeczywiste: 

 

z1 = -2  

 

z2 = 1

 

background image

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

ALGEBRA LINIOWA 

background image

 

 

 
 

Algebra liniowa (układy równań liniowych) 

Układ równań liniowych o postaci:   

 

a x

b

ij

i

i

i j

n

=

=

,

1

   

i = 1, 2, .... n 

 
można przedstawić w postaci macierzowej:  

Ax = b  

A = [a

ij

]  - macierz układu 

 

 

 

 

 

 

 

 

 

b = [b

1

, b

2

, ... b

n

]

T

  - wektor prawych stron 

 

 

 

 

 

 

 

 

 

x = [x

1

, x

2

, ... x

n

]

T

  - wektor rozwiązania 

 

Jeżeli macierz 

A jest macierzą nieosobliwą (det(A

≠ 0), wówczas rozpatrywany układ równań ma 

dokładnie jedno rozwiązanie: 
 

 

 

 

 

x = A

-1

b   A

-1

 - macierz odwrotna do macierzy 

 
 

Podczas eliminacji Gaussa dokonywany jest rozkład macierzy 

A na iloczyn macierzy trójkątnych  

L i U, gdzie L - macierz trójkątna dolna (z jedynkami na przekątnej) i U - macierz trójkątna górna: 
 
 

 

Ax = b      i  A = LU 

⇒ 

LUx = b 

 

 
dokonując podstawienia: 

Ux = y  

⇒ 

Ly = b 

 

otrzymujemy układ równań:  

Ux

y

Ly

b

=

=

 

 

W przypadku eliminacji Gaussa z częściowym wyborem elementu głównego dokonywany jest rozkład 

trójkątny macierzy ze zmienioną kolejnością równań. 
 
 
 

background image

 

 

 

Przykład 
 

1.  Stosując metodę eliminacji Gaussa z częściowym wyborem elementu głównego i metodę odwracania 

macierzy rozwiązać następujący układ równań liniowych: 

 

 

 



=

+

=

+

+

=

+

=

+

+

4

u

3

z

3

y

x

3

1

u

z

2

y

x

5

3

u

2

z

y

x

2

10

u

z

5

y

2

x

 

 
 

%%układy równań liniowych 

 

A=[1 

-2 

         

%macierz układu

 

   2 1 -1 -2 

   5 1 2 -1 

   3 -1 3 -3] 

 

b=[10 

-3 

4]' 

        

%wektor prawych stron

 

 

x1=A\b           

%rozwiązanie metodą eliminacji Gaussa 

 

 

 

 

 

 

 

 

 

 

 

 

 

%z częściowym wyborem elementu głównego 

 

x2=inv(A)*b 

         

%rozwiązanie metodą odwracania macierzy 

 

 
Rozwiązanie powyższego układu równań jest następujące:

  

 

x1 = 
 
  -10.0000 
   20.0000 
   13.0000 
   -5.0000 
 

x2 = 
 
  -10.0000 
   20.0000 
   13.0000 
   -5.0000