2
 K P Dane wej ściowe Dane wyj ściowe akcja-działania warunek pytanie  jeżeli? TA K NIE  poc z ą tek  prog ramu wprowadzanie danych %Nazwa programu  - opis %działania programu %komentarze zmienna=input (’nazwa_zmiennej=’)  ...  if elseif else end wyraż enie instrukcje wyraż enie instrukcje instrukcje Instrukcja warunkowa instrukcje: proste, matematyczne specjalne: switch...case...end, for..end, while...end, Drukowanie wyników disp(zmienna-tylko jedna) disp strcat num2str  ( (zmienna=, (zmienna))) łą czenie kilku zmiennych zamiana zmiennej liczbowej na tekstow ą koniec skryptu - matlab nie wymaga specjalnego zako ńczenia k i e r u n e k p i s a n i a s k r y p t u Algorytmika - schematy blokowe  (wraz ze struktur ą  instrukcji Matlaba - wyt łuszczony druk) E. Freidenberg  K P Druk:a,b,f(a), f(  b) x=(a+b)/2 y=f(x) T AK T AK T AK NIE NIE E. Freidenberg y=0 ? f(a)* <0 ? f(x) b=x f(b)=y a=x f(a)=y |b-a|<eps ? Druk x a a b b x x f(x) f(x) f(a) f(a) Metoda bisekcji (połowienie przedziału)  Skrypt na metodę  bisekcji w Matlabie %Znajdowanie pierwiastków równania nieliniowego  c=input('c='); d=input('d='); %wprowadzenie warto ści przedziału do drukowania wykresu x=c:0.1:d; %ustalenie wektora x o warto ściach od c do d z krokiem 0.1  plot(x,funkcja(x)); %rysowanie wykresu dla argumentów x i warto ści funkcji zadeklarowanej %w m-pliku o nazwie funkcja.m  xa=input( 'xa=');xb=input('xb='); %końce przedziału pomiędzy, którymi jest pierwiastek  epsilon=1e-6; %dokładność (ma liczyć z dokładnością 1*10-6) licznik=0;  while abs(xb-xa)>epsilon  licznik=licznik+1; xc=(xa+xb)/2; if funkcja(xa)*funkcja(xc)<=0  xb=xc; else xa=xc; end end x0=(xa+xb)/2;  disp(strcat( '(',num2str(licznik), ') miejsce zerowe: ',num2str(x0))); %drukowanie wyniku 

bisekcja

  • Upload
    elamat

  • View
    829

  • Download
    0

Embed Size (px)

Citation preview

5/11/2018 bisekcja - slidepdf.com

http://slidepdf.com/reader/full/bisekcja 1/2

 

K

P

Dane wejściowe

Dane wyjściowe

akcja-działania

warunekpytanie

 jeżeli?

TAK

NIE

ocz ątek rogramu 

wprowadzaniedanych

%Nazwa programu

- opis%działania programu%komentarze

zmienna=input (’nazwa_zmiennej=’)

 

... 

if 

elseif 

elseend

wyraż enieinstrukcje

wyraż enieinstrukcje

instrukcje

Instrukcja warunkowa

instrukcje: proste, matematycznespecjalne: switch...case...end,for..end, while...end,

Drukowanie wyników

disp(zmienna-tylko jedna)

disp strcat num2str  ( (’zmienna=’, (zmienna)))

łączenie kilku zmiennych

zamiana zmiennej liczbowej na tekstow ą

koniec skryptu - matlab niewymaga specjalnego zakończenia

kierun

ek

pisania

skryptu

Algorytmika - schematy blokowe (wraz ze struktur ą instrukcji Matlaba - wytłuszczony druk)

E. Freidenberg   

K

P

Druk:a,b,f(a), f(b)

x=(a+b)/2y=f(x)

TAK

TAK

TAK

NIE

NIE

E. Freidenberg 

y=0?

f(a)* <0?f(x)

b=xf(b)=y

a=xf(a)=y

|b-a|<eps?

Druk x

a

a

b

b

x

x

f(x)

f(x)

f(a)

f(a)

Metoda bisekcji(połowienieprzedziału)

 

Skrypt na metodę bisekcji w Matlabie

%Znajdowanie pierwiastków równania nieliniowego c=input('c='); d=input('d='); %wprowadzenie wartości przedziału do

drukowania wykresu x=c:0.1:d; %ustalenie wektora x o wartościach od c do d z krokiem 0.1 plot(x,funkcja(x)); %rysowanie wykresu dla argumentów x i wartości funkcji

zadeklarowanej %w m-pliku o nazwie funkcja.m xa=input('xa=');xb=input('xb='); %końce przedziału pomiędzy, którymi jest

pierwiastek epsilon=1e-6; %dokładność (ma liczyć z dokładnością 1*10-6) licznik=0; 

while abs(xb-xa)>epsilon licznik=licznik+1; xc=(xa+xb)/2; 

if funkcja(xa)*funkcja(xc)<=0 xb=xc; 

else xa=xc; 

end end x0=(xa+xb)/2; disp(strcat('(',num2str(licznik),') miejsce zerowe: ',num2str(x0)));

%drukowanie wyniku 

5/11/2018 bisekcja - slidepdf.com

http://slidepdf.com/reader/full/bisekcja 2/2