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