Semestr zimowy 2002/03 - archiwum



Konsultacje: poniedziałek 10-11,  inne terminy ewentulnie i najlepiej wcześniej umówić się  e-mailem: lmarcin at mimuw.edu.pl, pok.1020 (na parterze koło biblioteki). Należy też sprawdzić: Plan.


Wstęp do informatyki (I rok matematyki do wykładu Leszka Płaskoty)
Zaliczenie: kolokwium (40pkt) + projekt tzn program w Pascalu (40pkt) - trzeba zaliczyc program i w sumie miec co najmniej 41 pktów na możliwych do uzyskania 80pktów. 

Wyniki kolokwium i zaliczenia projektu:(aktualizowane w miarę na bieżąco, pdf- mozna odczytac acrobat readerem, przepraszam za brak polskich liter w nazwiskach)

Projekty (do wyboru): termin ostani lab

Ponieważ co druge zajęcia średnio są w labie więc będę zamieszczał informację  o terminach labów dla obu grup (może się to zmieniać w miarę potrzeb).

Terminy labów:
Grupa w poniedziałek 8:30-10(Lab 5):14.X, 28.X,(11.XI.2002 - święto - wolne),18.X|,2.XII,16.XII,13I
Grupa w środę 8:30-10(Lab 5):16.X,23.X(za 9.X),6.XI,20XI,4XII,18XII, 8I(część??),15I

Program labów:
  1. zmiana hasła, wstępne zapoznanie sie ze środowskiem Turbo Pascala np 7.0, kompilacja możliwie prostych programów, instrukcje I/O write,witeln, read,realn, pętla 'For'. Program na sumowanie liczb od 1 do n dla zadanego n, ewentalnie wszystkich parzystych itp (16.X-pn,14.X-sr)
  2. Kontynuacja: pętle while, repeat until, program na dzielenie modulo z wykorzystaniem tylko dodawania liczb calkowitych, program zapis dowolnej liczby calkowitej binarnie, wykorzystanie tego do programu na potęge liczby dodatniej a do potęgi k, a>0, k naturalna. Implementacja programów omówionych na ćwiczeniach tablicowych czy na wykładzie. (30.X-pn, 23.X-sr)
  3. Funkcje i procedury, przerobienie części poprzednich programów na funkcje, parametry wywoływane przez wartość i zmienną. C.D. prostych algorytmów np dzielenie całkowite x div y kosztem rzędu log2(x/y). (6XIśr,17XIpon)
  4. Unit - przyklady , programy rekurencyjne przykłady - wieże Hanoi, symbol Newtona - wersja rekurencyjna i nierekurencyna, proste sortowanie np Bubblesort, SelectionSort itd wersja rekurencyjna i nie rekurencyjna. (20XI-sr,2XII-pon)
  5. Kontynuacja dla grupy srodowej (4XII-sr).
  6. Kontynacja programow rekurencyjnych. Obsługa plików - wczytać rekordy z pliku - posortować np Bubblesort - wypisać do tego samego albo innego pliku rekordy posortowane wg pola o typie porzadkowym. Ewentualnie to samo z wczytywaniem/wypisywaniem rekordów do pliku tekstowego typu text (16.XII-pon,18.XII-sr)
  7. Ocena projektu zaliczającego.  Wskaźniki - implementacja stosu wskaźnikowa ewen. listy jedno czy dwukierunkowej.(styczeń - drugi tydzień i być może połowa zajęć w 1 tygodniu zajęć)



Metody Numeryczne:  Informatyka II/III rok, środy 10:15-11:45 sala 3120, czw 12:15-13:45 sala 1030
Zaliczenie: kolokwia - (20k1+21k2=)41pktów, + projekt 7pkt - prosty program - celem projektu jest bardziej przetestowanie danego algorytmu a nie  pisanie skomplikowanych programów. (Zaliczenie od 50%* suma pkt z kolokwiów=20pkt).

Projekt  - do wyboru choć oczywiście zachęcam do wykonania obu.

Ważne!!! na stronie Pana Moszyńskiego  znajduje się 'ściągawka' tzn co warto sobie przypomnieć przed egzaminem. Warto aby Państwo to przeczytali.

Życzę powodzenia na egzaminie!

Wyniki kolokwiów: - niedostepne.
  1. Interpolacja Lagrange'a na dowolnym  [a,b] i węzłach dowolnych, przy czym testować w szczególności dla węzłów równodległych i węzłów Czebyszewa dla funkcji 1/(1+x*x) na odcinku [-5,5] i sin(x) na [0, 2Pi]. Rysować na ekranie funkcję i wielomian interpolacyjny z węzłami i pktami przecięcia . (Węzły Czebyszewa to zera n-tego wielomianu Czebyszewa T n  odpowiednio przesunięte i przeskalowane - n-ty wielomian Czebyszewa na [-1,1] jest zdefiniowany jako Tn(x)=cos(n*arccos(x)) i ma dokładnie n różnych zer : -1<x i<1, które z tego wzoru od razu dają się policzyć).
  2. Kwadratura trapezów złożona -czyli sumowanie wartości funkcji z wagami: testować funkcje różnej gładkości na  [0,1] dla których całka jest znana np sin(x), wielomiany niskich stopni np 1,2 czy x^p , p=k/2 k=1,2,3,4,5 itd, testować dla  h,h/2,h/4,h/8 dla h = 0.1 (h= 1/N gdzie N - ilość węzłów), porównywać błąd.Tzn obliczać całkę dla zadanego h i drukować bład między przybliżoną wartością całki a dokładna całką którą dla funkcji całkowych możemy obliczyć, przy okazji można obliczyć  i wypisać na ekranie iloraz błędu dla h przez błąd dla h/2.
 


Matematyka Obliczeniowa: matematyka II rok, środa 12:15-13:45 sala 5850
Zaliczeni: 1 kolokwium(33%) + projekt(34%) plus zadawane co 2-3 tyg proste zadania domowe komputerowe(33%)- sprawdzane za pomocą raportów z wynikami na 1 stronie co najwyżej formatu A4.  Tu będą te programy i treść projektu umieszczane sukcesywnie. Kolokwium 40pktów, projekt 40 pktów, zadani 40 pktów (5 zadań po 10 pktów, ale suma pktów z 4 zadań do wyboru) . Zaliczenie od 60pktów.  Nie ma kolowium poprawkowego!



Zadania:
  1. Porównać algorytmy obliczania a*a-b*b = (a-b)*(a+b) pierwszy:  obliczamy a*a i b*b i odejmujemy, drugi:obliczamy a+b i a-b i mnożymy.  Zaprogramować oba i znaleźć takie liczby a,b aby widać było lepszość jednego z nichw arytmetyce fl. W raporcie zamieścic te liczby a i b i wyniki obu algorytmów w tabelce, wyniki w podwójnej precyzji typu double (w pascalu lub C - ta sama nazwa) - (30.X.2002).
  2. Generować  macierze AN=(aij)i,j=1..N dla N=1..300 o elementach losowych aij z [0,1] i następnie obliczać  normę Frobeniusa ||AN||F .  Raport:wykres tej normy jako funkcji wymiaru tj. F(N)= ||AN||F   . (13.XI.2002) Rozwiązanie: powinna wyjść  z małymi odchyleniami punkty na prostej:( n,n*3 -0.5)
  3. Dla zadanego wektora u=(u1,...,u400) T w R400 i ui =(-1) i  dla i=1,..,400, napisać program który umożliwia dla dowolnego wektora z  R400 znalezienie jego obrazu przy przeksztalceniu Housholdera H=Id - 2w*w T takim  że przekształca u na a* e 1 gdzie a =-||u || 2  a  e 1 - wersor. Jako raport podać 3 liczby: normy ||H|| p dla p=1 i nieskończoność i normę drugą He3 (wektora który jest obrazem wersora e 3 przy przekształceniu H). Wszystko wykonać w arytmetyce double. Napisać jak państwo poradzili sobie z umieszczeniem w pamieci  H - tj. jak państwo zaimplementowali H - krótko w kilku zdaniach. (11.XII.2002)
  4. Dla macierzy A= (k1k2) ,wymiaru 4x2 o pierwszej kolumnie, k1=(1,1,1,1)T i drugiej k2=(0,1,2,3)T napisać program  rozwiazujacy L.Z.N.K. (||Ax-f||2=min||A y -f|| 2) z prawą strona f=(f0,f1,f2,f3) T  dla fi - czterech losowych liczb z odcinka [0,1]. Ponieważ rozwiązanie to x =(x1,x2) T to jako raport narysować wykres x1+x2*t na odcinku [-1,4] zaznaczając równocześnie pkty (i,fi), i=0,1,2,3. Proszę zauważyć, że powyższe L.Z.N.K. daje nam wzór na prostą taką że mamy możliwie najmniejsze   |x1+x2*0 -f0|2 + ...+  |x1+x2*3 -f3|2 czyli ta prosta będzie przechodziła 'możliwie blisko ' pktów (i,fi), i=0,1,2,3. (18.XII.2002)
  5. Napisać program który oblicza wielomian interpolujący zadaną funkcję f w 2 punktach: 0 i 1 z podwójną krotnością w 0 i pojedyńczą w 1, tzn tak żę wielomian w który otrzymamy spełnia w (i)= f(i), i=0,1; i w'(0)=f' (0) . Jako raport: na jednym obrazie wykres sin(4*x) i w dla tej funkcji na odcinku [-1,2] (y w zakresie [-2,2]). Zaznaczyć który wykres jest wiel. interp. a który funkcji.   (15.I.2003 - ostatnie zajęcia) 
Przepraszam za zmiane, jak ktoś zrobił problem 4 zanim przesunąłem terminy może go awansem oddać oczywiście wcześniej.
Projekt (do wyboru): (trudność chyba nie jest jednakowa choć wszystkie trzy nie są trudne programistycznie)
  1. Napisać program na algorytm eliminacji Gaussa bez wyboru elementu  głównego dla rozwiązywania  układu równań liniowych Ax = b z macierzą n x n symetryczna dodatnio określoną (dostajemy wersję metody Choleskiego) - skorzystać z symetryczności, dostajemy prawie o połowę mniej obliczeń (de facto rozkładamy A=L T DL ) gdzie L dolnotrójkątna z 1 na diagonali, D diagonalna z wartościami dodatnimi na diagonali, LT - transpozycja L )Testować dla prawych stron otrzymanych z mnożenia zadanego znanego wektora przez macierz A, a nastepnie drukowac bład względny między rozwiązaniem przybliżonym a dokładnym w normie 2 i bład residualny w tejże.  Macierze do testowania albo należy wczytywać z pliku albo podawać z klawiatury ewentualnie wzorem. Przykład takiej macierzy na którym proszę testować: macierz Hilberta a[i+1,j+1]=1/(1+i+j), i,j=0,..,n-1,zauważmy że a[i,j]= calka xi *xj na [0,1] stąd to macierz symetryczna (co od razu widać) i dodatnio określona (dlaczego?) inny przykład macierz A=(n+2)I+ L + L T gdzie I - macierz identyczności, n - wymiar, L -macierz dolnotrójkątna o losowych wartościach z przedziału [-1,1], LT - transponowana do L (skąd wiemy że  macierz A dodatnio określona?) .  Testować dla takich prawych stron dla których znam dokładne rozwiązanie tzn dany wektor y (wylosowane współrzędne), obliczamy b =A y i rozwiązujemy naszym algorytmem układ A x = b. Po rozwiązaniu drukować na ekranie błąd względny || x-y ||/||x || i residualny || A x -b ||/(|| A ||*||x||) dla normy drugiej  wektorów i || A || - norma Frobeniusa macierzy.
  2.  Interpolacja Lagrange'a: opis jak testować   powyżej.
  3. Napisać program który oblicza całkę z danej funkcji  na zadanym odcinku wykorzystując wartości  tej funkcji w pktach tak aby błąd między obliczoną przybliżoną wartościa był na określonym z góry poziomie - błąd ma być określony z klawiatury w ostateczności w kodzie programu. Możemy przyjąć że znamy  oszacowanie modułu drugiej pochodnej na tym odcinku - i dla takowych funkcji testować np. sin(x), cos(x), x^p, wielomiany różnych stopni itp W szczególności dla pewnych odcinków możemy policzyć dokładne wartości tych całek więc możemy sprawdzić w tych przypadkach czy rzeczywiśćie algorytm działa jak założyliśmy.  Testowanie: dla funcji o znanych całkach  i oszacowaniach drugiej pochodnej dla danych odcinków zastosować algorytm i następnie drukować bład sprawdzając czy rzeczywiście otrzymaliśmy zadaną dokładność. Wskazówka : Metody liczenia całek - porównaj treść powyżej - można też oczywiście użyć innej metody.




  Powrót do mojej strony domowej


Strona ostatnio uaktualniona - 15 stycznia 2003.