plik


Podstawy Programowania Wykad trzeci: Instrukcje warunkowe i iteracyjne. 1.Instrukcja warunkowa Je[li w programie wykonanie okre[lonych instrukcji jest zale|ne od pewnych warunkw to mo|emy skorzysta z jednej z dwch istniejcych w Pascalu konstrukcji jzykowych. Pierwsz z nich jest instrukcja warunkowa. Oto jej schemat oglny: if warunek then instrukcja1 else instrukcja2; Ten zapis mo|emy przeczyta jako: je[li warunek jest prawdziwy, to wykonaj instrukcja1, w przeciwnym przypadku wykonaj instrukcja2. Warunek mo|e by zmienn typu boolean lub wyra|eniem, ktrego warto[ ma taki wa[nie typ. Za pomoc schematu blokowego mo|na przedstawi dziaanie instrukcji warun- kowej nastpujco: Start Czy warunek NIE prawdziwy? TAK instrukcja1 instrukcja2 Stop Mo|liwe jest te| pominicie czonu else tej instrukcji, wwczas ma ona posta: if warunek then instrukcja; 2 a jej dziaanie mo|na opisa nastpujcym schematem blokowym: Start Czy warunek NIE prawdziwy? TAK instrukcja Stop Zamiast zo|onych instrukcji warunkowych, np.: if y<0 then if z>0 then if x<>0 then a:=(y+2)/x else else else a:=1; mo|na stosowa prostszy zapis czc warunki za pomoc odpowiednich opera- torw: if (y<0) and (z>0) and (x<>0) then a:=(y+2)/x; if y>=0 then a:=1; 3.Instrukcja wielokrotnego wyboru Je[li w programie istnieje kilka grup instrukcji, ktrych wykonanie zale|y od kilku warto[ci jednej zmiennej lub jednego wyra|enia, to mo|emy u|y instrukcji wielokrotnego wyboru, zamiast stosowa instrukcj if. Ta instrukcja ma nastpujc posta ogln: 3 case selektor of warto[_1 : instrukcja_1; warto[_2 : instrukcja_2; warto[_3 : instrukcja_3; . . . warto[_n : instrukcja_n; else instrukcja; end; Warto[ci w tym wyra|eniu musz mie[ci si typie selektora. Zamiast pojedynczej warto[ci mo|emy przy ka|dym przypadku umie[ci ich grup, rozdzielajc je przecinkami lub poda ich zakres, np.: 0..5. Czon else mo|na pomin. Selektor jest zmienn typu porzdkowego lub wyra|eniem majcym warto[ tego typu. Oto schemat blokowy dla tej instrukcji: Start Czy TAK selektor=warto[_1 ? instrukcja_1 NIE Czy TAK selektor=warto[_2 ? instrukcja_2 NIE instrukcja Stop 4 4.Instrukcje iteracyjne (ptle) Je[li zachodzi konieczno[ kilkukrotnego wykonania instrukcji, to w jzyku Pascal mo|emy uczyni to za pomoc trzech dostpnych instrukcji iteracyjnych (ptli). Pierwsza z nich, ptla for, wystpuje w dwch postaciach i pozwala powtrzy instrukcj ustalon liczb razy. Oto schematy dla obu postaci tej instrukcji: for licznik:=wp to wk do instrukcja; for licznik:=wp downto wk do instrukcja; Zmienna licznik nazywana jest licznikiem lub zmienn sterujc ptli. Musi ona by typu porzdkowego. W przypadku pierwszej postaci ptli warto[ po- cztkowa (wp) powinna by mniejsza lub rwna warto[ci koDcowej (wk). W przypadku drugiej postaci powinna by wiksza lub rwna. Oto schemat blokowy dla pierwszej postaci ptli for: Start Czy wp<=wk ? TAK licznik:=wp NIE instrukcja TAK licznik=wk ? NIE licznik:=licznik+1 instrukcja Stop Przy ka|dym powtrzeniu ptli for jej licznik jest automatycznie zwikszany (nadawana mu jest warto[ nastpna w typie) lub zmniejszany. Dziaanie instrukcji for koDczy si kiedy licznik osignie warto[ wk. Je[li liczba powtrzeD ptli bdzie zale|na od spenienia okre[lonego warunku, to nale|y zastosowa ptl while lub repeat. Oto oglne postacie tych ptli: 5 while warunek do instrukcja; repeat instrukcja until warunek; Zapis ptli while mo|emy odczyta nastpujco: dopki speniony jest warunek wykonuj instrukcj, natomiast ptl repeat nastpujco: powtarzaj instrukcj, dopki warunek nie jest speniony. Oto schematy blokowe dla obu instrukcji: Start instrukcja warunek ? TAK NIE Stop Start instrukcja NIE warunek ? TAK Stop Warunek w przypadku obu rodzajw ptli musi spenia takie same wy- magania, jak w przypadku instrukcji warunkowej. Wewntrz ptli musimy umie[ci instrukcj, ktre zagwarantuj, |e warunek dla ptli while przestanie kiedy[ by prawdziwy, a dla ptli repeat stanie si kiedy[ prawdziwy. Wszystkie ptle mo|na zagnie|d|a, tzn. wewntrz ptli umieszcza inn ptl, nie- koniecznie tego samego typu. 6 4.Instrukcje continue i break Instrukcji continue i break w jzyku Pascal u|ywamy wycznie w poczeniu z instrukcjami iteracyjnymi. Umieszczamy je wewntrz ptli, ale nie wystpuj w nich samodzielnie s cz[ci instrukcji warunkowych. Je[li warunek jest speniony, to instrukcja break przerywa wykonanie ptli, natomiast instrukcja continue przerywa wykonanie bie|cej iteracji (powtrzenia) ptli i przechodzi do nastpnej. 5.Instrukcje strukturalne (zo|one) Je[li chcemy zgrupowa kilka instrukcji, tak aby byy one traktowane jako jed- na, to musimy w tym celu u|y nawiasw syntaktycznych begin i end. Instruk- cje, ktre maj by zgrupowane razem umieszczamy midzy tymi sowami kluczowymi. Tak konstrukcj nazywamy instrukcj strukturaln lub zo|on. W przypadku instrukcji warunkowych i wielokrotnego wyboru mo|e ona nam posu|y do objcia warunkami wikszej liczby pojedynczych instrukcji. W przypadku ptli for i while umo|liwia wielokrotne wykonanie grupy instrukcji. Ptla repeat nie wymaga stosowania instrukcji strukturalnej. Uwaga: po ostatniej instrukcji znajdujcej si midzy begin i end nie jest wymagane umieszczanie [rednika, ale dobrym zwyczajem jest nie stosowanie si do tej zasady. Po sowie end w wikszo[ci przypadkw umieszczamy [rednik. Wyjtkiem od tej reguy jest blok gwny programu, ktry rwnie| jest instrukcj zo|on. W jego przypadku po sowie kluczowym end wystpuje zawsze kropka. 6.Instrukcja goto Instrukcja goto mo|e by u|yta jako zamiennik opisywanych wcze[niej ptli. Wymaga ona zadeklarowania i umieszczenia w programie etykiety okre[lajcej punkt do ktrego ma przej[ sterowanie po wykonaniu instrukcji goto. Ponie- wa| sowo kluczowe goto wystpuje w wikszo[ci popularnych jzykw programowania byo ono nadu|ywane przez programistw, co prowadzio do powstawania trudnych do analizy kodw zrdowych programw. Uwag na to zjawisko zwrci wybitny informatyk teoretyczny Edsger Dijkstra, ktry w jednym ze swych artykuw wrcz zakaza u|ywania w programach tej instrukcji. Obecnie jest ona u|ywana bardzo rzadko. Stosuje si j najcz[ciej do obsugi bdw, lub wtedy, kiedy trzeba przyspieszy dziaanie programw (optymalizacja czasu wykonania programu). 7 7.Przykady Pierwszy przykad ilustruje u|ycie osawionej instrukcji goto1 oraz instrukcji continue. Zadaniem programu jest wypisanie liczb naturalnych od 1 do 15 na ekran, a nastpnie wypisanie wszystkich liczb naturalnych parzystych od 2 do 20 w kolejnych wierszach. program skok_i_kontynuacja; uses crt; label ety1; var i:byte; begin ety1: i:=i+1; writeln(i); if i<>15 then goto ety1; readln; i:=0; {Wypisz wszystkie parzyste.} while i<>20 do begin i:=i+1; if odd(i) then continue; writeln(i); end; readln; end. Pierwsza czynno[ jest zrealizowana za pomoc instrukcji goto. Wewntrz ptli warto[ zmiennej i jest zwikszana o jeden (mo|na zamiast zastosowanej tu instrukcji przypisania u|y procedury inc) i wypisywana na ekran. W instrukcji warunkowej nastpuje sprawdzenie, czy warto[ i jest r|na od 15. Je[li nie, to wykonywany jest skok do instrukcji oznaczonej etykiet ety1, je[li tak, to program wykonuje nastpn w kolejno[ci instrukcj, czyli readln. Wypisanie liczby parzystych realizowane jest za pomoc instrukcji while. Tu rwnie| wykorzystywana jest zmienna i, ktrej przed wykonaniem ptli ponownie jest nadawana warto[ 0. Tym razem w instrukcji warunkowej badamy, czy jej warto[ jest nieparzysta, je[li tak, to wracamy na pocztek ptli, pomijajc instrukcj writeln(i). Prosz zwrci uwag na zastosowanie 1 Zgodnie z zaleceniami E. Dijkstry, prosz jej nie wykorzystywa w swoich programach, chyba |e otrzymacie PaDstwo wprost polecenie jej u|ycia. 8 instrukcji strukturalnej w tej ptli. Je[li nie u|yliby[my sw kluczowych begin i end, to wykonywaa by si tylko instrukcja i:=i+1;2 Prosz rwnie| zwrci uwag na formatowanie kodu zrdowego. Wszystkie instrukcje, ktre zamknite s w instrukcji strukturalnej, zapisane s z wciciem wynoszcym dwie spacje. Rwnie| w przypadku fragmentw programu zamknitych w sekcjach typu var, const lub instrukcjach warunkowych i wielokrotnego wyboru zaleca si stosowanie takich wci. Nie s one wymagane przez kompilator, ale poprawiaj czytelno[ kodu. Drugi przykadowy program oblicza najwikszy wsplny dzielnik wedug al- gorytmu Euklidesa, ktry zosta podany na pierwszym wykadzie. program NWD; uses crt; var M,N,R:word; begin clrscr; writeln(Podaj dwie liczby naturalne, wiksze od zera.); readln(N,M); repeat R:=M mod N; if R=0 then writeln(NWD = ,N); M:=N; N:=R; until R=0; readln; end. Analizujc ten program mo|na zauwa|y, |e nie jest on dokadn implementa- cj wspomnianego algorytmu, poniewa| kiedy R osignie warto[ zero nadal zostan wykonane dwie operacje przypisania. Kolejny program pokazuje, jak w prosty sposb zabezpieczy program przed bdem u|ytkownika polegajcym na wprowadzeniu cigu znakw nie bdcych liczb, kiedy program wymaga wa[nie liczby3. Wykorzystana jest do tego celu procedura val, ktra konwertuje cigu znakw na liczb. Procedura ta 2 Maa dygresja: Przy opisie ptli while i repeat wspomniane byo, |e nale|y umie[ci w nich in- strukcje, ktre zapewni spenienie warunku ich zakoDczenia. Opisywana instrukcja peni midzy innymi tak wa[nie rol, gdy| zmienia warto[ zmiennej i od ktrej zale|ne jest za- koDczenie ptli. Instrukcja ta jest zbdna w przypadku ptli for, dla ktrej inkrementacja licznika jest wykonywana automatycznie. 3 Czyli przed podaniem zych danych na wej[cie programu. 9 wykonywana jest w ptli repeat do momentu, a| u|ytkownik poda cig znakw bdcy liczb i konwersja si powiedzie (zmienna kod bdzie wwczas miaa warto[ 0). Opisane rozwizanie jest cz[ci zagadnienia nazywanego weryfikacj danych wej[ciowych. Ka|dy dobrze napisany program powinien zawiera kod sprawdzajcy poprawno[ wprowadzanych danych. program weryfikacja; var i,kod:integer; nap:string; begin repeat readln(nap); val(nap,i,kod); until kod=0; write(i); readln; end. Powy|szy program mo|na uzupeni o instrukcje informujce u|ytkownika o wyniku konwersji i instruujce go co robi gdy si ona nie powiedzie. Nastpny przykad to program liczcy silni. Aby zrozumie jego dziaanie naj- pierw przypomnijmy sobie definicj dziaania silnia: 0! = 1 1! = 1 n! = 1 * 2 * 3* ... * (n-1)*n Wypiszmy kilka przykadw silni dla maych n: 1! = 1 2! = 1*2 3! = 1*2*3 4! = 1*2*3*4 czyli 2! = 1!*2 3! = 2!*3 4! = 3!*4 10 Z powy|szej tabeli wynika, |e je[li znamy warto[ (n-1)!, to aby policzy n! na- le|y pomno|y t warto[ przez n. To spostrze|enie wykorzystywane jest w programie liczcym silnie: program silnia; uses crt; var sil:word; i,n:byte; begin sil:=1; repeat writeln(Podaj liczb naturaln nale|c do przedziau [0,8]); readln(n); until n<=8; for i:=1 to n do sil:=sil*i; writeln(Warto[ silni wynosi: ,sil); readln; end. W zmiennej n program bdzie przechowywa warto[ dla ktrej nale|y obliczy silni. Warto[ ta pobierana jest od u|ytkownika za pomoc procedury readln. Nie powinna ona by mniejsza ni| 0 i wiksza ni| 8, dlatego procedura readln jest umieszczona w ptli repeat, ktra sprawdza, czy u|ytkownik poda wa[ciw warto[. Wyznaczenie silni odbywa si w ptli for. Cz[ciowe wyniki s przechowywane w zmiennej sil, ktra wcze[niej musi by zainicjalizowana warto[ci 1. Prze[ledzmy wykonanie tej ptli dla n=3. Wykona si ona trzy ra- zy. Za pierwszym razem w zmiennej sil znajdzie si warto[ iloczynu 1*1, po drugim wykonaniu znajdzie si tam warto[ iloczynu 1*2, a za trzecim 2*3. Na- le|y zauwa|y, |e warto[ zmiennej i (licznika ptli) jest automatycznie zwik- szana o 1 po ka|dym wykonaniu ptli. Ograniczenie warto[ci zmiennej n wi|e si z typem zmiennej sil, w ktrej przechowywany s wyniki cz[ciowe i wynik ostateczny. Dla n>8 nastpuje przepenienie, czyli otrzymywane warto[ci nie mieszcz si w typie word. Zagnie|d|anie ptli jest ilustrowane programem wyznaczajcym kolejne liczby pierwsze. Najprostszy sposb na znalezienie wszystkich liczb pierwszych z okre- [lonego przedziau polega na zbadaniu, czy ka|da z nich dzieli si przez liczby od niej mniejsze (oprcz oczywi[cie zera i jedynki). Oto kod programu, ktry dziaa wedug takiego algorytmu. 11 program primes; uses crt; var i,j:word; prime:boolean; begin clrscr; for i:=2 to high(word) do begin prime:=true; for j:=2 to i-1 do if i mod j = 0 then begin prime:=false; break; end; if prime then write(i,, ); end; readln; end. Zewntrzna ptla for, peni rol generatora liczb z przedziau [2, 65535], ktre maj podlega sprawdzeniu. Te liczby s warto[ciami zmiennej sterujcej i. Sprawdzenie liczby dokonywane jest w ptli wewntrznej. Przed jej rozpoczciem zakadamy, |e testowana warto[ jest liczb pierwsz, co sprowadza si do nadania zmiennej prime, warto[ci true. Ta zmienna peni rol znacznika, okre[lajcego, czy badana liczba jest pierwsza. W wewntrznej ptli for sprawdzamy prawdziwo[ naszego zao|enia, czyli dzielimy sprawdzan liczb, przez wszystkie ktre j poprzedzaj. Je[li liczba nie jest pierwsza, to podzieli si bez reszty przez jedn z nich4. Je[li zajdzie taka sytuacja to nadajemy zmiennej prime warto[ false i przerywamy wykonanie ptli wewntrznej instrukcj brake. Je[li badana liczba jest pierwsza, to ptla nigdy nie zostanie przerwana przez instrukcj break i zmienna prime nie zmieni swej warto[ci. Po zakoDczeniu ptli wewntrznej w instrukcji warunkowej badamy, czy prime ma warto[ true je[li tak, to wypisujemy badan liczb na ekran, bo jest ona liczb pierwsz. Znajc konstrukcj ptli for oraz operatory bitowe mo|emy w prosty sposb znalez reprezentacj binarn liczby dziesitnej zapisanej w zmiennej okre[lo- nego typu5. Oto kod programu: 4 Inaczej: reszta z dzielenia bdzie rwna zero. 5 Inaczej: przedstawi liczb dziesitn w kodzie dwjkowym. 12 program dec2bin; uses crt; const j=32768; var x:word; i:byte; begin clrscr; writeln(Podaj liczb naturaln.); readln(x); writeln(Reprezentacja tej liczby w kodzie binarnym to:); for i:=0 to 8*sizeof(x)-1 do if x and (j shr i) = 0 then write(0) else write(1); readln; end. Zakadamy, |e liczba ktr bdziemy chcieli przeliczy jest przechowywana w zmiennej typu word. Zamiana jej reprezentacji na binarn opiera si na fakcie, |e w pamici komputera jest ona przechowywana wa[nie w postaci dwjkowej. Przeliczenie odbywa si w ptli for. Zmienna i bdca licznikiem ptli przyjmuje warto[ci od 0 do 15 (tak warto[ da wyra|enie 8*sizeof(x)-1). Staa j ma warto[ 32768, co odpowiada liczbie binarnej, ktrej najstarszy bit jest jedynk, a pozostae maj warto[ zero. Ten pojedynczy ustawiony bit w staej j jest przesuwany w prawo (za pomoc operatora shr) o tyle miejsc, ile wskazuje warto[ zmiennej i, co daje efekt jego przesuwania o jedn pozycj w ka|dej iteracji. Otrzymana warto[ jest u|ywana nastpnie jako argument operatora and. Drugim argumentem tego operatora jest warto[ ze zmiennej x. Je[li ten sam bit w zmiennej x, co bit o warto[ci jeden w wyniku wyra|enia i shr j ma warto[ jeden, to operator and zwrci warto[ r|n od zera, je[li nie - zwrci warto[ zero. To pozwala nam wypisa warto[ci poszczeglnych bitw na ekran. Zasad dziaania programu mo|na pokaza na liczbach czterobitowych: 13 Liczba przeliczana ma posta dwjkow 0101, czyli 5 dziesitnie: 0101 and 1000 =0 wypisujemy 0 0101 and 0100 <> 0 wypisujemy 1 0101 and 0010 = 0 wypisujemy 0 0101 and 0001 <> 0 wypisujemy 1 Nale|y zauwa|y, |e t metod mo|na rwnie| zastosowa do liczb zapisanych w kodzie U2, czyli przechowywanych w zmiennych typu integer i longint6. Nastpny przykad liczy pierwiastki rwnania kwadratowego. Okazuje si, |e wzory znane ze szkoy [redniej nie daj poprawnych wynikw w implementacji a"c j"b komputerowej, je[li , ze wzgldu na wady typw zmiennoprzecin- kowych. Aby uzyska prawidowe warto[ci nale|y u|y nastpujcych wzorw: c q a"-1 "[bsgn b " ] x =q , x = , , gdzie sgn jest funkcj majc 1 2 2 a q warto[ 1 dla b>=0 i -1 dla b<0. Oto kod programu, ktry liczy pierwiastki rwnania kwadratowego, wedug podanych wzorw. program rownanie_kwadratowe; uses crt; var a,b,c,q,delta:real; begin clrscr; writeln(Podaj wspczynniki rwnania kwadratowego:); writeln(Wspczynnik a musi by r|ny od zera!); write(a:); readln(a); write(b:); readln(b); write(c:); readln(c); delta:=sqr(b)-4*a*c; if delta >= 0 then begin if b<0 then q:=-0.5*(b-sqrt(delta)) else q:=-0.5*(b+sqrt(delta)); writeln(x1 = ,q/a:7:4, x2 = ,c/q:7:4); end; readln; end. Ostatnie przykady dotycz wyliczania warto[ci takich funkcji matematycznych, 6 Istniej dwie stae MaxInteger i MaxLongInt, ktre s rwne najwikszym warto[ciom jakie mo|na przechowa w zmiennych o typach odpowiednio integer i longint. Nie mog one jednak peni roli staej j w powy|szym programie. W przypadku tych typw t rol musz peni stae o najmniejszych warto[ciach. To ze wzgldu na stosowanie kodu U2. 14 takich jak cos i exp. Istniej oczywi[cie w Pascalu gotowe funkcje liczce warto[ci kosinusa i ex, ale warto wiedzie jak sobie poradzi, gdyby nie byy one dostpne. Warto[ci tych funkcji mo|na obliczy z nastpujcych szeregw: 2 3 k x x x x x e =1 ... ... 1! 2! 3! k ! 2 4 6 2 "k x x x x cosx =1 - - ...-1k" ... 2! 4! 6 ! 2"k ! Pierwszy z prezentowanych poni|ej programw oblicza warto[ kosinusa dla kta /3. (kt podajemy w radianach!): program cosinus; uses crt; const eps=1E-11; var x,e,n:real; i:integer; begin clrscr; x:=pi/3; e:=1; n:=1; i:=1; while (abs(cos(x)-e)) > eps do begin n:=n*(-1*x*x/((2*i-1)*(2*i))); e:=e+n; inc(i); end; writeln(cos(x):10:10); writeln(e:10:10); readln; end. Zanim zaczniemy analiz tego programu nale|y zauwa|y, |e ka|dy kolejny element szeregu otrzymujemy mno|c jego poprzednika przez wyra|enie 2 x - , gdzie i jest numerem pozycji elementu w szeregu7. 2 "i -1"2 "i W programie zmienna x ma nadan warto[ kta, dla ktrego chcemy obliczy kosinus, a zmienne e (przechowuje sum elementw), n (warto[ kolejnych elementw cigu) i i (pozycja elementu w cigu) s zainicjalizowane warto[ci 1. Obliczenia s dokonywane w ptli while, ktra koDczy si, kiedy uzyskany przez program wynik r|ni si co do warto[ci bezwzgldnej o sta eps od warto[ci uzyskanej z funkcji cos8. W wierszu n:=n*(-1*x*x/((2*i-1)*(2*i))); liczone s warto[ci kolejnych elementw szeregu, a w nastpnym wierszu s one 7 Aby si o tym przekona wystarczy podzieli przez siebie dwa ssiednie elementy, w kolejno[ci prawy przez lewy. 8 Jest to podstawowa zasada porwnywania dwch liczb zmiennopozycyjnych. Nie mo|emy ich porwna bezpo[rednio, bo nigdy nie znamy ich dokadnego rozwinicia. Wyliczamy wic ich r|nic i sprawdzamy, czy jest mniejsza od ustalonej, bardzo maej liczby. 15 dodawane do wyniku koDcowego . Podobnie napisany jest program liczcy warto[ eksponenty. W tym przypadku x warto[ci kolejnych elementw cigu r|ni si o czynnik . Program liczy i warto[ e24. Oto jego kod zrdowy: {$N+} program exponenta; uses crt; const eps=1E-11; var e,x,n:extended; i:word; begin clrscr; e:=1; n:=1; x:=24; i:=1; while (abs(exp(x)-e)) > eps do begin n:=n*(x/i); e:=e+n; inc(i); end; writeln(Funkcja exp: ,exp(x):10:10); writeln(Exp z szeregu: ,e:10:10); readln; end. Prosz zwrci uwag, na zastosowanie dyrektywy kompilatora {$N+}, ktra nakazuje mu u|ycie rozkazw koprocesora matematycznego. Jest ona wymagana w [rodowisku Trubo Pascal, w [rodowisku Free Pascal mo|e, ale nie musi wystpowa. Dziki temu mo|emy korzysta z typu extended. Program dziaa rwnie| dla innych warto[ci x, ale nie wszystkie one prowadz do poprawnych wynikw. Funkcja cos dostpna standardowo w jzyku Pascal, prawdopodobnie nie wyznacza warto[ci z szeregu, gdy| jest to czasochonne. W przypadku kosinusa lepiej jest umie[ci w tablicy warto[ci tej funkcji dla typowych warto[ci kta. Je[li u|ytkownik za|yczy sobie warto[ci kosinusa, ktrej nie ma w tablicy, to mo|na j wyliczy za pomoc kosinusa sumy lub r|nicy ktw. Opisane metody wyznaczania warto[ci funkcji mo|na rwnie| zastosowa do funkcji sinus. Poni|ej, dla zainteresowanych podaj wzr na szereg Taylora i Mclaurina, z ktrych zostay wyprowadzone szeregi dla kosinusa i eksponenty: 16 i " f ' ' x f x 0 0 szereg Tylora : f x =f x f ' x "x -x "x -x 2 ...= "x -x i " 0 0 0 0 0 2! i ! i=0 " f ' ' 0 0 2 i i szereg Mclaurina : f x =f 0f ' 0"x "x ...= f "x " 2! i ! i=0 (Szereg Mclaurina uzyskujemy z szeregu Taylora podstawiajc za x warto[ 0 zero.) 17

Wyszukiwarka

Podobne podstrony:
PP1 wyklad
PP1 wyklad 8
PP1 wyklad 5
PP1 wyklad 1
PP1 wyklad 2
PP1 wyklad
PP1 wyklad 4
PP1 wyklad 5
PP1 wyklad 9
PP1 wyklad
PP1 wyklad 4
PP1 wyklad
Sieci komputerowe wyklady dr Furtak
Wykład 05 Opadanie i fluidyzacja
WYKŁAD 1 Wprowadzenie do biotechnologii farmaceutycznej

więcej podobnych podstron