Zadania z Maple`a
Transkrypt
Zadania z Maple`a
Matematyka komputerowa sposobem łatwym do pojęcia ułożona Krzysztof Rykaczewski 24 września 2012 Krzysztof Rykaczewski: Matematyka komputerowa © 2012 Strona internetowa: http://www.mat.umk.pl/~mozgun/ E-mail: [email protected] Stron: 105 Praca złożona w systemie LATEX 2ε przez Autora. Autorami zadań są: Rafał Szefler, Agnieszka Goroncy, Michał Janiszewski, Marcin Spryszyński, Radosław Rudnicki, Robert Skiba, Justyna Kosakowska, Andrzej Mróz, Jarosław Mederski, Krzysztof Rykaczewski. Skład oraz układ tekstu: Krzysztof Rykaczewski. Wszystkie rozwiązania (poza zadaniami 7, 13 oraz 7) pochodzą od Krzysztofa Rykaczewskiego i zostały zaimplementowane w Maple 9.5. Przez N, Z, Q, R oraz C oznaczamy odpowiednio zbiory liczb naturalnych, całkowitych, wymiernych, rzeczywistych oraz zespolonych. Dla K ∈ {N, Z, Q, R, C}, przez K[x] oznaczamy zbiór wielomianów o wpółczynnikach w zbiorze K. Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Spis treści 1 Podstawy – Maple jako kalkulator 2 2 Struktury danych w Maple 10 3 Powtórka ze szkoły średniej 15 4 Analiza matematyczna I 18 5 Analiza matematyczna II 28 6 Algebra 34 7 Procedury i instrukcje warunkowe w Maple 48 8 Analiza numeryczna 61 9 Zadania na dzień Π 82 10 Równania różniczkowe 85 11 Grafika w Maple 94 12 Rachunek prawdopodobieństwa i kombinatoryka 102 13 Zadania inne 104 14 Zadania domowe 109 15 Bibliografia 109 1 Podstawy – Maple jako kalkulator A classic is a book which people praise. — Mark Twain Zadanie 1. Zapoznaj się z obsługą Maple (zapisywanie i otwieranie plików, tworzenie rozdziałów, podrozdziałów, korzystanie z systemu pomocy (!)). Stwórz tytuł dla sesji, rozdział, podrozdział oraz napisz własny dowolny komentarz. Do czego służą skróty klawiszowe Shift+Enter, Ctrl+Space? Sprawdź na co wskazuje alias I. Zrób alias E na liczbę e. Sprawdź znaczenie zmiennych Pi i gamma. Sprawdź typy kilku zmiennych oraz sprawdź typ funkcji whattype. 1 about ( I ) ; alias ( E = exp (1) ) : protect ( E ) ; constants ; whattype ( whattype ) ; Zadanie 2. 1 Podstawy obsługi gui. π Podaj przybliżoną wartość ππ (przy domyślnej dokładności Maple’a). Obliczenia kalkulacyjne. Pi ^ ( Pi ^ Pi ) ; evalf (%) ; 2 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski Zadanie 3. 1 2 30 stycznia 2013 Oszacuj różnicę: 112311241125 − √ √ √ 1123 · 1124 1124 · 1125 1123 · 1125 przy 8-cyfrowej dokładności. Digits : = 8; 112311241125 - sqrt (1123 * 1124) * sqrt (1124 * 1125) * sqrt (1123 * 1125) ; evalf (%) ; Zadanie 4. Rozwiń liczbę π do 20-tego miejsca po przecinku, zaś liczbę e do 30-tego miejsca po przecinku. Oblicz (lub znajdź przybliżenia z dokładnością do 20 miejsc po przecinku): π π 10! ln(| cos(π · e)|) π e e π −100 , 123 , e − π , tan , sin(2009), π + e , sin 5 . , sin 4 5 7 cos(ln(π · e)) 1 2 3 evalf ( Pi , 20) ; evalf (E , 30) ; 5 ^ ( - 100) , sin ( Pi / 4) , 10 ! / 5 ^ 123 , E ^ ( Pi ) - Pi ^E , tan ( Pi / 7) : evalf (% , 20) ; sin (2009) , Pi * * E + E * * Pi , sin (( ln ( abs ( cos ( Pi * E ) ) ) ) / ( cos ( ln ( Pi * E ) ) ) ) : evalf (% , 20) ; Zadanie 5. 1 2 Oblicz (lub znajdź przybliżoną wartość z dokładnością do 15 miejsc znaczących): 4 3 √ √ 4 3π 15 4 − 3 cos(1) 4 √ . sin , 4 · π−3 , e−4 − 4e , 26332, 3 5 , tan(π2 ), cot( 1533), 17!, , 4 9 3! − 5π sin (3 * Pi / 4) , 4 * Pi ^ ( - 3) , E ^ ( - 4) - 4 ^ ( E ) , sqrt (26332) , 3 ^ (4 / 5) , tan ( Pi / 4) ; evalf (% , 15) ; cot ( sqrt [4](1533) ) , 17 ! , binomial (15 , 9) ^ 4 , (4 ^ 3 - 3 * cos (1) ) / (3 ! - sqrt (5) * Pi ) ; evalf (% , 15) ; Zadanie 6. Obliczyć: 10 2 , 1 2 3 8(33 − 10)7 √ 14!, , −2, sin 103 Oblicz 4 · sin − 7π · cos 23π · cot 7π 3 6 4 . cos 8π · sin (3π) + cos (−6π) 3 (4 * sin ( -7 * Pi / 3) * cos (23 * Pi / 6) * cot (7 * Pi / 4) ) / ( cos (8 * Pi / 3) * sin (3 * Pi ) + cos ( -6 * Pi ) ) ; Zadanie 8. Oblicz wartość wyrażenia 1+ 1 1 2+ 1 3+ . 1 4+ 1 1 1 + 1 / (2 + 1 / (3 + 1 / (4 + 1 / 1) ) ) ; Zadanie 9. 1 π π 2 π , tan , cot + kπ , gdzie k ∈ Z. 3 4 2 2 ^ 10 , sqrt (14 ! ) , 8 * (3 ^ (3 ^ 3) - 10) ^ 7 / 10 ^ 3 , sqrt ( - 2) ; sin (2 / 3 * Pi ) , tan ( Pi / 4) , cot ( Pi / 2 + k * Pi ) assuming k : : integer ; Zadanie 7. 1 √ Znajdź 2009-tą cyfrę rozwinięcia dziesiętnego liczby √ √ 2 2 . sqrt (2) ^ ( sqrt (2) ) ; evalf (% , 2010) ; Zadanie 10. Ile wynosi część całkowita liczby będącej sumą pierwiastków kolejnych dziesięciu liczb (począwszy od 6) podzielnych przez 6? 1 floor ( sum ( sqrt (6 * i ) , i = 1 ..10 ) ) ; Zadanie 11. Wyznacz sumę liczb naturalnych większych od 41 i mniejszych od 20082 , które przy dzieleniu przez 7 dają resztę 3. Ile cyfr ma ta liczba? 1 sum (7 * k + 3 , k = ceil (41 / 7) ..floor (2008 ^ 2 / 7) ) ; length (%) ; √ Zadanie 12. Wykonaj kolejno następujące operacje: podstaw pod zmienną k√liczbę 2 + sin(3) (wynik operacji nie powinien zostać wypisany na ekranie); podstaw pod zmienną t liczbę (10 + 13)2 (wynik√operacji powinien zostać wypisany na ekranie); zwiększ wartość zmiennej k o 10; podaj rozwinięcie dziesiętne liczby k + t2 . 1 k : = sin (3) + sqrt (2) : t : = (10 + sqrt (13) ) ^ 2; k : = k + 10; evalf ( sqrt ( k ) + t ^ 2) ; 3 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 13. Znajdź ilość cyfr liczby 218!−9 . Ile cyfr ma liczba 23!? Ile cyfr ma liczba 2216061 − 1? 1 length (21 ^ (8 ! ) - 9) , length (23 ! ) ; length (2 ^ 216061 - 1) ; Wyższe funkcje Maple’a (tricks). Zadanie 14. Rozwiąż układ równań x − 4y = 0, 3x − 7y = 6. Sprawdź czy zmienne x i y są zarezerwowane (na dwa sposoby). Przypisz rozwiązania. Zwolnij zmienne. 1 2 3 4 5 6 p1 : = x - 4 * y ; p2 : = 3 * x - 7 * y ; eqn1 : = p1 = 0; eqn2 : = p2 = 6; answer : = solve ({ eqn1 , eqn2 } , {x , y }) ; assign ( answer ) ; about (x , y ) ; x : = 'x ': y : = 'y ': # LUB u n a s s i g n ( x ) ; u n a s s i g n ( y ) ; Jaka jest różnica pomiędzy „;” oraz „:”, „:=” oraz „=”? Zadanie 15. Sprawdź działanie komendy: 1 f : = t - > t ^ 2; f ( i ) $i = 1 ..5 ; Czy znasz inny sposób na wykonanie ostatniej czynności? Zadanie 16. Sprawdź działanie pojedynczych cudzysłowów: prawego i lewego na wyrażenie w Maple. 1 ' sin ( Pi ) '; ` sin ( Pi ) `; Zadanie 17. Wykonaj wykres funkcji sign sin(x) . Dlaczego jest zły? 1 plot ( sign ( sin ( x ) ) , x = - Pi..3 * Pi ) ; Zadanie 18. Zdefiniuj ai = (konkatenacji). 1 2 3 4 i2 5 , dla i = 1, . . . , 6, i wypisz wynik w postaci listy korzystając z operatora sklejania for i to 6 do a || i : = i ^ 2 / 5; end do ; " a " ||(1 ..6 ) = a ||(1 ..6 ) ; Zadanie 19. Przypisz do nazwy 2+2 wynik 5. 1 `2 + 2 ` : = 5; Zadanie 20. Policz sin(1) używając sprzętowego obliczania zmiennoprzecinkowego. 1 2 u s e H a r d w a r e F l o a t s : = true : evalhf ( sin (1) ) ; Zadanie 21. Sprawdź wartość oraz podaj przybliżenie dla 1 2 P∞ 1 k=1 k2 . Sum (1 / k ^ 2 , k = 1 ..infinity ) ; value (%) ; evalf (%%) ; Zadanie 22. Sprawdź działanie komendy op na wielomianie i na liście. 1 2 p : = x ^ 3 - 4 * x ^ 2 + 3 * x - 5; op (2 , p ) ; L : = [1 , 7 , 0 , 33 , 6 , 12]; op (2 , L ) ; Zadanie 23. Która z liczb jest mniejsza ecos(3) , blog3 (8π)c + 0.7? 1 is ( E ^ ( cos (3) ) < floor ( log [3](8 * Pi ) ) + 0 .7 ) ; Zadanie 24. Wykaż, że 1 p √ √ √ 2 19549 + 286 = 173 + 113. is ( sqrt (2 * sqrt (19549) + 286) = sqrt (173) + sqrt (113) ) ; Zadanie 25. Sprawdź długość wykonania komendy obliczającej 20!. 1 st : = time () : 20 ! : print ( " Czas dzialania " , time () - st ) ; 4 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 26. Sprawdź działanie komend: 1 2 3 4 combine ( cos ( x ) * cos ( y ) - sin ( x ) * sin ( y ) ) ; t : = tan (2 * x ) ^ 2; t1 : = expand ( t ) ; combine ( t1 , trig ) ; simplify ( t ) ; expand (( a * x ^ 2 + b * y ^ 3) * sin (3 * x ) * cos (2 * x ) ) ; expand (( a * x ^ 2 + b * y ^ 3) * sin (3 * x ) * cos (2 * x ) , a * x ^ 2 + b * y ^ 3) ; Zadanie 27. Rozwiń wyrażenie sin(x + y). 1 expand ( sin ( x + y ) ) ; Zadanie 28. Uprość następujące wyrażenia: (a) 2 cos2 (x) − cos(2x), 1 2 (b) ex +x . e2x +2xex +x2 combine (2 * cos ( x ) ^ 2 - cos (2 * x ) , trig ) ; ( E ^ x + x ) / ( E ^ (2 * x ) + 2 * x * E ^ x + x ^ 2) ; simplify (%) ; Zadanie 29. Uprość następujące wyrażenia: (a) 4 sin3 (x) + sin(3x), 1 2 3 4 (b) 2 n 2 + n2 , (c) √ x− y . 2 x −y with ( combinat ) : simplify (4 * sin ( x ) ^ 3 + sin (3 * x ) ) ; expand (2 * binomial (n ,2) + n ^ 2) ; simplify (( x - sqrt ( y ) ) / ( x ^ 2 - y ) ) ; # s u b s ( t = s q r t ( y ) , s i m p l i f y ( e v a l ( ( x - s q r t ( y ) ) / ( x ^ 2 -y ) , y= t ^ 2 ) ) a ss um in g t > 0 ) ; Zadanie 30. Zweryfikuj następujące tożsamości: (a) (1 + a)n = Pn k =0 n k ak , (b) sin2 (x) − sin2 (y) = sin(x + y) · sin(x − y), 2 . (c) 13 + · · · + n3 = n+1 2 1 2 3 is ((1 + a ) ^ n = sum ( binomial (n , k ) * a ^k , k = 0 ..n ) ) ; is ( sin ( x ) ^ 2 - sin ( y ) ^ 2 = sin ( x + y ) * sin ( x - y ) ) ; is ( sum ( k ^ 3 , k = 1 ..n ) = binomial ( n + 1 ,2) ^ 2) ; Zadanie 31. Użyj Maple’a do sprawdzenia tożsamości: (a) tan(x) + tan(y) = sin(x+y) cos(x) cos(y) , tanh(x) (b) sinh(x) = 2 1−tanh 2 (x) , (c) arcsin(x) + arccos(x) = 1 2 3 4 π 2, x ∈ [−1, 1]. is ( tan ( x ) + tan ( y ) = sin ( x + y ) / ( cos ( x ) * cos ( y ) ) ) ; is ( sinh ( x ) = 2 * tanh ( x ) / (1 - tanh ( x ) ^ 2) ) ; convert (2 * tanh ( x ) / (1 - tanh ( x ) ^ 2) , sinh ) : expand (%) : simplify (%) ; plot ( arcsin ( x ) + arccos ( x ) , x = - Pi..Pi ) ; Zadanie 32. Wiedząc, że tan(x) = 1 3 oraz x ∈ (0, π2 ), oblicz wartość wyrażenia cot2 (x) − 2 . sin(x) − 2 cos(x) 1 subs ( x = arctan (1 / 3) , ( cot ( x ) ^ 2 - 2) / ( sin ( x ) - 2 * cos ( x ) ) ) ; simplify (%) ; Zadanie 33. Zapisz sin(π/30) w jak najprostszej postaci. 1 sin ( Pi / 30) ; convert (% , radical ) ; 5 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 34. W zbiorze liczb naturalnych {1, 2, . . . , 123456!} znajdź wszystkie liczby podzielne przez 13 i 15. Wynik zapisz w postaci zbioru. 1 { seq (13 * 15 *k , k = 1 ..floor (123456 ! / (13 * 15) ) ) }; Zadanie 35. Ile wynosi cyfra jedności liczby 1! + 2! + . . . + 100!? 1 2 3 4 sum ( k ! , k = 1 ..100 ) ; # LUB sum ( k ! , k = 1 ..4 ) ; sum ( k ! , k = 5 ..100 ) ; Zadanie 36. Wyszukaj w systemie pomocy Maple informacje dotyczące operacji na liczbach zespolonych, a następnie wykonaj poniższe zadania: (a) Oblicz moduł liczby zespolonej √ 7+ √ Działania na liczbach zespolonych. 29i. (b) Znajdź postać trygonometryczną liczby zespolonej: 6 (c) Liczbę √1−i zapisz w postaci algebraicznej. 3−i (d) Korzystając z definicji oblicz pierwiastki √ 8 √ 2− √ 6i. 16. (e) Stosując wzory Eulera podane funkcje wyraź w postaci sum sinusów lub cosinusów wielokrotności kąta x: (a) sin6 (x); 1 2 3 4 5 (b) cos11 (x). abs ( sqrt (7) + sqrt (29) * I ) ; polar ( sqrt (2) - sqrt (6) * I ) ; ((1 - I ) / ( sqrt (3) - I ) ) ^ 6; evalc (%) ; solve ( x ^ 8 = 16 , x ) ; sin ( x ) ^ 6; combine (% , trig ) ; cos ( x ) ^ 11; combine (% , trig ) ; Zadanie 37. Oblicz oraz podaj wynik w postaci a + bi (i jest jednostką urojoną): (a) (2 + 3i)(5 − 7i)3 /(−3 + i)4 , 1 (b) P23 k=1 (k 3 + (−1)k ), (c) Q13 k=5 (2 + ki)/(k − i). (2 + 3 * I ) * (5 -7 * I ) ^ 3 / ( -3 + I ) ^ 4; sum ( k ^ 2 + ( - 1) ^ k *I , k = 1 ..23 ) ; product ((2 + k * I ) / ( k -I ) , k = 5 ..13 ) ; Zadanie 38. Znajdź postać trygonometryczną następujących liczb zespolonych: (a) 1 + i, 1 (b) √ 5 + 2i, (c) P31 3 k=1 (k + (−1)k ). polar (1 + I ) ; polar ( sqrt (5) + 2 * I ) ; polar ( sum ( k ^ 3 + ( - 1) ^ k *I , k = 1 ..31 ) ) ; Zadanie 39. Obliczyć wyrażenia: (a) sin(8 + 4i) (wynik przedstawić w postaci a + bi, wyznaczyć moduł, argument, część rzeczywistą i urojoną, sprzężenie oraz wyznaczyć liczbę odwrotną). 1 2 Z : = sin (8 + 4 * I ) : evalc ( Z ) ; argument ( Z ) ; evalf ( abs ( Z ) ) ; Re ( Z ) ; Im ( Z ) ; evalc ( conjugate ( Z ) ) ; evalc (1 / Z ) ; (b) Oblicz moduł liczby zespolonej z = 1 28 + √ 21i; przedstaw liczbę z w postaci trygonometrycznej (biegunowej). a : = sqrt (28) + sqrt (21) * I ; abs ( a ) ; polar ( a ) ; (c) Przedstaw liczbę 1 √ 1+i √ −2+ 2i 4 w postaci algebraicznej. ((1 + I ) / ( -2 + sqrt (2) * I ) ) ^ 4; evalc (%) ; 6 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski Zadanie 40. Niech z1 = 1 + √ 30 stycznia 2013 3i, z2 = 4 + 3i. Oblicz z1 · z2 , 1 2 z1 , |z1 · z2 |, arg(z1 · z2 ), arg z2 z1 z2 . z1 : = 1 + sqrt (3) * I ; z2 : = 4 + 3 * I ; z1 * z2 ; z1 / z2 ; abs ( z1 * z2 ) ; argument ( z1 * z2 ) ; argument ( z1 / z2 ) ; Zadanie 41. Dane są liczby zespolone zk = 1 − k2 i. Pn (a) Wyznacz część rzeczywistą i urojoną liczby k=1 z2k . Pn (b) Wyznacz argument i moduł liczby k=1 5 sin(zk ) z dokładnością do 7-ego miejsca po przecinku. (c) Wyznacz moduł różnicy liczników części rzeczywistej i urojonej liczby ! ! 100 100 Y Y z2k / z2k−1 . k=1 (d) Wyznacz sprzężenie liczby k=1 ∞ X 1 . z2 k=1 k Problem może pojawić się w przypadku nieznanego parametru n. Program nie rozumie i nie musi rozumieć, że n ∈ N. Aby określić zakres zmienności parametru n przy określaniu części rzeczywistej liczby z ∈ C wystarczy rozszerzyć komendę Re(z), przed średnikiem, o zwrot assuming n::integer. 1 2 3 4 5 6 7 z := k -> 1 - k^2*I; assume ( n : : integer ) ; evalc ( sum ( z ( k ) ^ 2 , k = 1 ..n ) ) ; Re (%) , Im (%) ; x : = sum (5 * sin ( z ( k ) ) , k = 1 ..n ) ; evalf ( simplify ( evalc ( abs ( x ) ) ) , 7) ; evalf ( simplify ( evalc ( argument ( x ) ) ) , 7) ; t : = product ( z (2 * k ) / z (2 * k - 1) , k = 1 ..100 ) ; abs ( numer ( Re ( t ) ) - numer ( Im ( t ) ) ) ; sum (1 / z ( k ) ^ 2 , k = 1 ..infinity ) : evalc (%) : conjugate ( simplify (%) ) ; Zadanie 42. Korzystając z poleceń pakietu numtheory określ, ile dodatnich dzielników ma liczba 20!. Ile wynosi ich suma? 1 Teoria liczb. with ( numtheory ) : N : = 20 ! : tau ( N ) ; sigma ( N ) ; Zadanie 43. Oblicz sumę wszystkich dzielników pierwszych (z wielokrotnościami) liczb 5674, 123456. 1 with ( numtheory ) : sigma (5674) ; sigma (123456) ; Zadanie 44. Korzystając z pakietu numtheory sprawdź, czy liczba 3666271 jest pierwsza. Jeżeli nie, to rozłóż ją na czynniki pierwsze oraz znajdź najmniejszą liczbę pierwszą od niej większą oraz największą liczbę pierwszą od niej mniejszą. 1 with ( numtheory ) : a : = 3666271; isprime ( a ) ; ifactor ( a ) ; nextprime ( a ) , prevprime ( a ) ; Zadanie 45. Korzystając z pakietu numtheory sprawdź czy liczba 1234567 jest pierwsza. Jeśli nie, to znajdź jej rozkład na czynniki pierwsze. Znajdź najmniejszą liczbę pierwszą większą od 1234567. 1 with ( numtheory ) : a : = 1234567; isprime ( a ) ; ifactor ( a ) ; nextprime ( a ) ; Zadanie 46. Sprawdź, które z następujących liczb są pierwsze: 123421, 33343, 3432361. 1 isprime (123421) ; isprime (33343) ; isprime (3432361) ; Zadanie 47. Znajdź rozkład następujących liczb na czynniki pierwsze: 232413134, 34!, 304!. 1 ifactor (232413134) ; ifactor (34 ! ) ; ifactor (304 ! ) ; 7 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 48. Znajdź kilka liczb pierwszych większych od 34214245. 1 nextprime (34214245) ; nextprime (%) ; nextprime (%) ; nextprime (%) ; Zadanie 49. Znajdź sumę i iloczyn stu kolejnych liczb pierwszych, począwszy od dziesiątej liczby pierwszej. 1 convert ([ seq ( ithprime ( i ) , i = 1 + 9 ..100 + 9) ] , `+ `) ; Zadanie 50. Rozłóż poniższe liczby na iloczyn liczb pierwszych: 5! + 1, 10! + 1, 27! + 1. 1 ifactor (5 ! + 1) , ifactor (10 ! + 1) , ifactor (27 ! + 1) ; Zadanie 51. Sprawdzić, które liczby są pierwsze: 230 − 1, 231 − 1, 261 − 1. 1 isprime (2 ^ 30 - 1) ; isprime (2 ^ 31 - 1) ; isprime (2 ^ 61 - 1) ; Zadanie 52. Sprawdź, że następujące wielomiany w podanych przedziałach dają tylko liczby pierwsze: n3 + n2 + 17, 2n2 + 11, 4n2 + 4n + 59, 2 n + n + 17, n = 0, . . . , 16 7n − 371n + 4871, 6n2 − 342n + 4903, 2 3 4 5 6 7 8 9 10 (F. Gobbo, 2005); (Adrien-Marie Legendre, 1798); (J. Brox, 2006); n = 0, . . . , 35 (J. Brox, 2006); 43n − 537n + 2971, 1 (Ed Pegg, Jr., 2005); n = 0, . . . , 58 2 n − n + 41, (Adrien-Marie Legendre); n = 0, . . . , 24 n = 0, . . . , 29 2 (G. L. Honaker, Jr.); n = 0, . . . , 20 2 2n + 29, n = 0, . . . , 11; n = 0, . . . , 14 n4 + 29n2 + 101, 2 n = 0, . . . , 11; n = 0, . . . , 41 (Leonhard Euler, 1772). seq ( isprime ( n ^ 3 + n ^ 2 + 17) , n = 0 ..11 ) ; seq ( isprime (2 * n ^ 2 + 11) , n = 0 ..11 ) ; seq ( isprime (4 * n ^ 2 + 4 * n + 59) , n = 0 ..14 ) ; # H o n a k e r seq ( isprime ( n ^ 2 + n + 17) , n = 0 ..16 ) ; # L e g e n d r e seq ( isprime ( n ^ 4 + 29 * n ^ 2 + 101) , n = 0 ..20 ) ; # E . P e g g s , J r ( 2 0 0 5 ) seq ( isprime (7 * n ^ 2 - 371 * n + 4871) , n = 0 ..24 ) ; # F . Gobbo ( 2 0 0 5 ) seq ( isprime (2 * n ^ 2 + 29) , n = 0 ..29 ) ; # L e g e n d r e ( 1 7 9 8 ) seq ( isprime (6 * n ^ 2 - 342 * n + 4903) , n = 0 ..58 ) ; # J . B r o x ( 2 0 0 6 ) seq ( isprime (43 * n ^ 2 - 537 * n + 2971) , n = 0 ..35 ) ; # J . B r o x ( 2 0 0 6 ) seq ( isprime ( n ^ 2 -n + 41) , n = 0 ..41 ) ; # L . E u l e r Zadanie 53. Sprawdź, że następujące wielomiany w podanych przedziałach dają tylko liczby złożone: n6 + 1091, n = 1, . . . , 3905; n6 + 29450922301244534, 12 n 1 2 3 + 488669, n = 1, . . . , 63692; n = 1, . . . , 616979. sum ( isprime ( n ^ 6 + 1091) , n = 1 ..3905 ) ; sum ( isprime ( n ^ 6 + 2 9 4 5 0 9 2 2 3 0 1 2 4 4 5 3 4 ) , n = 1 ..63692 ) ; sum ( isprime ( n ^ 12 + 488669) , n = 1 ..616979 ) ; Zadanie 54. Wykonaj następujące polecenia: (a) Sprawdź czy dana liczba jest pierwsza, a następnie rozłóż na czynniki pierwsze 8! + 38941. 1 a : = 8 ! + 38941; isprime ( a ) ; ifactor ( a ) ; (b) Znaleźć NWD, NWW, resztę z dzielenia i iloraz całkowity liczb 356 i 32. 1 m : = 356 : n : = 32 : igcd (m , n ) , ilcm (m , n ) , irem (m , n ) , iquo (m , n ) ; 8 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 55. Wyznacz liczbę k o tej własności, że 10k | NWW 9! + 123456, (8!)!) , ale 10k+1 6 | NWW 9! + 123456, (8!)! , gdzie NWW(a, b) oznacza najmniejszą wspólną wielokrotność liczb a, b. Można zastosować wzór k= ∞ j X Nk , pi i=1 dla liczby pierwszej p. 1 2 3 a : = ilcm (9 ! + 123456 , (8 ! ) ! ) ; k : = 5; ifactor ( a ) ; # s p r a w d z i l o s c 2 i 5 LUB sum ( floor ( a / k ^ i ) , i = 1 ..ceil ( log [ k ]( a ) ) ) ; Zadanie 56. Oblicz sumę oraz iloczyn kolejnych n liczb pierwszych (np. dla n = 10, 100, 267). 1 n : = 10 : sum ( ithprime ( i ) , i = 1 ..n ) ; product ( ithprime ( i ) , i = 1 ..n ) ; Zadanie 57. Niech tn = następujące ich własności: n(n+1) , 2 gdzie n ∈ N. Liczby takiej postaci nazywamy liczbami trójkątnymi. Pokazać jeśli 2tx = ty , to 2t3x−2y = t3y−4x−1 , jeśli 2tx = ty , to 2t3x+4y+3 = t2x+3y+2 , jeśli 3tx = ty , to 3t2x+y+1 = t3x+2y+2 , jeśli 5tx = ty , to 5t9x+4y+6 = t20x+9y+14 , jeśli tx = y2 , to t3x+4y+1 = (2x + 3y + 1)2 , jeśli tx = 3y2 , to t5x+12y+2 = 3(2x + 5y + 1)2 , jeśli tx = 5y2 , to t19x+60y+9 = 5(6x + 19y + 3)2 , jeśli 5tx = 3ty , to 5t4x+3y+3 = 3t5x+4y+4 , jeśli 5tx = 4ty , to 5t9x+8y+8 = 4t10x+9y+9 , t3k = tk−1 + t2k + t2k , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 t3k+1 = tk + t2k + t2k+1 , t3k+2 = tk+1 + t2k+1 + t2k+1 . t : = n - > n * ( n + 1) / 2; eq2 : = 2 * t ( x ) = t ( y ) : is (2 * t (3 * x -2 * y ) = t (3 * y -4 * x - 1) ) assuming eq2 ; eq2a : = t ( x ) = 2 * t ( y ) : is ( t (3 * x + 4 * y + 3) = 2 * t (2 * x + 3 * y + 2) ) assuming eq2a ; eq3 : = 3 * t ( x ) = t ( y ) : is (3 * t (2 * x + y + 1) = t (3 * x + 2 * y + 2) ) assuming eq3 ; eq5 : = 5 * t ( x ) = t ( y ) : is (5 * t (9 * x + 4 * y + 6) = t (20 * x + 9 * y + 14) ) assuming eq5 ; # unassign ( x ) ; unassign ( y ) ; # a s s u m e ( u : : odd , v : : e v e n , m: : i n t e g e r , m> 0 , u ^ 2 -m* v ^ 2 = 1 ) ; # eqm : = m* t ( x ) = t ( y ) : # i s (m* t ( u * x + v * y + ( u - 1 ) / 2 + v / 2 ) = t (m* v * x + u * y + ( u - 1 ) / 2 +m* v / 2 ) ) a s s u m i n g eqm ; eqsq : = t ( x ) = y ^ 2 : is ( t (3 * x + 4 * y + 1) = (2 * x + 3 * y + 1) ^ 2) assuming eqsq ; eq3sq : = t ( x ) = 3 * y ^ 2 : is ( t (5 * x + 12 * y + 2) = 3 * (2 * x + 5 * y + 1) ^ 2) assuming eq3sq ; eq5sq : = t ( x ) = 5 * y ^ 2 : is ( t (19 * x + 60 * y + 9) = 5 * (6 * x + 19 * y + 3) ^ 2) assuming eq5sq ; eq53 : = 5 * t ( x ) = 3 * t ( y ) : is (5 * t (4 * x + 3 * y + 3) = 3 * t (5 * x + 4 * y + 4) ) assuming eq53 ; eq54 : = 5 * t ( x ) = 4 * t ( y ) : is (5 * t (9 * x + 8 * y + 8) = 4 * t (10 * x + 9 * y + 9) ) assuming eq54 ; is ( t (3 * k ) = t ( k - 1) + t (2 * k ) + t (2 * k ) ) ; is ( t (3 * k + 1) = t ( k ) + t (2 * k ) + t (2 * k + 1) ) ; is ( t (3 * k + 2) = t ( k + 1) + t (2 * k + 1) + t (2 * k + 1) ) ; Zadanie 58. Znajdź sumę i iloczyn 123 kolejnych liczb pierwszych. 1 Trochę bardziej wymagające. p : = [ seq ( ithprime ( i ) , i = 1 ..123 ) ] : convert (p , `+ `) ; convert (p , `* `) ; 9 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 59. Znajdź wszystkie dzielniki pierwsze liczby 2013 − 1. Wynik zapisz w postaci listy! 1 X : = op (2 , ifactors (20 ^ 13 - 1 * 4) ) : seq ( X [ i ][1] , i = 1 ..nops ( X ) ) ; Zadanie 60. Ile jest liczb pierwszych mniejszych od 10!? 1 convert ([ seq ( ` if `( isprime ( i ) , 1 , 0) , i = 1 ..10 ! ) ] , `+ `) ; Zadanie 61. Ile jest liczb pierwszych mniejszych od 8!? Ile jest liczb pierwszych mniejszych niż 567! ? 1 2 sum ( ` if `( isprime ( i ) , 1 , 0) , i = 1 ..8 ! ) ; # LUB a : = 0 : for i from 1 to 567 ! do if isprime ( i ) then a : = a + 1 : end if ; end do ; print ( a ) ; Zadanie 62. Napisz funkcję p : N → N daną wzorem p(x) = ”liczba wszystkich liczb pierwszych mniejszych od x” a następnie wylicz p(x) · ln(x) x dla x = 1000, 5000, 10000, 20000. 1 p : = n - > sum ( ` if `( isprime ( i ) , 1 , 0) , i = 1 ..n ) : x : = 20000 : evalf (( p ( x ) * ln ( x ) ) / x ) ; Zadanie 63. Zamień: liczbę 73 na postać binarną, 79 na postać szesnastkową, ’FFA2’ na dziesiętną, 11001101 na dziesiętną oraz 153 na liczbę w systemie o podstawie 7. 1 2 convert (73 , binary ) ; convert (79 , hex ) ; convert ( ' FFA2 ' , decimal , hex ) ; convert (11001101 , decimal , binary ) ; convert ([1 , 5 , 3] , base , 10 , 7) ; Zadanie 64. Ile jedynek ma liczba 235465656! w systemie dwójkowym? 1 2 a : = convert ( convert (6 ! , binary ) , string ) ; convert ([ seq ( ` if `( a [ i ] = " 1 " , 1 , 0) , i = 1 ..length ( a ) ) ] , `+ `) ; Zadanie 65. Dana jest liczba naturalna N = 500 X blog3 (20092009 )c pi ! − i=1 X Fj , j=blog15 (20092009 )c gdzie pi to i-ta liczba pierwsza, a Fi to i-ta liczba ciągu Fibonacciego. (a) Zdefiniuj liczbę N, tak aby jej dokładna wartość nie była wyświetlana w oknie. (b) Ile cyfr ma liczba N? (c) Czy liczba N jest liczbą pierwszą? Jeśli nie to podaj największą liczbę pierwszą, która jest dzielnikiem liczby N. (d) Podaj liczbę dzielników całkowitych liczby N. (e) Wyznacz resztę z dzielenia liczby N przez 2012. Funkcja fibonacci(n) dostępna jest w pakiecie combinat. Aby móc się nią posłużyć należy dodać pakiet, bądź tylko żądaną funkcję z pakietu, komendami with(combinat) lub with(combinat,fibonacci), odpowiednio. 1 2 3 with ( combinat ) : N : = sum ( ithprime ( i ) ! ,i = 1 ..500 ) - sum ( fibonacci ( i ) ,i = floor ( log [15](2009 ^ 2009) ) ..floor ( log [3](2009 ^ 2009) ) ) : length ( N ) ; isprime ( N ) ; ifactor ( N ) ; tau ( N ) ; nops ( op (2 , ifactors ( N ) ) ) ; N mod 2012; 2 Struktury danych w Maple A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. — Douglas Adams 10 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 66. Zdefiniuj zbiory A = {−2, −1, . . . , 21}, B = {−2, 0, 2, . . . , 66}. (a) Wyznacz zbiór C = (A \ B) ∪ (B \ A) (tzw. różnica symetryczna zbiorów A, B). (b) Wyznacz liczbę elementów zbioru C. (c) Czy 20 jest elementem zbioru C? 1 2 A : = { seq (i , i = -2 ..21 ) }; B : = { seq (2 *k , k = -1 ..33 ) }; C : = ( A minus B ) union ( B minus A ) ; nops ( C ) ; member (20 , C ) ; Zadanie 67. Zdefiniuj dwa zbiory A = {n ∈ N | n < 1000 oraz 3 | n}, oraz wyznacz 1 2 B = {m ∈ N | m < 987 oraz m ≡ 7 (mod 13)} A ∪ B, A ∩ B, A \ B. A : = { seq (3 *k , k = 0 ..floor (1000 / 3) ) } : B : = { seq (13 * k + 7 , k = 0 ..floor (987 / 13) ) } : A union B ; A intersect B ; A minus B ; Zadanie 68. Wygeneruj 20-toelementową listę złożoną z liczb całkowitych losowych. Skonstruuj komendę wyznaczającą liczbę różnych elementów takiej listy. Wskazówka: Do generowania liczb naturalnych z zadanego zakresu służy procedura rand(). 1 2 roll : = rand (1 ..100 ) : K : = [ seq ( roll () , i = 1 ..20 ) ]; nops ( convert (K , set ) ) ; Zadanie 69. Zdefiniuj listę F składającą się z pierwszych stu wyrazów ciągu Fibonacciego. Zadania sekwencyjne. (a) Czy liczba 225851434717 jest elementem listy F? (b) Zastąp dowolny element listy liczbą 777. (c) Usuń dwa wybrane przez Ciebie elementy listy. Sprawdź, czy nie są one elementami tej listy? (d) Stwórz listę F1 powstałą przez konwersję listy F na zbiór, a następnie ponownej konwersji na listę. Czy listy F i F1 mają tą samą ilość elementów? Czemu? 1 2 3 4 5 6 with ( combinat ) : F : = [ seq ( fibonacci ( i ) , i = 1 ..100 ) ]; member (225851434717 , F ) ; subsop (5 = 777 , F ) ; a : = F [17]; b : = F [18]; subsop (17 = NULL ,18 = NULL , F ) ; member (a , L ) ; member (b , L ) ; F1 : = convert (F , set ) ; F : = convert ( F1 , list ) ; nops ( F ) , nops ( F1 ) ; Zadanie 70. Używając komend z wykładu wykonać następujące polecenia: (a) utwórz listę L liczb parzystych pomiędzy −277 a 1025; znajdź element pierwszy, ostatni oraz 444-ty listy L, 1 L : = [ seq (2 *k , k = ceil ( - 277 / 2) ..floor (1025 / 2) ) ]; L [1] , L [ nops ( L ) ] , L [144]; (b) zbuduj listę złożoną z elementów L o numerach od 123 do 456; zbuduj listę trzecich potęg elementów listy L, 1 Lx : = [ seq ( L [ i ] , i = 123 ..456 ) ]; L3 : = [ seq ( L [ i ] ^ 3 , i = 1 ..nops ( L ) ) ]; (c) zbuduj listę L1 zawierającą elementy L wypisane w odwrotnej kolejności; oblicz sumę elementów L1, 1 L1 : = [ seq ( L [ nops ( L ) - i + 1] , i = 1 ..nops ( L ) ) ]; convert ( L1 , `+ `) ; (d) znajdź miejsce zajmowane przez 0 w L1, 1 2 3 4 5 6 for i from 1 to nops ( L1 ) do if ( L1 [ i ] = 0) then print ( i ) ; break ; end if ; end do ; # LUB member (0 , L1 , 'k ') ; k ; 11 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 (e) utwórz listę L2 powstałą z L1 przez usunięcie 0, 1 2 3 4 5 6 7 8 9 rm : = proc ( tab , el ) local i ; for i from 1 to nops ( tab ) do if tab [ i ] = el then return subsop ( i = NULL , tab ) ; end if ; end do ; end proc ; L2 : = rm ( L1 , 0) ; (f) oblicz iloczyn elementów listy L2 i znajdź ilość jego cyfr, 1 a : = convert ( L2 , `* `) ; length ( a ) ; (g) utwórz z list L i L2 jedną listę L3 i oblicz ilość jej elementów, 1 L3 : = [ op ( L ) , op ( L2 ) ]; nops ( L3 ) ; (h) utwórz z L3 zbiór i oblicz ilość elementów tego zbioru. 1 L4 : = convert ( L3 , set ) ; nops ( L4 ) ; Zadanie 71. Wykonaj następujące polecenia: (a) utwórz listę A, składającą się z 10 kolejnych liczb nieparzystych począwszy od 101, 1 A : = [ seq (101 + 2 *k , k = 0 ..9 ) ]; (b) utwórz listę B, elementami której są liczby pierwsze o indeksach 23, 24, 25, 27, 30, 35, 43, 56, 77, 111, 166 (znajdź wzór – nie wypisuj ich po kolei!!), 1 with ( combinat , fibonacci ) : B : = [ seq ( ithprime (22 + fibonacci ( n ) ) , n = 2 ..12 ) ]; (c) utwórz listę C składającą się z elementów listy A i B; ile elementów ma lista C, 1 C : = [ op ( A ) , op ( B ) ]; nops ( C ) ; (d) z listy C wybrać elementy o numerach od 3 do 13, 1 seq ( C [ i ] , i = 3 ..13 ) ; (e) utwórz listę G powstałą z listy C poprzez usunięcie elementu 6-tego; zbuduj listę E drugich potęg listy A, 1 G : = subsop (6 = NULL , C ) ; E : = [ seq ( A [ i ] ^ 2 , i = 1 ..nops ( A ) ) ]; (f) zbuduj listę zawierającą elementy C wypisane w odwrotnej kolejności, 1 C1 : = [ seq ( C [ nops ( C ) - i + 1] , i = 1 ..nops ( C ) ) ]; (g) oblicz sumę i iloczyn elementów listy B, 1 convert (B , `+ `) ; convert (B , `* `) ; (h) utwórz z list G i E zbiory R, T ; znajdź sumę, różnicę i przekrój zbiorów R, T . 1 R : = convert (G , set ) ; T : = convert (E , set ) ; R intersect T ; Zadanie 72. Wykonaj następujące polecenia: (a) utwórz listę L liczb nieparzystych pomiędzy −124 a 968, (b) znajdź element pierwszy, ostatni oraz 53. listy L, (c) zbuduj listę złożoną z elementów L o numerach od 77 do 277, (d) zbuduj listę złożoną z elementów listy L powiększonych o 2, (e) oblicz iloczyn elementów L, (f) znajdź miejsce zajmowane przez liczbę 555 w L, (g) utwórz listę L1 powstałą z L przez usunięcie liczby 555, (h) oblicz ilość elementów listy L1, 12 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 (i) utwórz z L1 zbiór. 1 2 3 4 5 6 7 8 9 10 L : = [ seq (2 * k + 1 , k = ceil ( - 124 / 2) ..floor (968 / 2) - 1) ]; L [1] , L [ nops ( L ) ] , L [53]; [ seq ( L [ i ] , i = 77 ..277 ) ]; [ seq ( L [ i ] + 2 , i = 1 ..nops ( L ) ) ]; convert (L , `* `) ; for i from 1 to nops ( L1 ) do if ( L [ i ] = 555) then print ( i ) ; break ; end if ; end do ; L1 : = rm (L , 555) ; nops ( L1 ) ; convert ( L1 , set ) ; Zadanie 73. Używając komend z wykładu: (a) utwórz listę L oraz zbiór S składające się z dodatnich liczb parzystych mniejszych od 400, (b) utwórz listę L1 oraz zbiór S1 składające się z pierwszych pięćdziesięciu potęg dwójki, (c) znajdź część wspólną, sumę i różnicę zbiorów S oraz S1; sprawdź ile powstałe zbiory mają elementów, (d) podaj trzynasty oraz czterdziesty drugi element listy L1, (e) utwórz listę K powstałą przez usunięcie liczby 56 z listy L, (f) utwórz listę, która składa się z elementów listy K wypisanych w odwrotnej kolejności. 1 2 3 4 5 L : = [ seq (2 *i , i = 1 ..floor (400 / 2) ) ] : S : = convert (L , set ) : L1 : = [ seq (2 ^k , k = 1 ..50 ) ] : S1 : = convert ( L1 , set ) : S intersect S1 ; nops (%) ; S union S1 ; nops (%) ; S minus S1 ; nops (%) ; S1 minus S ; nops (%) ; L1 [13] , L1 [42]; member (56 , L , 'k ') ; k ; K : = subsop ( k = NULL , L ) : [ seq ( K [ nops ( K ) - k + 1] , k = 1 ..nops ( K ) ) ]; Zadanie 74. Korzystając z poleceń Maple dotyczących list i zbiorów, wykonaj poniższe polecenia: (a) Utwórz listę A liczb parzystych między 1 a 1000, (b) Utwórz listę B liczb podzielnych przez 3 między 1 a 1000, (c) Wypisz pierwszy i ostatni element listy B, (d) Podaj liczbę elementów listy B oraz na którym miejscu listy B pojawia się 102, (e) Z list A i B utwórz zbiory C i E, (f) Wyznacz moc zbioru C ∩ E, (g) Usuń ze zbioru E liczby parzyste. 1 2 3 4 5 A : = [ seq (2 *i , i = ceil (1 / 2) ..floor (1000 / 2) ) ]; B : = [ seq (3 *i , i = ceil (1 / 3) ..floor (1000 / 3) ) ]; B [1] , B [ nops ( B ) ]; nops ( B ) ; member (102 , B , 'k ') : k ; C : = convert (A , set ) ; E : = convert (B , set ) ; nops ( C intersect E ) ; E minus C ; Zadanie 75. Utworzyć listę L = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, . . . , 50, . . . , 50] i podaj ilość jej elementów. 1 Zadania różne, ale w temacie. L : = [ seq ( seq (n , i = 1 ..n ) , n = 1 ..50 ) ]; nops ( L ) ; Zadanie 76. Utwórz listę wyników mnożenia 1 · 1, 1 · 2, . . . , 1 · 10, 2 · 1, 2 · 2, . . . , 10 · 10. 1 [ seq ( seq ( i *j , i = 1 ..10 ) , j = 1 ..10 ) ]; Zadanie 77. Utwórz listę złożoną z zespolonych pierwiastków trzynastego stopnia z jedynki oraz z ich rozwinięć dziesiętnych. 1 K : = solve ( x ^ 13 = 1 , x ) : L : = evalf (%) : [K , L ]; 13 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 78. Zdefiniuj funkcję f(x) = x3 + 2x + 5 oraz oblicz f(0), f(−2), f(4567). 1 f : = x - > x ^ 3 + 2 * x + 5; f (0) , f ( - 2) , f (4567) ; Zadanie 79. Zdefiniować funkcję f(x) = x2 + x + 2 oraz obliczyć f(0), f(1), f(100), f(125789), f(i), f(5 + 2i). 1 f : = x - > x ^ 2 + x + 2 : f (0) , f (1) , f (100) , f (125789) , f ( I ) , f (5 + 2 * I ) ; Zadanie 80. Utworzyć listę [g(1), . . . , g(100)], gdzie g(x) = sin(x) + x2 + 3x. 1 g : = x - > sin ( x ) + x ^ 2 + 3 * x : map (g , [ seq (i , i = 1 ..100 ) ]) ; Zadanie 81. Utwórz listę [g(1), . . . , g(20)], gdzie g(x) = cos(x) + x − 10. 1 g : = x - > cos ( x ) + x - 10; map (g , [ seq (i , i = 1 ..20 ) ]) ; Zadanie 82. Zdefiniuj funkcję f(x) = x2 + sin(x) − 1, oblicz jej wartości dla x = 0, 2, − 12 , π + 1 oraz podaj ich rozwinięcie dziesiętne do dwudziestu cyfr znaczących. 1 f : = x - > x ^ 2 + sin ( x ) - 1; L : = [0 ,2 , -1 / 2 , Pi + 1]; map (f , L ) ; evalf (% , 20) ; Zadanie 83. Utwórz listę L składającą się z wartości funkcji f(x) = x3 + 2x2 − x (x + 2)(x − 1) dla x = 2, 3, 4, . . . , 315. Utwórz listę, która składa się z elementów listy L o numerach podzielnych przez 3. 1 2 f : = x - > ( x ^ 3 + 2 * x ^ 2 - x ) / (( x + 2) * ( x - 1) ) ; L : = [ seq (i , i = 2 ..315 ) ] : map (f , L ) ; L1 : = [ seq ( L [ i ] , i = 3 ..315 / 3) ]; Zadanie 84. Zdefiniuj funkcję, która parze liczb naturalnych (n, m) takich, że n < m przyporządkuje listę [n, n + 1, n + 2, . . . , m]. Sprawdź jej działanie dla par (1, 100), (223, 1024) oraz (34, 1342). 1 h : = (n , m ) - > [ seq (i , i = n..m ) ]; h (1 ,100) ; h (223 ,1024) ; h (34 , 1342) ; Zadanie 85. Zadziałaj operatorem mapującym poprzez funkcję f(x) = ln(x) na wyrażenie x + x2 + xy oraz na wyrażenie x · y. 1 f : = x - > ln ( x ) ; map (f , x + x ^ 2 + x * y ) ; map (f , x * y ) ; Zadanie 86. Utwórz zbiór funkcji {x2 , cos(x), sin(x), tg(x) · cos(x), cos(2x), tan(3x)}. Wybierz z tego zbioru funkcje zawierające cos. 1 2 3 4 5 6 7 8 A : = { x ^ 2 , cos ( x ) , sin ( x ) , tg ( x ) * cos ( x ) , cos (2 * x ) , tan (3 * x ) }; B : = {} : for i in A do if ( op (0 , i ) = cos ) then B : = { op ( B ) , i }; end if ; end do ; print ( B ) ; Zadanie 87. Wykonaj polecenia: (a) ze zbioru funkcji {1, cos(x), sin(x), cos(2x), sin(2x), cos(3x), sin(3x)} wybrać elementy zawierające funkcję cos, (b) stworzyć ze zbioru zbiór n = {x, 2x, 3x, 4x, 5x} d = {exp(x), exp(2x), exp(3x), exp(4x), exp(5x)}. 14 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 30 stycznia 2013 A : = {1 , cos ( x ) , sin ( x ) , cos (2 * x ) , sin (2 * x ) , cos (3 * x ) , sin (3 * x ) }; B : = [] : for i in A do if ( op (0 , i ) = cos ) then B : = [ op ( B ) , i ]; end if ; end do ; print ( B ) ; map ( exp , [ seq ( k *x , k = 1 ..5 ) ]) ; Zadanie 88. Stwórz tablicę s = [1, 2, 3, 4, 5, 6] oraz tablicę r kwadratów odwrotności wartości z tablicy s. Następnie stwórz z nich tablicę postaci [punkt, wartość] oraz wybierz ten element, który zawiera 1. 1 2 3 s : = [1 ,2 ,3 ,4 ,5 ,6]; r : = map ( t - > 1 / t ^ 2 , s ) ; zip (( a , b ) - >[a , b ] , s , r ) ; select ( has , % , 1) ; 3 Powtórka ze szkoły średniej I have never belonged wholeheartedly to a country, a state, nor to a circle of friends, nor even to my own family. — Albert Einstein Zadanie 89. Zdefiniuj zdania (a ∧ b) ∨ ¬a ∨ ¬b, a ⇔ (b ∨ ¬c), i sprawdź czy są one tautologiami, a jeśli nie, to dla jakich wartości są prawdziwe. 1 2 3 4 5 with ( Logic ) : p : = & and (a , b ) & or ( & not a ) & or ( & not b ) ; q : = a & implies ( b & xor & not c ) ; Tautology ( p ) ; Tautology ( q ) ; Satisfy ( q ) ; Zadanie 90. Pokaż, że 37 + 13 373 + 133 = , 3 3 37 + 24 37 + 24 1273 + 413 127 + 41 = 3 3 127 + 86 127 + 86 i ogólnie a3 1 2 3 a+b a 3 + b3 = . 3 + (a − b) a + (a − b) is ((37 ^ 3 + 13 ^ 3) / (37 ^ 3 + 24 ^ 3) = (37 + 13) / (37 + 24) ) ; is ((127 ^ 3 + 41 ^ 3) / (127 ^ 3 + 86 ^ 3) = (127 + 41) / (127 + 86) ) ; ( a ^ 3 + b ^ 3) / ( a ^ 3 + ( a -b ) ^ 3) - ( a + b ) / ( a + ( a -b ) ) ; simplify (%) ; Zadanie 91. Rozwiąż graficznie równanie x 1 − 1 = −2x2 − 8x − 5. 2 1 plot ({ abs ((1 / 2) ^ x - 1) , -2 * x ^ 2 - 8 * x - 5} , x = -3 ..0 ) ; Zadanie 92. Rozwiąż graficznie nierówność x 3 3 1 −x2 + 3 x − 1 . 2 4 4 1 plot ({(3 / 2) ^x , -x ^ 2 + 15 / 4 * x - 5 / 4} , x = 0 ..3 ) ; 15 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 93. Rozwiąż graficznie układy równań y = 2x−3 − 1, y + x2 − 3 (y − 3) = 0, 1 |x| y = 12 , x2 + y2 = 54 . plot ({2 ^ ( x - 3) - 1 , -x / 2 + 3} , x = 1 ..6 ) ; plot ({2 ^ ( x - 3) - 1 , 3} , x = 1 ..6 ) ; Zadanie 94. Liczby x1 i x2 są rzeczywistymi pierwiastkami równania 4x2 − 8x + k2 − 21 = 0. Zbadaj funkcję f(k) = 1 2 3 4 1 − x1 1 − x2 + . 1 + x2 1 + x1 eqn : = 4 * x ^ 2 - 8 * x + k ^ 2 - 21 = 0; y : = solve ( eqn , x ) ; f : = k - > (1 - y [1]) / (1 + y [2]) + (1 - y [2]) / (1 + y [1]) ; plot ( f ( k ) , k = -1 ..1 ) ; Zadanie 95. Rozwiąż nierówności 1 2 (a) x2 − 2x − 6 > 0, (c) (x − 1)2 0, (b) (x − 1)(x + 2)3 x4 ¬ 0, (d) x2 < −1. solve ( x ^ 2 - 2 * x - 6 > 0 , x ) ; solve (( x - 1) * ( x + 2) ^ 3 * x ^ 4 <= 0 , x ) ; solve (( x - 1) ^ 2 >= 0 , x ) ; solve ( x ^ 2 < -1 , x ) ; Zadanie 96. Wyznacz wszystkie naturalne wartości m ∈ N, dla których Zm 8 ex dx < . 3 −m 1 solve ( int ( E ^x , x = - m..m ) < 8 / 3 , m ) ; Zadanie 97. Wykaż, że −1 jest siedmiokrotnym pierwiastkiem wielomianu W(x) = 2x8 + 11x7 + 21x6 + 7x5 − 35x4 − 63x3 − 49x2 − 19x − 3. 1 2 3 W : = x - > 2 * x ^ 8 + 11 * x ^ 7 + 21 * x ^ 6 + 7 * x ^ 5 - 35 * x ^ 4 - 63 * x ^ 3 - 49 * x ^ 2 - 19 * x - 3; solve ( W ( x ) = 0 , x ) ; factor ( W ( x ) ) ; Zadanie 98. Wyznacz sumę wszystkich współczynników wielomianu V(x) = (x2 − 5x + 2)2009 − (4x3 − 7x2 + x − 1)2001 . 1 V : = x - > ( x ^ 2 - 5 * x + 2) ^ 2009 - (4 * x ^ 3 - 7 * x ^ 2 + x - 1) ^ 2001; V (1) ; Zadanie 99. Zbadaj przebieg zmienności podanych funkcji: 2 (a) f(x) = x ln(x), (b) g(x) = arcsin 1−x , 1+x2 Przebieg zmienności funkcji. (c) h(x) = x2x . Sporządź wykresy funkcji. 16 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 30 stycznia 2013 f : = x - > x * ln ( x ) ; # D z i e d z i n a f u n k c j i i punkty n i e c i a g l o s c i # Punkty p r z e c i e c i a z o s i a m i solve ( f ( x ) = 0 , x ) ; f (0) ; # Wlasnosci szczegolne , t a k i e jak parzystosc , n i e p a r z y s t o s c , okresowosc , c i ą g l o s c # G r a n i c e na k o n c a c h p r z e d z i a l o w o k r e s l o n o s c i , o k r e s l e n i e z b i o r u w a r t o s c i f u n k c j i limit ( f ( x ) , x = infinity ) ; limit ( f ( x ) , x = 0) ; # Asymptoty limit ( f ( x ) /x , x = infinity ) ; # O b li c z e n i e pochodnej i wyznaczenie j e j dziedziny , p r z e d z i a l y monotonicznosci , # ekstrema lokalne f u n k c j i solve ( D ( f ) ( x ) = 0 , x ) ; solve ( D ( f ) ( x ) <0 , x ) ; solve ( D ( f ) ( x ) >0 , x ) ; # O b li c z e n i e d r u g i e j pochodnej i wyznaczenie j e j dziedziny , p r z e d z i a l y wypuklosci # i w k l e s l o s c i , punkty p r z e g i e c i a solve (( D @ @ 2) ( f ) ( x ) = 0 , x ) ; solve (( D @ @ 2) ( f ) ( x ) <0 , x ) ; solve (( D @ @ 2) ( f ) ( x ) >0 , x ) ; # S z k i c wykresu f u n k c j i plot ( f ( x ) , x = 0 ..5 ) ; itp. 18 19 20 21 22 23 24 25 g : = x - > arcsin ((1 -x ^ 2) / (1 + x ^ 2) ) ; solve ( g ( x ) = 0 , x ) ; g (0) ; solve ( g ( x ) = infinity , x ) ; limit ( g ( x ) , x = infinity ) ; limit ( g ( x ) , x = 0) ; a : = limit ( g ( x ) /x , x = infinity ) ; b : = limit ( g ( x ) -a *x , x = infinity ) ; solve ( D ( g ) ( x ) = 0 , x ) ; solve ( D ( g ) ( x ) <0 , x ) ; solve ( D ( g ) ( x ) >0 , x ) ; solve (( D @ @ 2) ( g ) ( x ) = 0 , x ) ; solve (( D @ @ 2) ( g ) ( x ) <0 , x ) ; solve (( D @ @ 2) ( g ) ( x ) >0 , x ) ; plot ( g ( x ) , x = - 50 ..50 ) ; 26 27 28 29 30 31 32 33 h := x -> x*2^x; solve ( h ( x ) = 0 , x ) ; h (0) ; solve ( h ( x ) = infinity , x ) ; limit ( h ( x ) , x = infinity ) ; limit ( h ( x ) , x = 0) ; a : = limit ( h ( x ) /x , x = infinity ) ; b : = limit ( h ( x ) -a *x , x = infinity ) ; solve ( D ( h ) ( x ) = 0 , x ) ; solve ( D ( h ) ( x ) <0 , x ) ; solve ( D ( h ) ( x ) >0 , x ) ; solve (( D @ @ 2) ( h ) ( x ) = 0 , x ) ; solve (( D @ @ 2) ( h ) ( x ) <0 , x ) ; solve (( D @ @ 2) ( h ) ( x ) >0 , x ) ; plot ( h ( x ) , x = -5 ..5 ) ; Zadanie 100. Zbadaj przebieg zmienności funkcji x2 g(x) = e x2 −1 oraz narysuj jej wykres. Określ ilość rozwiązań równania g(x) = m w zależności od parametru m. 1 2 3 4 5 6 7 g : = x - > E ^ ( x ^ 2 / ( x ^ 2 - 1) ) ; solve ( g ( x ) = 0 , x ) ; g (0) ; limit ( g ( x ) , x = infinity ) ; limit ( g ( x ) , x = 0) ; a : = limit ( g ( x ) /x , x = infinity ) ; b : = limit ( g ( x ) -a *x , x = infinity ) ; solve ( D ( g ) ( x ) = 0 , x ) ; solve ( D ( g ) ( x ) <0 , x ) ; solve ( D ( g ) ( x ) >0 , x ) ; solve (( D @ @ 2) ( g ) ( x ) = 0 , x ) ; solve (( D @ @ 2) ( g ) ( x ) <0 , x ) ; solve (( D @ @ 2) ( g ) ( x ) >0 , x ) ; plot ( g ( x ) , x = 1 .1..4 ) ; Zadanie 101. Rozwiąż, w liczbach rzeczywistych, równanie 1 1 − = 1. x2 (x − 1)2 1 fsolve (1 / x ^ 2 - 1 / ( x - 1) ^ 2 = 1 , x , maxsols = 2) ; Zadanie 102. Narysuj wykres funkcji f(x) = +∞ X (−1)k−1 xk . k=1 1 f : = x - > sum (( - 1) ^ ( k - 1) * x ^k , k = 1 ..infinity ) ; plot ( f ( x ) , x = 1 ..3 ) ; Zadanie 103. Dla jakich wartości parametru m dziedziną funkcji 1 2 f(x) = log (2m − 3)x + (6 − m)x + (m − 9) 7 jest zbiór wszystkich liczb rzeczywistych? 1 2 solve ((2 * m - 3) * x ^ 2 + (6 - m ) * x + 1 / 7 * ( m - 9) , x ) ; Delta : = 1008 -7 * m ^ 2; solve ( Delta < 0 , m ) ; 17 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 104. W kulę o danym promieniu R wpisano walec o największej powierzchni bocznej. Wyznacz wymiary tego walca. 1 2 3 R : = 1; f : = alpha - > 4 * Pi * R ^ 2 * cos ( alpha ) * sin ( alpha ) ; solve ( D ( f ) ( x ) = 0 , x ) ; 4 Analiza matematyczna I What I am going to tell you about is what we teach our physics students in the third or fourth year of graduate school... It is my task to convince you not to turn away because you don’t understand it. You see my physics students don’t understand it... That is because I don’t understand it. Nobody does. — Richard P. Feynman, QED, The Strange Theory of Light and Matter Zadanie 105. Zdefiniuj funkcję Funkcje rzeczywiste. f(x) = x2 , sin(x), o ile bxc jest liczba parzystą, w przeciwnym przypadku, a następnie znajdź (numerycznie) jej punkty nieciągłości w przedziale [−5, 5] z dokładnością 0.0001 (patrz: polecenie fdiscont). 1 f : = x - > piecewise ( floor ( x ) mod 2 = 0 , x ^ 2 , sin ( x ) ) ; fdiscont ( f ( x ) , x = -5 ..5 , 0 .0001 ) ; Zadanie 106. Zdefiniuj funkcje F(x) = cos(2x) oraz G(x) = x2 . Stwórz F ◦ G i G ◦ F wykorzystując operator @. 1 F : = x - > cos (2 * x ) ; G : = x - > x ^ 2; ( F @ G ) ( x ) ; ( G @ F ) ( x ) ; 2 e−x , x ¬ 0, x Zadanie 107. Zdefiniuj funkcje: f(x) = sin(x)e , g(x) = cos(x), x > 0. (a) oblicz f(0), g(0), g(π), g(1), (b) sprawdź ciągłość funkcji g, (c) narysuj wykres funkcji g na przedziale [−3, 3], (d) wyznacz złożenie k = f ◦ g i oblicz k(0). 1 2 3 4 5 f : = x - > sin ( x ) * E ^ x ; g : = x - > piecewise ( x <= 0 , E ^ ( -x ^ 2) , x > 0 , cos ( x ) ) ; f (0) , g (0) , g ( Pi ) , g (1) ; iscont ( g ( x ) , x = -1 ..1 ) ; plot ( g ( x ) , x = -3 ..3 ) ; k : = x - > ( f @ g ) ( x ) ; ( f @ g ) ( x ) ; k (0) ; Zadanie 108. Zdefiniuj funkcję f : R → R daną wzorem 1 x ∈ (−∞, −1), x+1 + 3, x = −1, 2, x f(x) = (x+1)e2 (x−3)2 − 2, x ∈ (−1, 3), 5, x = 3, 3 log13 (x − 3) − 2 , x ∈ (3, +∞). 11 (a) Oblicz f − 13 , f(5). (b) Znajdź punkty nieciągłości tej funkcji. (c) Narysuj wykres funkcji f uwzględniając nieciągłości. (d) Oblicz granice lewo- i prawostronne tej funkcji w punktach nieciągłości. 18 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 30 stycznia 2013 f : = x - > piecewise ( x < -1 , 1 / ( x + 1) + 3 , x = -1 , 2 , -1 <x and x <3 , E ^ x / (( x + 1) ^ 2 * ( x - 3) ^ 2) - 2 , x = 3 , 5 , x >3 , log [13]( x - 3) -3 / 2) ; f ( - 11 / 3) , f (5) ; discont ( f ( x ) ) ; plot ( f ( x ) , x = -2 ..4 , y = -1 ..5 ) ; limit ( f ( x ) ,x = -1 , left ) ; limit ( f ( x ) ,x = -1 , right ) ; limit ( f ( x ) ,x = 3 , left ) ; limit ( f ( x ) ,x = 3 , right ) ; Zadanie 109. Wykonaj następujące polecenia: (a) zdefiniuj funkcję f(x) = e2x (x3 − 3x + 2), 1 f : = x - > E ^ (2 * x ) * ( x ^ 3 - 3 * x + 2) ; (b) oblicz f(4), f(−32), f(3i), f(w + 2) (wynik przedstawić w postaci uporządkowanej przy w), 1 f (4) ,f ( - 32) ,f (3 * i ) , expand ( f ( w + 2) ,w ) ; (c) stwórz listę [sin f(1) , . . . , sin f(53) ], 1 map (f , [ seq (i , i = 1 ..53 ) ]) ; (d) z wyrażenia algebraicznego x3 stwórz funkcję, 1 s : = x ^ 3; f : = unapply (s , x ) ; (e) zdefiniuj funkcję h(x) = 1 2 e−x , x ¬ 0 cos(x) x > 0. h : = x - > piecewise ( x <= 0 , E ^ ( -x ^ 2) , x >0 , cos ( x ) ) ; (f) sprawdź ciągłość powyższej funkcji, 1 discont ( h ( x ) , x ) ; (g) oblicz następujące granice: lim x→∞ 1 x+1 x−1 2x−1 , 2x − arcsin(x) . x→0 2x + arctan(x) lim limit ((( x + 1) / ( x - 1) ) ^ (2 * x - 1) , x = infinity ) ; limit ((2 * x - arcsin ( x ) ) / (2 * x + arcsin ( x ) ) , x = 0) ; Zadanie 110. Zdefiniuj funkcję f(x) = x2 (x−2) , (x−1)2 (x+1) a następnie: (a) wyznacz licznik i mianownik, 1 f : = ( x ^ 2 * ( x - 2) ) / (( x - 1) ^ 2 * ( x + 1) ) ; denom ( f ) , numer ( f ) ; (b) znaleźć miejsca zerowe funkcji f; znaleźć punkty nieokreśloności f, 1 2 # e v a l f ( R o o t O f ( numer ( f ) , x ) ) ; e v a l f ( R o o t O f ( numer ( f ) , x , 3 ) ) ; e v a l f ( R o o t O f ( denom ( f ) , x ) ) ; evalf ( RootOf ( numer ( f ) , x ) ) ; factor ( numer ( f ) ) ; factor ( denom ( f ) ) ; (c) wyznaczyć granice w punktach nieokreśloności (lewo i prawostronne). 1 limit (f , x = 1 , left ) ; limit (f , x = 1 , right ) ; Zadanie 111. Zdefiniuj wyrażenie złożenie funkcji g w punkcie x. 1 1 1−x . Stwórz z niego funkcję g i oblicz g(2009) (5), gdzie g(n) (x) oznacza n-krotne t : = 1 / (1 - x ) ; g : = unapply (t , x ) ; ( g @ @ 2009) (5) ; Zadanie 112. Narysuj wykres funkcji g(x) = max Wykresy funkcji. 1 + x, 2x2 , x gdzie wyrażenie max{a, b} oznacza maksimum z liczb a, b. 1 plot ( max (1 / x + x , 2 * x ^ 2) , x = 0 ..3 ) ; 19 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 113. Narysuj na jednym układzie współrzędnych wykresy funkcji x 7→ f(x), x 7→ Zx sin(t) f(x) = dt. t −∞ df dx , x 7→ d2 f , dx2 gdzie Grubość linii wykresu ustaw na 2. 1 f : = x - > int ( sin ( t ) /t , t = - infinity..x ) ; plot ({ f ( x ) , D ( f ) ( x ) , ( D @ @ 2) ( f ) ( x ) } , x = - 20 ..1 , thickness = 2) ; Zadanie 114. Na jednym układzie współrzędnych narysuj wykresy funkcji fk : [−6π, 6π] → R, fk (x) = sin(kx), k ∈ {0, . . . , 4}. Wykonaj to zadanie stosując listy i ciągi, a nie wypisując ręcznie wszystkie funkcje. 1 plot ({ seq ( sin ( k * x ) , k = 1 ..4 ) } , x = -6 * Pi..6 * Pi , scaling = constrained ) ; Zadanie 115. Narysować wykresy następujących funkcji: (a) sin(x)/x w przedziałach [−20, 20], [−80, 80], (b) sin(x), sin(x + 1), sin(x + 2), sin(x + 3) w przedziale [−2π, 2π] (na jednym układzie współrzędnych), (c) sin(x)k + · · · + sin2 (x) + sin(x), w przedziale [−2π, 2π], dla k = 1, 2, 3, 4, 5, 6, (d) ln(x) sin(x), sin(x), ln(x) w przedziale [0, 10] (na jednym układzie współrzędnych). 1 2 3 4 5 with ( plots ) : plot ( sin ( x ) /x , x = - 20 ..20 ) ; plot ( sin ( x ) /x , x = - 80 ..80 ) ; plot ({ seq ( sin ( x + k ) , k = 0 ..3 ) } , x = -2 * Pi..2 * Pi ) ; plot ( convert ([ seq ( sin ( x ) ^k , k = 1 ..6 ) ] , `+ `) , x = -2 * Pi..2 * Pi ) ; plot ({ ln ( x ) * sin ( x ) , sin ( x ) , ln ( x ) } , x = 0 ..10 ) ; Zadanie 116. Narysuj wykresy następujących funkcji: (a) tan(x) w przedziałach [−1.4, 1.4] i [−0.2, 0.2] (wykres ma być zielony i pogrubiony), (b) cos(x), cos(x − 2), cos(x) + 2, cos(x) − 2 w przedziale [−3π, 3π] na jednym układzie współrzędnych, (c) ln(x) + ln(x)2 + · · · + ln(x)5 w przedziale [0, 5]. 1 2 3 4 plot ( tan ( x ) , x = -1 .4..1.4 , color = green , thickness = 4) ; plot ( tan ( x ) , x = -0 .2..0.2 , color = green , thickness = 4) ; plot ([ cos ( x ) , cos ( x - 2) , cos ( x ) + 2 , cos ( x ) - 2] , x = -3 * Pi..3 * Pi ) ; plot ( sum ( ln ( x ) ^k , k = 1 ..5 ) , x = 0 ..5 ) ; Zadanie 117. Porównaj działanie komend sum – Sum, product – Product, a następnie oblicz: P∞ 1 Qblog7 (2009)c P∞ (π·i)k (a) (c) (b) k=1 k2 , k=1 k=1 k! , 1 2 3 Szeregi liczbowe. 2−ki . 1−4k2 i Sum (1 / k ^ 2 , k = 1 ..infinity ) = sum (1 / k ^ 2 , k = 1 ..infinity ) ; Sum (( Pi * I ) ^ k / k ! , k = 1 ..infinity ) = sum (( Pi * I ) ^ k / k ! , k = 1 ..infinity ) ; Product ((2 -k * I ) / (1 -4 * k ^ 2 * i ) , k = 1 ..floor ( log [7](2009) ) ) = product ((2 -k * I ) / (1 -4 * k ^ 2 * i ) , k = 1 ..floor ( log [7](2009) ) ) ; Zadanie 118. Wyznacz wzory na Pn Pn 4 2 (a) (c) k=1 k , k=1 k , Pn Pn 3 5 (d) (b) k=1 k , k=1 k , (e) (f) Pn k=1 Pn k=1 k7 , (g) k9 , (h) Pn k k=1 3k , Pn 1 k=1 k(k+1)(k+2) . i przedstaw je w postaci iloczynowej i ogólnej następująco „wzór” = „wynik w postaci iloczynowej” = „wynik w postaci ogólnej”. 1 2 3 4 5 Sum ( k ^ 2 , k = 1 ..n ) = sum ( k ^ 2 , k = 1 ..n ) ; Sum ( k ^ 3 , k = 1 ..n ) = Sum ( k ^ 4 , k = 1 ..n ) = sum ( k ^ 4 , k = 1 ..n ) ; Sum ( k ^ 5 , k = 1 ..n ) = Sum ( k ^ 7 , k = 1 ..n ) = sum ( k ^ 7 , k = 1 ..n ) ; Sum ( k ^ 9 , k = 1 ..n ) = Sum ( k / 3 ^k , k = 1 ..n ) = sum ( k / 3 ^k , k = 1 ..n ) ; Sum (1 / ( k * ( k + 1) * ( k + 2) ) , k = 1 ..n ) = sum (1 / ( k * ( k + 1) * ( k + 2) ) , sum ( k ^ 3 , k = 1 ..n ) ; sum ( k ^ 5 , k = 1 ..n ) ; sum ( k ^ 9 , k = 1 ..n ) ; k = 1 ..n ) ; 20 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 119. Wyznacz podane sumy i iloczyny. Wynik zapisz w postaci „symbol” = „wynik”. (a) 1 (b) 1 (c) 1 (d) 1 (e) 1 (f) 1 (g) 1 (h) 1 (i) 1 (j) 1 (k) 1 (l) 1 (m) 1 (n) 1 (o) 1 (p) 1 (q) 1 (r) 1 (s) 1 P53 k=3 (−1)k k4 (wynik przedstaw jako liczba wymierna oraz 100-pozycyjne rozwinięcie dziesiętne). Sum (( - 1) ^ k / k ^ 4 , k = 3 ..53 ) = sum (( - 1) ^ k / k ^ 4 , k = 3 ..53 ) ; P36 k=−7 (1 + i)k (wynik w postaci a + bi). Sum ((1 + I ) ^k , k = -7 ..36 ) = sum ((1 + I ) ^k , k = -7 ..36 ) ; Pb√127c k=3 (k + 1)3 . Sum (( k + 1) ^ 3 , k = 3 ..floor ( sqrt (127) ) ) = sum (( k + 1) ^ 3 , k = 3 ..floor ( sqrt (127) ) ) ; Q47 (część rzeczywista i urojona w postaci rozwinięcia dziesiętnego), i+3k k=4 2k−3 product (( I + 3 * k ) / (2 * k - 3) , k = 4 ..47 ) : evalc (%) ; Qblog4 (23)c 2k+i 3−4ki . k=−5 Product ((2 * k + I ) / (3 -4 * k * I ) , k = -5 ..log [4](23) ) = product ((2 * k + I ) / (3 -4 * k * I ) , k = -5 ..log [4](23) ) ; P45 3k k=1 k! , Sum (3 ^ k / k ! , k = 1 ..45 ) = sum (3 ^ k / k ! , k = 1 ..45 ) ; Pb√123c k=0 k3 , gdzie symbol bxc oznacza część całkowitą liczby x. Sum ( k ^ 3 , k = 0 ..floor ( sqrt (123) ) ) = sum ( k ^ 3 , k = 0 ..floor ( sqrt (123) ) ) ; Q15 1−2ki k=1 3k+6i , gdzie i oznacza jednostkę urojoną. Product ((1 - 2 * k * I ) / (3 * k + 6 * I ) , k = 1 ..15 ) = product ((1 - 2 * k * I ) / (3 * k + 6 * I ) , k = 1 ..15 ) ; P∞ 1 k=1 k , Sum (1 /k , k = 1 ..infinity ) = sum (1 /k , k = 1 ..infinity ) ; P∞ 1 k=1 k4 , Sum (1 / k ^ 4 , k = 1 ..infinity ) = sum (1 / k ^ 4 , k = 1 ..infinity ) ; P∞ 1 k=1 k! , Sum (1 / k ! , k = 1 ..infinity ) = sum (1 / k ! , k = 1 ..infinity ) ; Pbe4 c k=d log3 k , k2 √ 4 152e sum ( log [3]( k ) / k ^ 2 , k = ceil ( sqrt [4](152) ) ..floor ( E ^ 4) ) ; P12 k k=−2 (e + 2ki), Sum ( E ^ k + 2 * k *I , k = -2 ..12 ) = sum ( E ^ k + 2 * k *I , k = -2 ..12 ) ; P10 −2k+1 k=1 k−3i , Sum (( -2 * k + 1) / ( k - 3 * I ) , k = 1 ..10 ) = sum (( -2 * k + 1) / ( k - 3 * I ) , k = 1 ..10 ) ; Pn k=0 n 2 k , sum ( binomial (n , k ) ^ 2 , k = 1 ..n ) ; P∞ k=0 (−1) n n xn , sum (( - 1) ^ n * n / x ^n , n = 1 ..infinity ) ; P∞ x2n n=0 (2n)! , Sum ( x ^ (2 * n ) / (2 * n ) ! , n = 0 ..infinity ) = sum ( x ^ (2 * n ) / (2 * n ) ! , n = 0 ..infinity ) ; P10 k=1 sin2 πk 12 , Sum ( sin ( k * Pi / 12) ^ 2 , k = 1 ..10 ) = sum ( sin ( k * Pi / 12) ^ 2 , k = 1 ..10 ) ; P30 Q70 k=4 (k+3)2 j=2 (k+j) . Sum ( Product (( k + 3) ^ 2 / ( j + k ) , j = 2 ..70 ) , k = 4 ..30 ) = sum ( product (( k + 3) ^ 2 / ( j + k ) , j = 2 ..70 ) , k = 4 ..30 ) ; 21 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Granice ciągów i funkcji. Zadanie 120. Oblicz następujące granice: (a) limx→∞ 1 + 1 Limit ((1 + Pi / x ) ^x , x = infinity ) = limit ((1 + Pi / x ) ^x , x = infinity ) ; (b) limx→∞ 1 ln x ex , Limit ( ln ( x ) / E ^x , x = infinity = limit ( ln ( x ) / E ^x , x = infinity ) ; (c) limn→∞ 1 12 +1−1 (1+2)! + ··· + n2 +n−1 (n+2)! , 2n n! nn , n! n√ ( ne ) n . Limit ( n ! / (( n / E ) ^ n * sqrt ( n ) ) , n = infinity ) = limit ( n ! / (( n / E ) ^ n * sqrt ( n ) ) , n = infinity ) ; (f) limn→+∞ 1 22 +2−1 (2+2)! Limit ((2 ^ n * n ! ) / ( n ^ n ) , n = infinity ) = limit ((2 ^ n * n ! ) / ( n ^ n ) , n = infinity ) ; (e) limn→+∞ 1 + f : = n - > sum (( i ^ 2 + i - 1) / (( i + 2) ! ) , i = 1 ..n ) ; limit ( f ( n ) , n = infinity ) ; (d) limn→+∞ 1 π x , x Pn 1 k=1 k − ln(n) . Limit ( sum (1 /k , k = 1 ..n ) -\ ln ( n ) , n = infinity ) = limit ( sum (1 /k , k = 1 ..n ) -\ ln ( n ) , n = infinity ) ; Zadanie 121. Oblicz następujące granice: (a) limn→+∞ 9 − 8n2 +1 n2 (b) limx→0 cos(2x) (c) 1 2 3 1 limn→+∞ n 1 x2 7n2 , , π cos( 2n ) 2π + cos( 2n ) + · · · + cos( nπ 2n ) . limit ((9 - (8 * n ^ 2 + 1) / ( n ^ 2) ) ^ (7 * n ^ 2) , n = infinity ) ; limit ( cos (2 * x ) ^ (1 / x ^ 2) , x = 0) ; limit (1 / n * sum ( cos (( i * Pi ) / (2 * n ) ) , i = 1 ..n ) , n = infinity ) ; Zadanie 122. Oblicz granice: (a) limx→∞ sin (b) limx→∞ x sin 1 2 1 x , 1 x (c) limx→1 , (e) limx→1− x , x3 −1 (d) limx→1+ x . x3 −1 x , x3 −1 limit ( sin (1 / x ) , x = infinity ) ; limit ( x * sin (1 / x ) , x = infinity ) ; limit ( x / ( x ^ 3 - 1) , x = 1) ; limit ( x / ( x ^ 3 - 1) , x = 1 , left ) ; limit ( x / ( x ^ 3 - 1) , x = 1 , right ) ; Zadanie 123. Dana jest funkcja f(x) = 1+ 1 x x . Znajdź jej miejsca zerowe, następnie wylicz granice lim f(x), x→∞ lim f 0 (x) x→∞ oraz udowodnij, że dla dowolnego a ∈ R zachodzi limx→∞ 1 + 1 2 a x x = limx→∞ 1+ a 1 x x . f : = x - > (1 + 1 / x ) ^ x ; limit ( f ( x ) , x = infinity ) ; limit ( D ( f ) ( x ) , x = infinity ) ; is ( limit ((1 + a / x ) ^x , x = infinity ) = ( limit ((1 + 1 / x ) ^x , x = infinity ) ) ^ a ) ; 22 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski Zadanie 124. Oblicz 4x 3 , lim 1− x→+∞ 2x 1 2 3 30 stycznia 2013 lim+ arccos(ex − 1), x→0 lim+ (sin(x)) √ x ln(ex −1)−1 ln(ex −1) x→0 , lim cos(sin(x2 ))cos(x) . + x→ π 2 limit ((1 -3 / (2 * x ) ) ^ (4 * x ) , x = infinity ) ; limit ( arccos ( E ^ x - 1) , x = 0 , right ) ; limit ( sin ( x ) ^ (( sqrt ( x ) * ln ( E ^ x - 1) - 1) / ( ln ( E ^ x - 1) ) ) , x = 0 , right ) ; limit ( cos ( sin ( x ^ 2) ) ^ ( cos ( x ) ) , x = Pi / 2 , right ) ; Zadanie 125. Znajdź miejsca zerowe i oblicz lewo-, prawo- i obustronne granice funkcji g : R+ → R, g(x) = xe − ex w punktach: x = 2, x = e, x = 3, x = π, x = 4. 1 2 3 4 5 6 g : = x - > x ^ E - E ^ x ; solve ( g ( x ) = 0 , x ) ; limit ( g ( x ) , x = 2) , limit ( g ( x ) , x = 2 , left ) , limit ( g ( x ) , x = 2 , right ) ; limit ( g ( x ) , x = E ) , limit ( g ( x ) , x =E , left ) , limit ( g ( x ) , x =E , right ) ; limit ( g ( x ) , x = 3) , limit ( g ( x ) , x = 3 , left ) , limit ( g ( x ) , x = 3 , right ) ; limit ( g ( x ) , x = Pi ) , limit ( g ( x ) , x = Pi , left ) , limit ( g ( x ) , x = Pi , right ) ; limit ( g ( x ) , x = 4) , limit ( g ( x ) , x = 4 , left ) , limit ( g ( x ) , x = 4 , right ) ; Zadanie 126. Sprawdź, że pochodna spełnia relacje: (F + G) 0 = F 0 + G 0 , 1 (F · G) 0 = F 0 · G + F · G 0 , (F ◦ G) 0 = F 0 ◦ G · G 0 . Rachunek różniczkowy funkcji jednej zmiennej. is ( D ( F + G ) = D ( F ) + D ( G ) ) ; is ( D ( F * G ) = D ( F ) * G + F * D ( G ) ) ; is ( D ( F @ G ) = D ( F ) @ G * D ( G ) ) ; Zadanie 127. Obliczyć pochodną z definicji f(x) = ax . 1 f : = x - > a ^ x ; limit (( f ( y ) - f ( x ) ) / ( y - x ) , y = x ) ; Zadanie 128. Oblicz pochodne podanych wyrażeń i funkcji (wynikiem funkcji powinna być funkcja, a wyrażenia wyrażenie): √ (a) x2 − 4, 1 Diff ( sqrt ( x ^ 2 - 4) , x ) = diff ( sqrt ( x ^ 2 - 4) , x ) ; (b) f(x) = arcsin √ x3 , f : = x - > arcsin ( sqrt ( x ^ 3) ) ; D ( f ) ; q 1−arcsin(y) (c) 1+arcsin(y) , 1 1 Diff ( sqrt ((1 - arcsin ( y ) ) / (1 + arcsin ( y ) ) ) ,y ) = diff ( sqrt ((1 - arcsin ( y ) ) / (1 + arcsin ( y ) ) ) ,y ) ; (d) f(x) = 1 √4 3 arctan √1 (2 tan x 2 3 + 1) − x. f : = x - > 4 / 3 * arctan (1 / sqrt (3) * (2 * tan ( x / 2) + 1) ) - x ; D ( f ) ; Zadanie 129. Oblicz pochodne funkcji zadanych przez następujące wyrażenia: (a) 1 2 cot2 (x) + ln(x), q 2 a−b (b) a2 −b arctan 2 a+b tan 1 x 2 , dla a > b 0. D (1 / 2 * cot ( x ) ^ 2 + ln ( x ) , x ) ; D (2 / ( a ^ 2 - b ^ 2) * arctan ( sqrt (( a - b ) / ( a + b ) ) * tan ( x / 2) ) , x ) ; Zadanie 130. Oblicz pochodne następujących funkcji: (a) f(x) = ln (x − 1)2 − 3e−5x , √ (b) g(x) = arccos( 6x4 − 2 · sin(3x)), tan( π x) (c) h(x) = esin(6x) , x2 2 (d) k(x) = a(x) − 2b(x)/e−3cx . 1 2 3 4 f g h k := := := := x x x x -> -> -> -> ln (( x - 1) ^ 2) - 3 * E ^ ( -5 * x ) ; diff ( f ( x ) , x ) ; arccos ( sqrt (6 * x ^ 4 - 2) * sin (3 * x ) ) ; diff ( g ( x ) , x ) ; ( tan ( Pi / x ) ) / ( E ^ ( sin (6 * x ) ) * x ^ 2) ; diff ( h ( x ) , x ) ; a ( x ) -2 * b ( x ) / E ^ ( -3 * c * x ^ 2) ; diff ( k ( x ) , x ) ; Zadanie 131. Oblicz pochodne: 23 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 1 (a) f 0 (x), f 00 (x), gdzie f(x) = e x . 1 cos(x) . x2 diff ( exp (1 / x ) ,x ) ; diff ( exp (1 / x ) , x$2 ) ; diff ( cos ( x ) / x ^ 2 , x ) ; diff ( cos ( x ) / x ^ 2 , x$5 ) ; Zadanie 132. 100. 1 (b) f 0 (x), f(5) (x), gdzie f(x) = Zdefiniować funkcję f(x) = x234321 + cos(x) + ln(x) i obliczyć 10-tą pochodną funkcji f w punkcie f : = x - > x ^ (234321) + cos ( x ) + ln ( x ) ; ( D @ @ 10) ( f ) (100) ; Zadanie 133. Znajdź wzór ogólny na pochodną n-tego rzędu funkcji: (a) f(x) = xex , 1 2 (b) g(x) = cos x 3 . for n from 1 to 10 do diff ( x * E ^x , x$n ) ; end do ; for n from 1 to 10 do diff ( cos ( x / 3) , x$n ) ; end do ; Zadanie 134. Oblicz następujące całki (wynik przedstaw w najprostszej postaci): (a) 1 (b) 1 (c) 1 R Rachunek całkowy. sin(x) sin(2x) dx, Int ( sin ( x ) * sin (2 * x ) , x ) = int ( sin ( x ) * sin (2 * x ) , x ) ; R x+1 x2 +4x+6 dx, Int (( x + 1) / ( x ^ 2 + 4 * x + 6) , x ) = int (( x + 1) / ( x ^ 2 + 4 * x + 6) , x ) ; R x4 sin(x) dx. Int ( x ^ 4 * sin ( x ) , x ) = int ( x ^ 4 * sin ( x ) , x ) ; Zadanie 135. Oblicz podane całki nieoznaczone: (a) 1 (b) 1 R cos(x) 2+sin(x)+2 cos(x) dx, int ( cos ( x ) / (2 + sin ( x ) + 2 * cos ( x ) ) , x ) ; R 2x3 −19x2 +58x−42 x2 −8x+16 dx, int ((2 * x ^ 3 - 19 * x ^ 2 + 58 * x - 42) / ( x ^ 2 - 8 * x + 16) , x ) ; Zadanie 136. Oblicz (a) 1 R x4 −5x+1 x3 −x2 +x−1 dx, (b) R 1 7 sin(x)−5 cos(x) (c) dx, R ex sin(x) sin(7x) dx. int (( x ^ 4 -5 * x + 1) / ( x ^ 3 -x ^ 2 + x - 1) , x ) ; int (1 / (7 * sin ( x ) -5 * cos ( x ) ) , x ) ; int ( E ^ x * sin ( x ) * sin (7 * x ) , x ) ; Zadanie 137. Oblicz całki: (a) 1 R√ (b) x2 − a2 dx, R cos(2x) cos(x)−sin(x) (c) dx, R min{x, x2 } dx, int ( sqrt ( x ^ 2 -a ^ 2) , x ) ; int ( cos (2 * x ) / ( cos ( x ) - sin ( x ) ) , x ) ; int ( min (x , x ^ 2) , x ) ; Zadanie 138. Oblicz następujące całki: Z √ 1 2 1 dx, 2 −x + x + 1 Z∞ 0 Z1 e−x sin(x) dx, x Z eπ ex+e dx, 0 sin ln(x) dx. 1 int (1 / sqrt ( -x ^ 2 + x + 1) , x ) ; int ( E ^ ( -x ) * sin ( x ) , x = 0 ..infinity ) ; int ( E ^ ( x + E ^ x ) , x = 0 ..1 ) ; int ( sin ( ln ( x ) ) , x = 0 ..E ^ Pi ) ; 24 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 139. Oblicz całki oznaczone: (a) 1 (b) 1 (c) 1 (d) 1 R2 1 √ 1√ x+1+ x+2 dx, Int (1 / ( sqrt ( x + 1) + sqrt ( x + 2) ) , x = 1 ..2 ) = int (1 / ( sqrt ( x + 1) + sqrt ( x + 2) ) , x = 1 ..2 ) ; R4 1 2 sin x+cos x dx, Int (1 / ( sin ( x ) + cos ( x ) ) , x = 2 ..4 ) = int (1 / ( sin ( x ) + cos ( x ) ) , x = 2 ..4 ) ; R1 0 x2 arctan(x) dx, Int ( x ^ 2 * arctan ( x ) , x = 0 ..1 ) = int ( x ^ 2 * arctan ( x ) , x = 0 ..1 ) ; R 21 π 0 √ cos(x) 1+sin(x) dx. Int ( cos ( x ) / sqrt (1 + sin ( x ) ) , x = 0 ..Pi / 2) = int ( cos ( x ) / sqrt (1 + sin ( x ) ) , x = 0 ..Pi / 2) ; Zadanie 140. Oblicz następujące całki: (a) 1 (b) 1 R1 0 (d) 1 dx, Int (1 / sqrt (1 - x ^ 2) , x = 0 ..1 ) = int (1 / sqrt (1 - x ^ 2) , x = 0 ..1 ) ; R∞ 0 e−ax cos2 bx dx, gdzie a > 0, Int ( e ^ ( -a * x ) * cos ( b * x ) ^ 2 , x = 0 ..infinity ) = int ( e ^ ( -a * x ) * cos ( b * x ) ^ 2 , x = 0 ..infinity ) ; (c) − 1 √ 1 1−x2 R1 ln(t) 0 1+t2 dt, - Int ( ln ( t ) / (1 + t ^ 2) , t = 0 ..1 ) = - int ( ln ( t ) / (1 + t ^ 2) , t = 0 ..1 ) ; R∞ 0 e−ax ln(x) √ x dx, dla a > 0. Int ( E ^ ( -a * x ) * ln ( x ) / sqrt ( x ) , x = 0 ..infinity ) = int ( E ^ ( -a * x ) * ln ( x ) / sqrt ( x ) , x = 0 ..infinity ) ; Zadanie 141. Oblicz przybliżoną wartość całki 1 2 3 4 exp(sin(x)) dx. √ x i oblicz całkę Rb a √ sin( x) √ x R dx. Wykonaj całkowanie przez części ex sin(x) dx. with ( Student : - Calculus1 ) : infolevel [ Student [ Calculus1 ]] : = 1 : Rule [ change , u = sqrt ( x ) ]( Int ( sin ( sqrt ( x ) ) / sqrt ( x ) , x = a..b ) ) ; Rule [ parts , sin ( x ) , exp ( x ) ]( Int ( sin ( x ) * exp ( x ) , x ) ) ; Zadanie 143. Zamień zmienne w całce 1 0 evalf ( Int ( exp ( sin ( x ) ) ) ,x = 0 ..1 ) ; # ZAMIAST e v a l f ( i n t ( e x p ( s i n ( x ) ) ) , x = 0 . . 1 ) ; Zadanie 142. Wykonaj podstawienie u = 1 R1 R 5 cos(x) + 1 sin(x) dx. with ( student ) : changevar ( cos ( x ) + 1 =u , Int (( cos ( x ) + 1) ^ 5 * sin ( x ) , x ) , u ) ; Zadanie 144. Wyplotuj całkę nieoznaczoną z 1/ 2 + sin(x) i zastanów się dlaczego nie jest ona ciągła (wbrew podstawowemu twierdzeniu rachunku rożniczkowego i całkowego). 1 2 f : = 1 / (2 + sin ( x ) ) ; F : = int (f , x ) ; plot (F , x = -3 * Pi..3 * Pi , discont = true , colour = black ) ; Zadanie 145. Policz całki 1 2 3 4 5 R∞ 0 exp(−st) dt, R∞ 0 exp − s(s − 1)t dt. Co trzeba założyć, żeby były one zbieżne? assume ( s > 0) ; int ( exp ( -s * t ) , t = 0 ..infinity ) ; int ( exp ( -s * ( s - 1) * t ) , t = 0 ..infinity ) ; additionally ( s > 1) ; int ( exp ( -s * ( s - 1) * t ) , t = 0 ..infinity ) ; 25 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 146. Znajdź równania wszystkich asymptot funkcji 1 f(x) = x + · arctan(x). x+2 1 2 3 4 5 f : = x - > ( x + 1 / ( x + 2) ) * arctan ( x ) ; solve ( f ( x ) = infinity , x ) ; solve ( f ( x ) = - infinity , x ) ; simplify ( f ( x ) ) ; solve ( denom ( f ( x ) ) = 0 , x ) ; a1 : = limit ( f ( x ) /x , x = infinity ) ; a2 : = limit ( f ( x ) /x , x = - infinity ) ; b1 : = limit ( f ( x ) - a1 *x , x = infinity ) ; b2 : = limit ( f ( x ) - a2 *x , x = - infinity ) ; Zadanie 147. Napisz równanie stycznej do wykresu funkcji f(x) = 1 2 Zastosowania rachunku różniczkowego i całkowego. ln(x) x w jej punkcie przegięcia. f : = x - > ln ( x ) / x ; x0 : = solve ( diff ( f ( x ) , x$2 ) = 0 , x ) ; simplify ( x0 + D ( f ) ( x0 ) * ( x - x0 ) ) ; Zadanie 148. Znajdź punkty stacjonarne funkcji g(x) = x4 − 3x3 − 2x2 + 9x + 1 oraz zbadaj istnienie ekstremów w tych punktach (za pomocą drugich pochodnych). 1 2 3 g : = x - > x ^ 4 - 3 * x ^ 3 - 2 * x ^ 2 + 9 * x + 1; ans : = solve ( diff ( g ( x ) , x ) = 0 , x ) ; ( D @ @ 2) ( g ) ( ans [1]) , ( D @ @ 2) ( g ) ( ans [2]) , ( D @ @ 2) ( g ) ( ans [3]) ; Zadanie 149. Wyznacz największą wartość funkcji f(x) = x−x na przedziale (0, +∞). 1 2 f : = x - > x ^ ( -x ) ; solve ( D ( f ) ( x ) = 0 , x ) ; f (1 / E ) ; plot ( f ( x ) , x = 0 ..3 ) ; Zadanie 150. Dana jest funkcja f(x) = 5 sin(x/2π) + 10 w przedziale x ∈ [0, 35]. (a) Narysować bryłę obrotową (wazon) powstałą przez obrót tej funkcji dookoła osi OX. 1 2 with ( Student [ Calculus1 ]) : V o l u m e O f R e v o l u t i o n (5 * sin ( x / (2 * Pi ) + 10) , x = 0 ..35 , output = plot , axis = horizontal ) ; (b) Obliczyć powierzchnię i objętość tego wazonu. 1 2 V o l u m e O f R e v o l u t i o n (5 * sin ( x / (2 * Pi ) + 10) , x = 0 ..35 , axis = horizontal ) ; S u r f a c e O f R e v o l u t i o n (5 * sin ( x / (2 * Pi ) + 10) , x = 0 ..35 , axis = horizontal ) ; Zadanie 151. Wykonaj polecenia: (a) oblicz długość łuku 9y2 = x3 , 0 ¬ x ¬ 12, (b) obliczyć pole powierzchni powstałej z obrotu łuku paraboli y2 = 5x w granicach 0 ¬ x ¬ 3 dokoła osi OX oraz objętość bryły ograniczoną tą powierzchnią i płaszczyzną x = 3. 1 2 3 4 5 6 7 with ( plots ) : implicitplot (9 * y ^ 2 = x ^ 3 , x = -1 ..1 , y = -1 ..1 ) ; f : = t - > 9 * t ^ 2; g : = t - > t ^ 3; plot ([ f ( t ) ,g ( t ) ,t = -2 ..2 ] , scaling = constrained ) ; 2 * int ( sqrt (( D ( f ) ( t ) ) ^ 2 + ( D ( g ) ( t ) ) ^ 2) , t = 0 ..12 ) ; with ( Student [ Calculus1 ]) : 2 * S u r f a c e O f R e v o l u t i o n ( sqrt (5 * x ) , x = 0 ..3 , axis = horizontal ) ; Zadanie 152. Wyznacz długość łuku y2 = x 6 , 1 2 3 4 5 0 ¬ x ¬ 13. with ( plots ) : implicitplot ( y ^ 2 = x ^ 6 , x = -1 ..1 , y = -1 ..1 ) ; f : = t - > t ^ 2; g : = t - > t ^ 6; plot ([ f ( t ) ,g ( t ) ,t = -2 ..2 ] , scaling = constrained ) ; 2 * int ( sqrt (( D ( f ) ( t ) ) ^ 2 + ( D ( g ) ( t ) ) ^ 2) , t = 0 ..12 ) ; Zadanie 153. Oblicz pola obszarów ograniczonych krzywymi 26 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 (a) y = 2x − x2 , x + y = 0; (b) y = x2 , y = x2 2 , y = 3x. Sporządź ilustracje do obu przykładów. 1 2 3 4 plot ({ -x , 2 * x -x ^ 2} , x = -1 ..4 ) ; plot ({ x ^ 2 , x ^ 2 / 2 , 3 * x } , x = -1 ..7 ) ; solve ( -x = 2 * x -x ^ 2 , x ) ; solve ( x ^ 2 = x ^ 2 / 2 , x ) ; solve ( x ^ 2 = 3 *x , x ) ; solve ( x ^ 2 / 2 = 3 *x , x ) ; int (2 * x -x ^ 2 +x , x = 0 ..3 ) ; int ( x ^ 2 -3 *x , x = 0 ..3 ) + int (3 * x -x ^ 2 / 2 , x = 3 ..6 ) ; Zadanie 154. Wyznacz objętość bryły powstałej przez obrót funkcji f(x) = sin(x), x ∈ [0, π] względem osi OX. 1 2 with ( Student [ Calculus1 ]) : V o l u m e O f R e v o l u t i o n ( sin ( x ) , x = 0 ..Pi , axis = horizontal ) ; Zadanie 155. Oblicz objętość bryły powstałej z obrotu figury (a) OX, 1 2 ¬ x ¬ 4, 0 ¬ y ¬ 2 x wokół osi: (b) OY. Naszkicuj powstałe bryły. 1 2 3 4 5 6 7 8 f := x -> 2/x; g : = unapply ( solve ( f ( x ) =y , x ) ,y ) ; Student : - Calculus1 [ V o l u m e O f R e v o l u t i o n ]( f ( x ) , Student : - Calculus1 [ V o l u m e O f R e v o l u t i o n ]( f ( x ) , Student : - Calculus1 [ V o l u m e O f R e v o l u t i o n ]( f ( x ) , Student : - Calculus1 [ V o l u m e O f R e v o l u t i o n ]( f ( x ) , Pi * int ( f ( x ) ^ 2 , x = 1 / 2 ..4 ) ; Pi * int ( g ( y ) ^ 2 , y = 1 / 4 ..2 ) ; x x x x = = = = 1 / 2 ..4 , 1 / 2 ..4 , 1 / 2 ..4 , 1 / 2 ..4 , axis = horizontal , output = plot ) ; axis = horizontal ) ; axis = vertical , output = plot ) ; axis = vertical ) ; Zadanie 156. Wyznacz wzór na pole n-kąta foremnego wpisanego w okrąg o promieniu R. Zbadaj granicę tego wyrażenia przy n → +∞. 1 2 S : = n - > 1 / 2 * n * R ^ 2 * sin (2 * Pi / n ) ; limit ( S ( n ) , n = infinity ) ; Zadanie 157. Oblicz długość krzywej f(x) = 1 2 1 2 √ √ x x2 − 1 − ln(x + x2 − 1) na przedziale [1, 101]. f : = x - > 1 / 2 * ( x * sqrt ( x ^ 2 - 1) - ln ( x + sqrt ( x ^ 2 - 1) ) ) ; int ( sqrt (1 + ( D ( f ) ( t ) ) ^ 2) , t = 1 ..101 ) ; Zadanie 158. Rozwiń w szereg Taylora w punkcie 0 do 10. miejsca następujące funkcje: cos2 x, 1 ex . +1 x2 taylor ( cos ( x ) ^ 2 , x = 0 , 10) ; taylor ( ln (1 + x ^ 3) , x = 0 , 10) ; taylor ( E ^ x / ( x ^ 2 + 1) , x = 0 , 10) ; Zadanie 159. dla b > 0. 1 ln(1 + x3 ), Szeregi Taylora. 1 Rozwiń w punkcie 0 w szereg Taylora do 9-tego miejsca następujące funkcje sin sin(x) , (bm + x) m , taylor ( sin ( sin ( x ) ) , x = 0 , 9) ; assume ( b > 0) ; taylor ( sqrt [ m ]( b ^ m + x ) , x = 0 , 9) ; Zadanie 160. Korzystając ze wzoru Maclaurina oszacuj dokładność wzoru cos2 (x) ≈ 1 − x2 , dla |x| ¬ 0.1. 1 taylor ( cos ( x ) ^ 2 , x = 0 , 20) ; Zadanie 161. Zdefiniuj funkcję s, której pochodna spełnia równanie s 0 (t) = tan s(t) i sprawdź jakie są rozwinięcia tej funkcji w szeregi za pomocą komend series oraz taylor. 1 2 3 4 5 6 s (0) : = a ; ` diff / s ` : = proc ( t ) return tan ( s ( t ) ) ; end proc ; Order : = 5; taylor ( s ( x ) , x = 0) ; series ( s ( x ) , x ) ; 27 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 5 30 stycznia 2013 Analiza matematyczna II Zadanie 162. Oblicz pochodne cząstkowe: (a) 1 2 ∂f ∂f ∂x , ∂y dla f(x, y) = e3x 3 y Pochodne cząstkowe. (b) , ∂g ∂g ∂x , ∂y dla g(x, y) = 2x4 − 4 cos(y). f : = (x , y ) - > E ^ (3 * x ^ 3 * y ) ; diff ( f (x , y ) , x ) ; diff ( f (x , y ) , y ) ; g : = (x , y ) - > 2 * x ^ 4 - 4 * cos ( y ) ; diff ( g (x , y ) , x ) ; diff ( g (x , y ) , y ) ; Zadanie 163. Oblicz pochodne cząstkowe 1 2 3 4 5 (a) ∂4 f ∂x2 ∂y∂z (b) ∂2 f ∂2 f ∂2 f ∂x∂y , ∂x2 , ∂y2 dla f(x, y) = x2 arctan yx − y2 arctan yx , (c) ∂2 f ∂2 f ∂2 f ∂x∂y , ∂x2 , ∂y2 dla f(x, y) = sin(x) cos(y), dla f(x, y, z) = √ 1 , x2 +y2 +z2 f : = (x ,y , z ) - > 1 / sqrt ( x ^ 2 + y ^ 2 + z ^ 2) ; diff ( f (x ,y , z ) ,[x ,x ,y , z ]) ; f : = (x , y ) - > x ^ 2 * arctan ( y / x ) - y ^ 2 * arctan ( x / y ) ; diff ( f (x , y ) ,[x , y ]) ; diff ( f (x , y ) , y$2 ) ; diff ( f (x , y ) , y$2 ) ; f : = (x , y ) - > sin ( x ) * cos ( y ) ; diff ( f (x , y ) ,[x , y ]) ; diff ( f (x , y ) , y$2 ) ; diff ( f (x , y ) , y$2 ) ; Zadanie 164. Zdefiniuj funkcję ex + ey + ez f(x, y, z) = p x2 + y2 + z2 a następnie oblicz (a) 1 2 ∂3 f ∂x∂y∂z (3, 1, 2), 2 3 ∂3 f (x, y, z), ∂x3 (c) ∂4 f (0, 0, 1). ∂x2 ∂y∂z f : = (x ,y , z ) - > ( E ^ x + E ^ y + E ^ z ) / sqrt ( x ^ 2 + y ^ 2 + z ^ 2) ; D [1 ,1 ,1]( f ) (3 ,1 ,2) ; diff ( f (x ,y , z ) , x$3 ) ; D [2 ,1 ,1]( f ) (0 ,0 ,1) ; Zadanie 165. Wyznacz 1 (b) ∂z ∂x oraz ∂z ∂y , jeśli z = f(u, v), gdzie u = x2 − y2 , v = exy . u : = (x , y ) - > x ^ 2 - y ^ 2; v : = (x , y ) - > E ^ ( x * y ) ; z : = (x , y ) - > f ( u (x , y ) , v (x , y ) ) ; diff ( z (x , y ) , x ) ; diff ( z (x , y ) , y ) ; Zadanie 166. Dana jest funkcja F : R2 → R2 , F(x, y) = ex cos(x), ex sin(x) . Wyznacz dla tej funkcji odwzorowanie pochodne D(F)(x, y) = F 0 (x, y). 1 2 3 with ( linalg ) : F : = [ E ^ x * cos ( y ) , E ^ x * sin ( y ) ]; jacobian (F , [x , y ]) ; Zadanie 167. Sprawdź, że funkcja dana jako 3 4x −3y2 , 2x2 +y2 0, gdy (x, y) 6= (0, 0), x = 0 lub y = 0, nie jest ciągła w punkcie (0, 0). 1 2 3 4 5 6 7 8 9 10 11 f : = (x , y ) - > if (( x = 0) and ( y = 0) ) then 0 else (4 * x ^ 3 -3 * y ^ 2) / (2 * x ^ 2 + y ^ 2) end : f (0 ,0) ; f (0 , dx ) ; f (x , y ) ; plot3d (f , -1 ..1 , -1 ..1 , grid = [30 ,30] , orientation = [130 ,50] , style = patchcontour , contours = 20) ; fx (0 ,0) = Limit (( 'f (h ,0) ' - 'f (0 ,0) ') /h , h = 0) ; ( f (h ,0) - f (0 ,0) ) / h ; fx (0 ,0) = limit (( f (h ,0) - f (0 ,0) ) /h , h = 0) ; fx : = diff ( f (x , y ) ,x ) : fx = simplify ( fx ) ; f (x ,0) ; f (0 , y ) ; Limit ( Limit ( f (x , y ) ,y = 0) ,x = 0) = limit ( limit ( f (x , y ) ,y = 0) ,x = 0) ; Limit ( Limit ( f (x , y ) ,x = 0) ,y = 0) = limit ( limit ( f (x , y ) ,x = 0) ,y = 0) ; 28 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 168. Policz pochodną funkcji danej w postaci uwikłanej x2 y − 3y3 x = 0 w punkcie (3, 1). 1 subs ({ y = 1 , x = 3} , implicitdiff ( x ^ 2 y -3 y ^ 3 x = 0 ,y , x ) ; Zadanie 169. Sprawdź czy funkcję daną jako Z y Zy cos(ωt2 + α) dt, t cos(ωt2 + α) dt F(x, y) = x Twierdzenie o funkcji uwikłanej. x można odwrócić w otoczeniu punktu (x, y) = (0, 0). 1 2 3 4 5 6 7 8 9 10 with ( plots ) ; with ( LinearAlgebra ) : F : = [ Int ( cos ( omega * t ^ 2 + alpha ) ,t = x..y ) , Int ( t * cos ( omega * t ^ 2 + alpha ) ,t = x..y ) ]; DF : = Matrix ([[ diff ( F [1] , x ) , diff ( F [1] , y ) ] , [ diff ( F [2] , x ) , diff ( F [2] , y ) ]]) ; DF0 : = subs ( omega = Pi , alpha = 0 , x = -1 , y = 1 , DF ) ; Determinant ( DF0 ) ; # P o n i e w a z w y z n a c z n i k j e s t n i e z e r o w y mozemy # f u n k c j e o d w r o c i c w o t o c z e n i u $ ( 0 , 0 ) $ j a k o $ x = g ( omega , a l p h a ) , y =h ( omega , a l p h a ) $ . x = g ( omega , alpha ) ; y = h ( omega , alpha ) ; Zadanie 170. Rozwiń w szeregi Taylora następujące funkcje w zadanych otoczeniach: Szeregi Taylora. (a) f(x) = e−x sin(x) w otoczeniu 0 do 5-tego miejsca, (b) f(x, y) = 2ex y − x2 sin(y) w otoczeniu (0, 0) do 7-ego miejsca. 1 taylor ( E ^ ( -x ) * sin ( x ) , x = 0 , 5) ; mtaylor (2 * E ^ x * y - x ^ 2 * sin ( y ) , [ x = 0 , y = 0] , 7) ; Zadanie 171. Rozwiń funkcję w szereg Taylora lub Laurenta w punkcie a i wypisz wyrazy rzędu co najwyżej n: 1 2 1 (a) ln(x), a = 1, n = 10. (c) cos 10 (x), a = (b) (d) ln(x2 + y2 + z2 ), a = (1, 1, 1), n = 5. 1 1−x , a = 0, n = 10. π 2, n = 5. taylor ( ln ( x ) ,x = 1 ,10) ; taylor (1 / (1 -x ) ,x = 0 ,10) ; series (( cos ( x ) ) ^ (1 / 10) ,x = Pi / 2 ,5) ; mtaylor ( ln ( x ^ 2 + y ^ 2 + z ^ 2) ,[ x = 1 , y = 1 , z = 1] ,5) ; Zadanie 172. Rozwiń funkcje w szereg Taylora, w podanym punkcie oraz narysuj wykres funkcji w podanym otoczeniu 2 (a) f(x) = e−x sin(x) + cos(x), x0 = 0, x ∈ [−3, 3] (Uwaga: wprowadź ograniczenia na osi OY), (b) g(x, y) = sin(x2 + y2 ), (x0 , y0 ) = (0, 0), x ∈ [−3, 3]2 . 1 2 3 4 f : = x - > convert ( taylor ( E ^ ( -x ^ 2) * sin ( x ) + cos ( x ) , x = 0 , 7) , polynom ) ; plot ( f ( x ) , x = -3 ..3 , y = -3 ..3 ) ; g : = (x , y ) - > convert ( mtaylor ( sin ( x ^ 2 + y ^ 2) , [ x = 0 , y = 0] ,7) , polynom ) ; plot3d ( g (x , y ) , x = -3 ..3 , y = -3 ..3 ) ; Zadanie 173. Znajdź ekstrema lokalne funkcji dwóch zmiennych z(x, y) = x3 + y3 − 9x. 1 2 3 4 5 6 7 8 Ekstrema lokalne. with ( linalg ) : f : = (x , y ) - > x ^ 3 + y ^ 3 -9 * x ; ans : = fsolve ({ diff ( f (x , y ) , x ) = 0 , diff ( f (x , y ) , y ) = 0} , {x , y }) ; A : = hessian ( f (x , y ) , [x , y ]) ; h : = diff ( f (x , y ) ,x , x ) ; plot3d ( f (x , y ) ,x = -4 ..4 , y = -4 ..4 ) ; assign ( ans ) ; det ( A ) ; subs ( x =x , h ) ; 29 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 174. Zbadaj ekstrema lokalne funkcji (a) f(x) = x3 − 4x − 3, 1 2 f : = x - > x ^ 3 - 4 * x - 3; ans : = solve ( diff ( f ( x ) , x ) = 0 , x ) ; ( D @ @ 2) ( f ) ( ans [1]) , ( D @ @ 2) ( f ) ( ans [2]) ; (b) f(x, y) = xy2 (a − x − y)3 , 1 2 3 4 5 with ( linalg ) : f : = (x , y ) - > x * y ^ 2 * ( a - x - y ) ^ 3; ans : = solve ({ diff ( f (x , y ) , x ) = 0 , diff ( f (x , y ) , y ) = 0} , {x , y }) ; subs ( ans [1] , diff ( f (x , y ) ,x , x ) ) ; A : = hessian ( f (x , y ) , [x , y ]) ; subs ( ans [1] , det ( A ) ) ; subs ( ans [2] , det ( A ) ) ; subs ( ans [3] , det (A)); (c) f(x, y) = (6 − x − y)x2 y3 , 1 2 3 4 f : = (x , y ) - > (6 - x - y ) * x ^ 2 * y ^ 3; ans : = solve ({ diff ( f (x , y ) , x ) = 0 , diff ( f (x , y ) , y ) = 0} , {x , y }) ; subs ( ans [1] , diff ( f (x , y ) ,x , x ) ) ; A : = hessian ( f (x , y ) , [x , y ]) ; subs ( ans [1] , det ( A ) ) ; subs ( ans [2] , det ( A ) ) ; subs ( ans [3] , det (A)); (d) f(x, y, z) = x2 − y3 + y2 − z4 − z2 + x + y + 6z, 1 2 3 4 f : = (x , y , z ) - > x ^ 2 - y ^ 3 + y ^ 2 - z ^ 4 - z ^ 2 + x + y + 6 * z ; ans : = solve ({ diff ( f (x , y , z ) , x ) = 0 , diff ( f (x , y , z ) , y ) = 0 , diff ( f (x , y , z ) , z ) = 0} , {x ,y , z }) ; subs ( ans [1] , diff ( f (x ,y , z ) ,x , x ) ) ; A : = hessian ( f (x ,y , z ) , [x ,y , z ]) ; subs ( ans [1] , det ( A ) ) ; subs ( ans [2] , det ( A ) ) ; subs ( ans [3] , det ( A ) ) ; subs ( ans [4] , det ( A ) ) ; Zadanie 175. Znajdź punkty krytyczne funkcji: f(x, y) = x3 + 3x2 − 9x + y3 − 12y + 8. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 z : = x ^ 3 + 3 * x ^ 2 - 9 * x + y ^ 3 - 12 * y + 8; zx : = diff (z , x ) ; zy : = diff (z , y ) ; CP : = solve ({ zx = 0 , zy = 0} ,{ x , y }) ; zxx : = diff ( zx , x ) ; zyy : = diff ( zy , y ) ; DD : = zxx * zyy - ( diff ( zx , y ) ) ^ 2; for i from 1 to nops ([ CP ]) do DD || i : = subs ( CP [ i ] , DD ) : if DD || i < 0 then p || i : = ` siodlo ` fi ; if DD || i > 0 then if subs ( CP [ i ] , zxx > 0) then p || i : = ` lokalne min `; elif subs ( CP [ i ] , zxx < 0) then p || i : = ` lokalne max `; fi ; fi ; ` At the point ` , CP [ i ] , `f (x , y ) has a ` ,p || i ; od ; with ( plots ) : plot3d (z , x = -4 ..5 , y = -4 ..4 , view = - 20 ..50 , axes = boxed , orientation = [ - 106 ,51] , style = patchcontour , shading = ZHUE ) ; Zadanie 176. Znajdź punkty krytyczne funkcji f(x, y) = x3 − 3x2 + y3 − 12y. 1 2 3 4 5 6 7 8 9 f : = x ^ 3 - 3 * x ^ 2 + y ^ 3 - 12 * y ; fx : = diff (f , x ) ; fy : = diff (f , y ) ; CPs : = [ solve ({ fx = 0 , fy = 0} ,{ x , y }) ]; fxx : = diff ( fx , x ) ; fxy : = diff ( fx , y ) ; fyy : = diff ( fy , y ) ; DD : = fxx * fyy - fxy ^ 2; seq ([ CPs [ k ] , subs ( CPs [ k ] , DD ) , subs ( CPs [ k ] , fxx ) ] , k = 1 ..4 ) ; # ( 0 , - 2 ) l o k a l n e max , ( 0 , 2 ) s i o d l o , ( 2 , - 2 ) s i o d l o , ( 2 , 2 ) l o k a l n e min plot3d (f , x = -1 ..3 , y = -2 .5..2.5 , axes = boxed , style = patchcontour , orientation = [112 ,66] , contours = 20 , shading = ZHUE ) ; 30 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 177. Znajdź ekstrema funkcji f(x, y) = x3 − 3x2 − y3 + 3y. 1 2 3 4 5 6 7 8 9 10 z := x^3 - 3*x^2 - y^3 + 3*y; with ( plots ) : plot3d (z , x = -5 ..5 , y = -5 ..5 , axes = boxed , style = patchcontour ) ; zx : = diff (z , x ) ; zy : = diff (z , y ) ; critpts : = solve ({ zx = 0 , zy = 0} ,{ x , y }) ; zxx : = diff ( zx , x ) ; zxy : = diff ( zx , y ) ; zyy : = diff ( zy , y ) ; disc : = zxx * zyy - zxy ^ 2; # L o k a l n e maksimum w ( x , y ) = ( 0 , 1 ) . for Point in critpts do Point ; subs ( op ( Point ) , disc ) ; subs ( op ( Point ) , zxx ) ; od ; # D o k l a d n i e j s z y widok plot3d (z , x = -1 ..3 , y = -2 ..2 , style = patchcontour , axes = boxed , orientation = [75 ,35] , shading = Z ) ; Zadanie 178. Wyznacz ekstrema warunkowe: (a) f(x, y) = x + y, przy x2 + y2 = 1. Ekstrema warunkowe. (b) f(x, y) = x2 + y2 , przy x 2 + y 3 = 1. Zaproponuj odpowiednie ilustracje do obu przykładów. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 restart ; with ( geometry ) : _EnvHorizontalName := x: _EnvVerticalName := y: f : = (x , y ) - > x + y ; g : = (x , y ) - > x ^ 2 + y ^ 2 - 1; Phi : = (x ,y , lambda ) - > f (x , y ) - lambda * g (x , y ) ; ans : = fsolve ({ diff ( Phi (x ,y , lambda ) , x ) = 0 , diff ( Phi (x ,y , lambda ) , y ) = 0 , diff ( Phi (x ,y , lambda ) , lambda ) = 0} , {x ,y , lambda }) ; ansP : = convert (% , radical ) ; # Tu j e s t t y l k o j e d e n p i e r w i a s t e k ! ! assign ( ansP ) ; [x ,y , f (x , y ) ]; p : = proc (x ,y , z ) g (x , y ) end proc : G : = plots [ implicitp lot3d ]( p , -3 ..3 , -3 ..3 , -3 ..3 , grid = [20 ,20 ,20]) : geom3d [ point ]( s ,[ x ,y , f (x , y ) ]) : geom3d [ sphere ]( r , [s , .1 ]) : F : = geom3d [ draw ]( r , color = red ) : t : = proc (x ,y , z ) f (x , y ) -z end proc : H : = plots [ implicitp lot3d ]( t , -3 ..3 , -3 ..3 , -3 ..3 ) : plots [ display ]({ F , G , H } , view = [ -2 ..2 , -2 ..2 , -2 ..2 ] , scaling = constrained , axes = boxed ) ; 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 restart ; with ( geometry ) : _EnvHorizontalName := x: _EnvVerticalName := y: f : = (x , y ) - > x ^ 2 + y ^ 2; g : = (x , y ) - > 1 - x / 2 - y / 3; Phi : = (x ,y , lambda ) - > f (x , y ) - lambda * g (x , y ) ; ans : = fsolve ({ diff ( Phi (x ,y , lambda ) , x ) = 0 , diff ( Phi (x ,y , lambda ) , y ) = 0 , diff ( Phi (x ,y , lambda ) , lambda ) = 0} , {x ,y , lambda }) ; assign ( ans ) ; [x ,y , f (x , y ) ]; geom3d [ point ]( s ,[ x ,y , f (x , y ) ]) : geom3d [ sphere ]( r , [s , .1 ]) : p : = proc (x ,y , z ) g (x , y ) end proc : G : = plots [ implicitp lot3d ]( p , -5 ..5 , -5 ..5 , -7 ..7 ) : F : = geom3d [ draw ]( r , color = red ) : t : = proc (x ,y , z ) f (x , y ) -z end proc : H : = plots [ implicitp lot3d ]( t , -5 ..5 , -2 ..4 , -7 ..7 , grid = [30 ,30 ,30]) : plots [ display ]({ F , G , H } , view = [ -5 ..5 , -2 ..4 , 0 ..7 ] , scaling = constrained , axes = boxed ) ; Zadanie 179. Wyznacz wartości najmniejsze i największe funkcji f(x, y) = x2 y na obszarze: x2 + y2 ¬ 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 restart ; f : = (x , y ) - > x ^ 2 * y ; g : = (x , y ) - > x ^ 2 + y ^ 3 - 1; Phi : = (x ,y , lambda ) - > f (x , y ) - lambda * g (x , y ) ; ann : = solve ({ diff ( Phi (x ,y , lambda ) , x ) = 0 , diff ( Phi (x ,y , lambda ) , y ) = 0 , diff ( Phi (x ,y , lambda ) , lambda ) = 0} , {x ,y , lambda }) ; ann [1] , convert ( ann [2] , radical ) ; assign ( ann [1]) ; [x ,y , f (x , y ) ]; geom3d [ point ]( s ,[ x ,y , f (x , y ) ]) : geom3d [ sphere ]( r , [s , .1 ]) : p : = proc (x ,y , z ) g (x , y ) end proc : G : = plots [ implicitp lot3d ]( p , -5 ..5 , -5 ..5 , -7 ..7 , grid = [30 ,30 ,30]) : F : = geom3d [ draw ]( r , color = red ) : t : = proc (x ,y , z ) f (x , y ) -z end proc : H : = plots [ implicitp lot3d ]( t , -5 ..5 , -2 ..4 , -7 ..7 , grid = [30 ,30 ,30]) : plots [ display ]({ F , G , H } , view = [ -5 ..5 , -2 ..4 , -2 ..4 ] , scaling = constrained , axes = boxed ) ; 31 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 180. Znajdź ekstremum funkcji f(x, y) = x2 − y2 przy warunku y = 2x − 6. 1 2 3 4 5 6 7 8 9 10 restart ; with ( plots ) : with ( plottools ) : f : = x ^ 2 - y ^ 2; g : = y - 2 * x + 6; L : = f + lambda * g ; # L a g r a n g i a n eqq : = { diff (L , x ) , diff (L , y ) , diff (L , lambda ) }; solve ( subs ( a = 2 , b = 3 , c = 10 , eqq ) , {x ,y , lambda }) ; display ([ plot3d ( x ^ 2 -y ^ 2 , x = -2 ..6 , y = -2 ..6 , style = patchcontour , shading = ZHUE , contours = 30) , cylinder ([4 ,2 ,4 ^ 2 -2 ^ 2 + 2] , 0 .2 , 0 .2 , color = magenta , style = patch ) , spacecurve ([ t ,2 * t -6 , t ^ 2 - (2 * t - 6) ^ 2 + 0 .1 ] , t = 2 ..6 , thickness = 4 , color = red , view = [ -2 ..6 , -2 ..6 , - 36 ..36 ]) ] , orientation = [ - 90 ,0] , axes = normal ) ; Zadanie 181. Znajdź prostopadłościan o największej objętości, którego suma wysokości i długości krawędzi podstawy nie przekracza 84. 1 2 3 4 5 6 7 V := x*y*z; g : = 2 * x + 2 * y + z - 84; L : = V + lambda * g ; Lx : = diff (L , x ) ; Ly : = diff (L , y ) ; Lz : = diff (L , z ) ; Ll : = diff (L , lambda ) ; solve ({ Lx = 0 , Ly = 0 , Lz = 0 , Ll = 0} , {x ,y ,z , lambda }) ; critpt : = [ x = 14 , y = 14 , z = 28]; Vmax : = subs ( critpt , V ) ; Zadanie 182. Znajdź najmniejszą i największą wartość funkcji f(x, y) = x3 − 12x + y3 − 6y2 . 1 2 3 4 5 6 7 8 9 10 11 12 13 z : = x ^ 3 - 12 * x + y ^ 3 - 6 * y ^ 2; zx : = diff (z , x ) ; zy : = diff (z , y ) ; critpts : = solve ({ zx = 0 , zy = 0} ,{ x , y }) ; zxx : = diff ( zx , x ) ; zyy : = diff ( zy , y ) ; zxy : = diff ( zx , y ) ; discr : = zxx * zyy - zxy ^ 2; for i to 4 do `D ( ` , critpts [ i ] , `) = ` , subs ( critpts [ i ] , discr ) ; od ; subs ( x = 2 , y = 4 , zxx ) ; subs ( x = -2 , y = 0 , zxx ) ; # W ( 2 , 4 ) j e s t l o k a l n e minimum a w ( - 2 , 0 ) j e s t l o k a l n e maksimum. with ( plots ) : plot3d (z , x = -4 ..4 , y = -2 ..6 , style = patchcontour , axes = boxed , orientation = [ - 53 ,40] , shading = ZHUE ) ; Zadanie 183. Znajdź najmniejszą i największą wartość funkcji f(x, y) = 4x + 3y na okręgu x2 + y2 = 100. 1 2 3 4 5 f := 4*x + 3*y; g : = x ^ 2 + y ^ 2 - 100; F : = f + lambda * g ; Fx : = diff (F , x ) ; Fy : = diff (F , y ) ; Fl : = diff (F , lambda ) ; solve ({ Fx = 0 , Fy = 0 , Fl = 0} ,{ x ,y , lambda }) ; Zadanie 184. Znajdź wartości największe i najmniejsze funkcji z = xy(x + y − 6) na obszarze ograniczonym trójkątem OPQ, gdzie O = (0, 0), P = (10, 0), Q = (0, 10). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 restart ; with ( plots ) : z : = x * y * ( x + y - 6) ; Or : = [0 ,0]; P : = [10 ,0]; Q : = [0 ,10]; plot3d (z , x = 0 ..10 , y = 0 ..10 , view = - 10 ..40 , orientation = [ - 81 ,75] , style = patchcontour , contours = 20) ; # Poniewaz f u n k c j a j e s t c i a g l a , a d z i e d z i n a j e s t zwarta , # w i e c f u n k c j a p r z y j m u j e s w o j e minimum i maksimum. W s r o d k u o b s z a r u mamy: zx : = diff (z , x ) ; zy : = diff (z , y ) ; zxx : = diff ( zx , x ) ; zxy : = diff ( zx , y ) ; zyy : = diff ( zy , y ) ; dis : = zxx * zyy - zxy ^ 2; CPs : = solve ({ zx = 0 , zy = 0} , {x , y }) ; # Zauwazmy , z e w z d l u z o s i w s p o l z e d n y c h f u n k c j a j e s t rowna z e r o , # wiec z o s t a j e t y l k o punkt wewnetrzny. CP : = op (4 ,[ CPs ]) ; [ op ( CP ) , 'z '= subs ( CP , z ) ]; # Na b r z e g u o b s z a r u : w z d l u z o s i j e s t row na z e r o . # P o z o s t a j e t y l k o o s t a t n i b o k - - e k s t r e m u m warunkowe w y l i c z y m y s t o s u j a c m n o z n i k i L a g r a n g e ’ a . g : = (x , y ) - > x + y - 10; L : = z + lambda * g (x , y ) ; sys : = [ diff (L , x ) = 0 , diff (L , y ) = 0 , diff (L , lambda ) = 0] : sys [1]; sys [2]; sys [3]; CCP : = solve ( convert ( sys , set ) , {x ,y , lambda }) ; 32 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 22 30 stycznia 2013 max_value = subs ( CCP , z ) ; Zadanie 185. Znajdź ekstrema funkcji f(x, y, z) = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 p x2 + y2 + z2 przy warunku xy + yz + zx = 12. with ( plots ) : f : = (x ,y , z ) - > sqrt ( x ^ 2 + y ^ 2 + z ^ 2) ; g : = (x ,y , z ) - > x * y + y * z + z * x - 12; # P o d e j s c i e b e z p o s r e d n i e ( p r z e z punkty k r y t y c z n e ) imp licitp lot3d ( g (x ,y , z ) = 0 , x = -6 ..6 , y = -6 ..6 , z = -6 ..6 , axes = boxed , orientation = [ - 25 ,76]) ; h : = unapply ( solve ( g (x ,y , z ) = 0 , z ) ,x , y ) ; F : = (x , y ) - > f (x ,y , h (x , y ) ) ; plot3d (F , -6 ..6 , -6 ..6 , view = 0 ..8 , style = patchcontour , shading = ZHUE , axes = boxed ) ; FF : = F (x , y ) ^ 2; FFx : = diff ( FF , x ) ; FFy : = diff ( FF , y ) ; sys : = ({ FFx = 0 , FFy = 0}) ; solve ( sys ,{ x , y }) ; fsolve ( sys ,{ x , y } , x = -5 ..5 , y = -5 ..5 ) ; FFxx : = diff ( FFx , x ) ; FFxy : = diff ( FFx , y ) ; FFyy : = diff ( FFy , y ) ; discr : = FFxx * FFyy - FFxy ^ 2; subs ({ x = 2 , y = 2} , discr ) ; subs ({ x = -2 , y = -2} , discr ) ; subs ({ x = 2 , y = 2} , FFxx ) ; subs ({ x = -2 , y = -2} , FFxx ) ; # Mnoznikami L a g r a n g e a L : = f (x ,y , z ) + lambda * g (x ,y , z ) ; Lx : = diff (L , x ) ; Ly : = diff (L , y ) ; Lz : = diff (L , z ) ; LL : = diff (L , lambda ) ; solve ({ Lx = 0 , Ly = 0 , Lz = 0 , LL = 0} ,{ x ,y ,z , lambda }) ; Zadanie 186. Wylicz punkty krytyczne funkcji f(x, y) = (y − x2 )(y − 2x2 ). 1 2 3 4 5 6 7 8 9 10 11 12 with ( plots ) : f : = (x , y ) - > ( y -x ^ 2) * ( y -2 * x ^ 2) ; z : = f (x , y ) ; zx : = diff (z , x ) ; zy : = diff (z , y ) ; zxx : = diff (z , x ) ; zxy : = diff (z , y ) ; zyy : = diff (z , y ) ; dis : = zxx * zyy - zxy ^ 2; subs ( x = 0 , y = 0 ,[ zxx , zxy , zyy , dis ]) ; q := 1: plot3d (f , - q..q , - q..q , style = patchcontour , contours = 30) ; Zadanie 187. Znajdź ekstremalne wartości funkcji f(x, y) = x3 + 3xy2 − 3x. 1 2 3 4 5 6 7 8 9 10 11 with ( plots ) : z : = x ^ 3 + 3 * x * y ^ 2 -3 * x ; zx : = diff (z , x ) ; zy : = diff (z , y ) ; CP : = solve ({ zx = 0 , zy = 0} ,{ x , y }) ; zxx : = diff ( zx , x ) ; zxy : = diff ( zx , y ) ; zyy : = diff ( zy , y ) ; disc : = zxx * zyy - zxy ^ 2; map ( q - > eval ([ op ( q ) , op ( subs (q ,[ Delta = disc , zxx ]) ) ]) , CP ) ; plot3d (z , x = -2 ..2 , y = -2 ..2 , shading = ZHUE , axes = FRAME , orientation = [ - 120 ,70] , style = patchcontour , contours = 40) ; Zadanie 188. Niech f : R3 → R3 będzie funkcją daną wzorem f(x, y, z) = (x2 , (x + y)z, z4 − xy). Znajdź jej miejsca zerowe oraz znajdź punkty krytyczne. 1 2 3 4 f : = (x , y , z ) - > [ x ^ 2 , ( x + y ) *z , z ^ 4 - x * y ]; with ( V ectorC alculu s ) : d : = Jacobian ( f (x ,y , z ) , [x ,y , z ]) ; solve ( det ( d ) = 0 , {x ,y , z }) ; RR p Zadanie 189. Oblicz a2 − x2 − y2 dxdy, gdzie D jest obszarem ograniczonym lemniskatą (x2 + y2 )2 = D 2 2 2 a (x − y ), x 0. Zilustruj obszar całkowania (przyjmując np. a = 1). 1 2 3 Całki i objętości. with ( plots ) : a : = 2; implicitplot (( x ^ 2 + y ^ 2) ^ 2 = a ^ 2 * ( x ^ 2 - y ^ 2) ,x = -2 ..2 , y = -2 ..2 , numpoints = 1000 , scaling = constrained ) ; 33 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 4 5 6 7 8 9 30 stycznia 2013 d : = solve (( x ^ 2 + y ^ 2) ^ 2 = a ^ 2 * ( x ^ 2 - y ^ 2) , y ) ; for i from 1 to 2 do plot ( d [ i ] , x = -2 ..2 ) ; end do ; int ( int (( a ^ 2 - x ^ 2 - y ^ 2) , y = 0 ..d [1]) , x = 0 ..2 ) + int ( int (( a ^ 2 - x ^ 2 - y ^ 2) ,y = d [2] ..0 ) ,x = 0 ..2 ) ; evalf (%) ; Zadanie 190. Oblicz objętość bryły ograniczonej walcami x2 + z2 = a2 i y2 + z2 = a2 . Zilustruj obszar całkowania (przyjmując np. a = 1). 1 2 3 4 5 6 7 restart ; eq1 : = x ^ 2 + z ^ 2 = a ^ 2; eq2 : = y ^ 2 + z ^ 2 = a ^ 2; a : = 1; az : = solve ( eq1 , z ) ; bz : = solve ( eq2 , z ) ; P : = plot3d ({ az [1] , az [2] , bz [1] , bz [2]} , x = -1 ..1 , y = -1 ..1 , scaling = constrained , view = [ -1 ..1 , -1 ..1 , -1 ..1 ] , axes = normal , transparency = 0 .5 ) : plots [ display ]({ P }) ; V : = 16 * int ( int ( int (1 , z = 0 ..sqrt ( a ^ 2 -y ^ 2) ) , y = -1 .. -x ) , x = 0 ..1 ) ; Zadanie 191. Znajdź objętość bryły ograniczonej powierzchniami z = 4, z = x2 + y2 . 1 2 3 4 z1 : = 4; z2 : = x ^ 2 + y ^ 2; plot3d ({ z1 , z2 } , x = -2 ..2 , y = -2 ..2 , orientation = [21 ,82] , axes = boxed , shading = ZHUE , style = patch ) ; int ( int ( int (1 , z = x ^ 2 + y ^ 2 ..4 ) , y = - sqrt (4 -x ^ 2) ..sqrt (4 -x ^ 2) ) , x = -2 ..2 ) ; Zadanie 192. Znajdź wartość średnią funkcji f(x, y) = xy(x + y − 6) w trójkącie {(x, y) ∈ R2 : 0 ¬ x ¬ 10, 0 ¬ y ¬ 10 − x}. 1 f_ave : = int ( int ( x * y * ( x + y - 6) ,y = 0 ..10 -x ) ,x = 0 ..10 ) / int ( int (1 , y = 0 ..10 -x ) ,x = 0 ..10 ) ; 6 Algebra There are grounds for cautious optimism that we may now be near the end of the search for the ultimate laws of nature. — Stephen W. Hawking, A Brief History of Time Zadanie √ √193. Czy następujące liczby zespolone leżą na jednym okręgu (na płaszczyźnie Gaussa): 3 + 4i, 2 + 2 2 + 17i, 5? 1 √ abs (3 + 4 * I ) , abs (2 + sqrt (21) * I ) , abs (2 * sqrt (2) + sqrt (17) * I ) , abs (5) ; Zadanie 194. Znajdź rozwiązania równania: x4 + 8x2 + 15 = 0. 1 21i, Rozwiązywanie równań. solve ( x ^ 4 + 8 * x ^ 2 + 15 = 0 , x ) ; Zadanie 195. Rozwiązać następujące układy równań: 3x2 + 2y2 = 2, 5x + 2y = 1, 2 2 2x − 2xy + y = 2, 6x + 7y = 8, 5x2 + 2y2 = 1, 2x2 − y2 = 2. a następnie obliczyć sumę wszystkich rozwiązań. 1 2 3 4 5 6 7 suma : = 0 : x : = 'x ': y : = 'y ': solve ({3 * x ^ 2 + 2 * y ^ 2 = 2 , 2 * x ^ 2 - 2 * x * y + y ^ 2 = 2} , {x , y }) : answer1 : = convert (% , radical ) ; assign ( answer1 ) ; suma : = suma + x + y ; x : = 'x ': y : = 'y ': answer2 : = solve ({5 * x + 2 * y = 1 , 6 * x + 7 * y = 8} , {x , y }) ; assign ( answer2 ) ; suma : = suma + x + y ; x : = 'x ': y : = 'y ': solve ({5 * x ^ 2 + 2 * y ^ 2 = 1 , 2 * x ^ 2 - y ^ 2 = 2} , {x , y }) : answer3 : = convert (% , radical ) ; assign ( answer3 ) ; suma : = suma + x + y ; 34 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 196. W zbiorze liczb całkowitych rozwiąż następujący układ: 2x + 3y = 18, −x + y = 1. 1 isolve ({2 * x + 3 * y = 18 , -x + y = 1} , {x , y }) ; Zadanie 197. Rozwiąż następujące równania w zbiorze liczb całkowitych: (a) 234x + 425y = 3, 1 (b) 234x + 423y = 1, (c) 234x + 423y = 9. isolve (234 * y + 425 * x = 3) ; isolve (234 * x + 423 * y = 1) ; isolve (234 * x + 423 * y = 9) ; Zadanie 198. Czy pierwiastki następującego wielomianu w(x) = x6 + x4 + x2 + 1 leżą na okręgu jednostkowym? 1 ans : = [ solve ( w ( x ) , x ) ]; seq ( abs ( ans [ i ]) , i = 1 ..nops ( ans ) ) ; Zadanie 199. Rozwiąż następujące układy równań: 3x + y = 1, x1 − 2x3 + x4 − x5 = 1, x − 4y + 2z = 7, 2x1 + 2x2 − x3 + 2x5 = −1, x + y + z = 4, −x1 + x2 + x3 − 2x4 + 3x5 = 2. 1 2 solve ({3 * x + y = 1 , x - 4 * y + 2 * z = 7 , x + y + z = 4} , {x ,y , z }) ; solve ({ x1 -2 * x3 + x4 - x5 = 1 ,2 * x1 + 2 * x2 - x3 + 2 * x5 = -1 , - x1 + x2 + x3 -2 * x4 + 3 * x5 = 2} , { x1 , x2 , x3 , x4 , x5 }) ; Zadanie 200. Wyznacz rozwiązania układów równań: (a) 1 2 x + 6y − z = 0 −x − 4y + 5z = 6 3x + 17y = 2 2x + 13y + 5z = 8 (b) x + 2y + z − u = 1 x − z + 2u = 2 solve ({ x + 6 * y -z = 0 , -x -4 * y + 5 * z = 6 ,3 * x + 17 * y = 2 ,2 * x + 13 * y + 5 * z = 8} , {x ,y , z }) ; solve ({ x + 2 * y + z -u = 1 , x -z + 2 * u = 2} , {x ,y , z.u }) ; Zadanie 201. Rozwiąż równania oraz układy równań (w zbiorze liczb całkowitych oraz zespolonych): (a) x3 + 2x2 + 2x + 1 = 0, x2 + x + y = 2 (b) , y2 + x = 3 x + 2y + 3z + 4t = 1 2x + 3y + 4z + t = 2 (d) 3x + 4y + z + 2t = 3 4x + y + 2z + 3t = 4 . (c) x5 + x4 + x3 + x2 + x + 1 = 0, 1 2 3 4 5 solve ( x ^ 3 + 2 * x ^ 2 + 2 * x + 1 = 0) ; isolve ( x ^ 3 + 2 * x ^ 2 + 2 * x + 1 = 0) ; solve ({ x ^ 2 + x + y = 2 , y ^ 2 + x = 3} , {x , y }) ; isolve ({ x ^ 2 + x + y = 2 , y ^ 2 + x = 3} , {x , y }) ; solve ( x ^ 5 + x ^ 4 + x ^ 3 + x ^ 2 + x + 1 = 0) ; isolve ( x ^ 5 + x ^ 4 + x ^ 3 + x ^ 2 + x + 1 = 0) ; solve ({ x + 2 * y + 3 * y + 4 * t = 1 , 2 * x + 3 * y + 4 * z + t = 2 , 3 * x + 4 * y + z + t * 2 = 3 , 4 * x + y + 2 * z + t * 3 = 4} , {x ,y ,z , t }) ; isolve ({ x + 2 * y + 3 * y + 4 * t = 1 , 2 * x + 3 * y + 4 * z + t = 2 , 3 * x + 4 * y + z + t * 2 = 3 , 4 * x + y + 2 * z + t * 3 = 4} , {x ,y ,z , t }) ; 35 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 202. Niech r1, . . . , r6 będą następującymi równaniami liniowymi z niewiadomymi x, y, z, t: r1 : r2 : r3 : r4 : r5 : r6 : x + y + z + t − 1 = 0, 2x − 3y + 2z − 4t − 5 = 0, x − y − 2 = 0, t − z + 1 = 0, − 4x + 11y − 4z + 14t + 13 = 0, 7x + 13y − 7z + 17t + 19 = 0. Rozwiąż układy u1 = {r1, r2}, u2 = {r3, r4}, u3 = {r1, r5, r6} ze względu na zmienne x, y, z, t. Zbadaj, które z nich są równoważne i jakie inkluzje zachodzą pomiędzy zbiorami ich rozwiązań. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 with ( linalg ) : r1 : = x + y + z + t - 1 = 0; r2 : = 2 * x - 3 * y + 2 * z - 4 * t - 5 = 0; r3 : = x - y - 2 = 0; r4 : = t - z + 1 = 0; r5 : = -4 * x + 11 * y - 4 * z + 14 * t + 13 = 0; r6 : = 7 * x + 13 * y - 7 * z + 17 * t + 19 = 0; w1 : = solve ({ r1 , r2 } , {x , y , z , t }) ; w2 : = solve ({ r3 , r4 } , {x , y , z , t }) ; w3 : = solve ({ r1 , r5 , r6 } , {x , y , z , t }) ; sys : = { r1 , r2 , r3 , r4 , r5 , r6 }; vars : = [x ,y ,z , t ]; (A , b ) : = LinearAlgebra [ G enerat eMatri x ]( sys , vars ) ; C : = LinearAlgebra [ Gene rateMa trix ]( sys , vars , augmented = true ) ; V : = delrows (C , 3 ..6 ) ; W : = submatrix (C , 3 ..4 , 1 ..linalg [ coldim ]( C ) ) ; Z : = delrows (C , 2 ..4 ) ; rank ( V ) , rank ( W ) , rank ( stackmatrix (V , W ) ) ; rank ( V ) , rank ( Z ) , rank ( stackmatrix (V , Z ) ) ; rank ( Z ) , rank ( W ) , rank ( stackmatrix (Z , W ) ) ; Zadanie 203. Rozwiąż następujące równania (układy), gdzie x, y, z oraz stała a należą do R: 2 2 2 2 (a) 48x5 + 8x4 − 6x3 + 114x2 − 37x + 18 = 0, z − x − y + 2ax + 2az − a 2 (d) yz − ay − ax + a (b) (x + 1)(x+a) = (x + 1)2 , −2a + x + y (c) 2 − sin(1 − x) = 2x, 1 2 3 4 =0 =0 =0 w : = 48 * x ^ 5 + 8 * x ^ 4 - 6 * x ^ 3 + 114 * x ^ 2 - 37 * x + 18 = 0; solve (w , x ) ; solve (( x + 1) ^ ( x + a ) = ( x + 1) ^ 2) ; solve (2 - sin (1 - x ) = 2 *x , x ) ; solve ({ z ^ 2 -x ^ 2 -y ^ 2 + 2 * a * x + 2 * a * z -a ^ 2 = 0 , y * z -a * y -a * x + a ^ 2 = 0 , -2 * a + x + y = 0} ,{ x ,y , z }) ; Zadanie 204. Rozwiąż układy równań. p W przykładzie (a), jeśli jest oznaczony, przypisz otrzymane rozwiązania pod zadeklarowane niewiadome i oblicz x44 + y55 + z66 . 3x + 3y − 3z − 3w = 7 4x + 5y − 6z = 3 x − y + 2z − w = 1 (a) y − 2z = −1 (c) 5x + y − 2z + w = 5 −7x + 3y − z + 2w = 0 (b) −x + 6y + 2z − w = 3 2x + 3y − 3z = 2 x + y − 2z + w = 1 2x + 2y − 2z − 2w = 5 1 2 3 4 5 x : = 'x ': y : = 'y ': z : = 'z ': w : = 'w ': ans : = solve ({4 * x + 5 * y - 6 * z = 3 , y - 2 * z = -1 , 2 * x + 3 * y - 3 * z = 2} , {x ,y , z }) ; assign ( ans ) ; sqrt ( x ^ 44 + y ^ 55 + z ^ 66) ; x : = 'x ': y : = 'y ': z : = 'z ': solve ({3 * x + 3 * y -3 * z -3 * w = 7 , -7 * x + 3 * y -z + 2 * w = 0 , -x + 6 * y + 2 * z -w = 3 ,2 * x + 2 * y -2 * z -2 * w = 5} ,{ x ,y ,z , w }) ; solve ({ x -y + 2 * z -w = 1 ,5 * x + y -2 * z + w = 5 , x + y -2 * z + w = 1} , {x ,y ,z , w }) ; Zadanie 205. Korzystając z polecenia linsolve rozwiąż następujące równania macierzowe: 1 6 3 4 3 6 3 1 2 (a) ·X= , −1 −2 5 1 −2 (b) X · = 2 4 . 2 8 5 −3 36 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 30 stycznia 2013 with ( linalg ) : A : = matrix (2 ,3 ,[1 ,6 ,3 , -1 , - 2 ,5]) : B : = matrix (2 ,2 ,[4 ,3 ,1 , - 2]) : linsolve (A , B ) ; A : = transpose ( matrix (2 ,2 ,[1 ,2 ,2 ,8]) ) : B : = transpose ( matrix (3 ,2 ,[6 ,3 ,2 ,4 ,5 , - 3]) ) : transpose ( linsolve (A , B ) ) ; Zadanie 206. Rozwiąż równanie rekurencyjne f(n) = f(n − 1) + 2f(n − 2) z warunkami f(0) = 1, f(1) = 1. 1 2 eq : = f ( n ) = f ( n - 1) + 2 * f ( n - 2) ; rsolve ({ eq , f (0) = 1 , f (1) = 1} , f ( n ) ) ; 1 0 2 −3 2 Zadanie 207. Niech A = 2 −1 3 oraz B = 0 1. Znajdź macierze A−1 , AAT , BT AB, (2A + BBT )AT 4 1 8 7 4 oraz wyznaczniki macierzy A, A−1 , AAT . 1 2 3 4 5 A : = matrix (3 ,3 , [[1 , 0 , 2] , [2 , -1 , 3] , [4 , 1 , 8]]) ; B : = matrix (3 ,2 , [[ -3 , 2] , [0 , 1] , [7 , 4]]) ; inverse ( A ) , evalm ( A & * transpose ( A ) ) ; evalm ( transpose ( B ) & * A & * B ) , evalm ((2 * A + B & * transpose ( B ) ) & * transpose ( A ) ) ; det ( A ) , det ( inverse ( A ) ) , det ( A & * transpose ( A ) ) ; Zadanie 208. Oblicz 1 2 1 2 0 · 5 −4 + 10 −1 0 3 −1 −1 0 1 2 3 4 5 Macierze. 10 2 13 5 . with ( linalg ) : A : = matrix (2 ,3 ,[[1 , 2 , 3] ,[ - 1 ,0 ,3]]) ; B : = matrix (3 ,2 ,[[1 ,2] ,[5 , - 4] ,[ - 1 ,0]]) ; C : = matrix (2 ,2 ,[[10 ,2] ,[ - 1 ,13]]) ; evalm (( evalm ( A & * B ) + evalm ( C & ^ 10) ) & ^ 5) ; Zadanie 209. Niech a, b ∈ R, rozważmy macierz A = A(a,b) 0 a 1 0 := 0 1 b 0 0 b 0 b b 0 0 1 1 0 0 0 1 0 b 0 1 (a) Dla jakich wartości a, b macierz A jest osobliwa? (b) Znajdź odwrotność macierzy A dla pozostałych wartości a, b. 1 2 3 matA : = (a , b ) - > matrix (5 ,5 , [[0 , a ,1 ,0 , b ] , [1 ,0 ,0 , b ,0] , [0 ,1 , b ,0 ,1] , [b ,0 ,0 ,1 ,0] , [0 ,b ,1 ,0 ,0]]) ; solve ( det ( matA (a , b ) ) = 0 , {a , b }) ; inverse ( matA (a , b ) ) ; Zadanie 210. Oblicz wyznacznik macierzy: 1 −1 2 −1 1 2 3 4 2 0 3 10 3 −4 , 2 2 2 2 −3 4 11 −2 −11 0 2 2 −1 21 12 1 −1 0 20 3 11 0 23 −14 1 12 2 34 0 0 . −3 −3 4 11 8 −5 14 1 1 −1 0 1 K : = matrix (4 ,4 ,[[1 ,2 ,0 ,3] ,[ - 1 ,10 ,3 , - 4] ,[2 ,2 ,2 ,2] ,[ -1 ,2 , - 3 ,4]]) ; det ( K ) ; L : = matrix (6 ,6 ,[[11 , - 2 ,20 ,3 ,11 ,0] ,[ - 11 ,0 ,23 , - 14 ,1 ,12] ,[2 ,2 ,2 ,34 ,0 ,0] ,[ - 1 ,21 , -3 , 3 ,4 ,11] ,[12 ,1 ,8 , - 5 ,14 ,1] ,[ - 1 ,0 ,1 , - 1 ,0 ,1]]) ; det ( L ) ; 37 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 211. Znajdź wyznacznik, wielomian charakterystyczny, wartości i wektory własne macierzy 3 1 0 0 0 1 2 0 1 2 0 3 1 0 0 3 0 0 0 −1 10 3 , 0 1 0 , 0 3 0 , 0 1 2 4 0 . 2 2 2 0 3 1 0 1 2 0 0 1 4 0 0 0 0 4 1 Obliczenia wykonaj w ciele liczb rzeczywistych oraz w ciele liczb zespolonych. 1 2 3 4 5 6 7 8 9 10 11 M : = matrix (3 ,3 ,[[1 ,2 ,0] ,[ - 1 ,10 ,3] ,[2 ,2 ,2]]) ; N : = matrix (3 ,3 ,[[1 ,2 ,0] ,[0 ,1 ,0] ,[0 ,3 ,1]]) ; P : = matrix (3 ,3 ,[[3 ,1 ,0] ,[0 ,3 ,0] ,[0 ,1 ,2]]) ; R : = matrix (5 ,5 ,[[3 ,1 ,0 ,0 ,0] ,[0 ,3 ,0 ,0 ,0] ,[0 ,1 ,2 ,4 ,0] ,[0 ,0 ,1 ,4 ,0] ,[0 ,0 ,0 ,4 ,1]]) ; L : = [N ,M ,R , P ]; for i to nops ( L ) do eigenvectors ( L [ i ]) ; eigenvalues ( L [ i ]) ; det ( L [ i ]) ; charpoly ( L [ i ]) ; end do ; Zadanie 212. Niech będzie dana macierz 1 A = 4 7 3 6 . 9 2 5 8 Znajdź jej wartości własne, wektory własne oraz jej postać Jordana. Wykonaj ten rozkład bez ładowania całego pakietu linalg. 1 2 3 4 5 with ( linalg ) : #A : = m a t r i x ( 3 , 3 , [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] ) ; A : = matrix (3 ,3 ,[ seq (i , i = 1 ..9 ) ]]) ; eigenvalues ( A ) ; eigenvectors ( A ) ; jordan ( A ) ; restart ; linalg [ jordan ]( A ) ; Zadanie 213. Dana jest macierz 3 7 2 A= 13 3 21 4 4 5 6 7 6 10 16 24 5 7 9 11 (a) Oblicz det(A). (b) Wyznacz wielomian charakterystyczny macierzy A i sprawdź, czy macierz A „spełnia” swój wielomian charakterystyczny (powinna na mocy twierdzenia Cayley’a-Hamiltona). (c) Znajdź wartości własne i wektory własne tej macierzy. (d) Wyznacz macierz Jordana J oraz macierz przejścia P dla macierzy A. Oblicz P−1 · J · P, oraz P · J · P−1 . 1 2 3 A : = matrix (4 ,4 ,[3 ,4 ,5 ,6 ,7 / 2 ,5 ,7 ,10 ,13 / 3 ,6 ,9 ,16 ,21 / 4 ,7 ,11 ,24]) ; f : = lambda - > charpoly (A , lambda ) ; evalm ( f ( A ) ) ; det ( A ) ; eigenvalues ( A ) ; eigenvectors ( A ) ; jordan ( A ) ; Zadanie 214. Niech A będzie macierzą nad Q zadaną poniżej 2 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 3 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 38 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Oblicz wielomian charakterystyczny, wielomian minimalny, wartości własne A, a także bazy przestrzeni wektorów własnych dla poszczególnych wartości własnych macierzy A (wprost z definicji !!!). Sprawdź, że A spełnia twierdzenie Cayley’a-Hamiltona, oraz, że A ”zeruje” wielomian minimalny. 1 2 3 4 5 6 7 8 9 10 11 with ( linalg ) : A1 : = transpose ( linalg [ JordanBlock ](2 ,4) ) ; A2 : = linalg [ JordanBlock ](3 ,4) ; A3 : = transpose ( linalg [ JordanBlock ](1 ,3) ) ; A : = diag ( A1 , A2 , A3 ) ; charpoly (A , lambda ) ; minpoly (A , lambda ) ; eigV : = eigenvals ( A ) ; eigenvectors ( A ) ; n : = rowdim ( A ) ; for lam in eigV do kernel ( A - lam * array ( identity ,1 ..n ,1 ..n ) ) ; end do ; f : = lambda - > minpoly (A , lambda ) ; evalm ( f ( A ) ) Zadanie 215. Oblicz wielomian charakterystyczny, wielomian minimalny, wartości własne oraz odpowiadające im podprzestrzenie wektorów własnych endomorfizmu liniowego zespolonej przestrzeni współrzędnych w siebie o następującej macierzy (w bazie wektorów jednostkowych): 0 1 0 ... 0 0 −1 0 1 . . . 0 0 0 −1 0 . . . 0 0 . .. . 0 0 0 ... 0 1 0 0 0 . . . −1 0 Sprawdź, że macierz spełnia twierdzenie Cayley’a-Hamiltona. 1 2 3 4 5 6 7 8 k : = 5; B : = n - > matrix (n ,n ,[ seq ( seq ( ` if `( j = i + 1 , 1 , ` if `( j = i -1 , - 1 ,0) ) , j = 1 ..n ) , i = 1 ..n ) ]) : f : = lambda - > charpoly ( B ( k ) , lambda ) ; minpoly ( B ( k ) , lambda ) ; eigV : = eigenvalues ( B ( k ) ) ; eigenvectors ( B ( k ) ) ; for lam in eigV do kernel ( B ( k ) - lam * array ( identity ,1 ..k ,1 ..k ) ) ; end do ; f ( lambda ) ; A : = B ( k ) : evalm ( f ( A ) ) ; Zadanie 216. Zdefiniuj 20 × 20 macierz A = (Ai,j ) taką, że Ai,j = i + j − 5 oraz oblicz jej wyznacznik. 1 Z : = matrix (20 ,20 ,( i , j ) - >i + j - 5) ; det ( Z ) ; Zadanie 217. Napisz procedurę, która dla n ∈ N: (a) definiuje n × n macierz An w następujący sposób 0, An (i, j) := 1, 1 2 3 4 5 6 7 i = j, i 6= j; (b) oblicza: (a) wyznacznik An , (b) wielomian charakterystyczny An , (c) wartości i wektory własne An . with ( linalg ) : dwm : = proc ( n ) local A ; A : = n - > evalm ( matrix (n ,n ,[ seq (1 , i = 1 ..n ^ 2) ]) - diag ( seq (1 , i = 1 ..n ) ) ) ; print ( A ( n ) , det ( A ( n ) ) ) ; return det ( A ( n ) ) , charpoly ( A ( n ) , lambda ) , eigenvalues ( A ( n ) ) , eigenvectors ( A ( n ) ) ; end proc ; 39 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 √ 6− 2 √ 4√ 6+ 2 4 √ Zadanie 218. Dane są macierze A = √ ! 6+ 2 √4 √ , 2 − 6− 4 √ √ 6+ 2 √ 4√ 6− 2 4 √ B = √ ! 6− 2 4√ 6+ 2 4 √ −√ oraz C = 1 2 1 −1 . 4 Sprawdź czy są to macierze ortogonalne. Jeśli tak, znajdź odpowiednio kąty obrotu lub proste odbicia. 1 2 3 4 5 A : = matrix (2 ,2 ,[( sqrt (6) - sqrt (2) ) / 4 ,( sqrt (6) + sqrt (2) ) / 4 ,( sqrt (6) + sqrt (2) ) / 4 , -( sqrt (6) - sqrt (2) ) / 4]) ; simplify ( evalm ( A & * transpose ( A ) ) ) ; simplify ( evalm ( transpose ( A ) & * A ) ) ; B : = matrix (2 ,2 ,[( sqrt (6) + sqrt (2) ) / 4 , -( sqrt (6) - sqrt (2) ) / 4 ,( sqrt (6) - sqrt (2) ) / 4 ,( sqrt (6) + sqrt (2) ) / 4]) ; simplify ( evalm ( B & * transpose ( B ) ) ) , simplify ( evalm ( transpose ( B ) & * B ) ) ; C : = matrix (2 ,2 ,[1 / 2 , - 1 ,1 ,4]) ; simplify ( evalm ( C & * transpose ( C ) ) ) ; simplify ( evalm ( transpose ( C ) & * C ) ) ; Zadanie 219. Dla dowolnie wygenerowanych przez siebie macierzy A, B ∈ M3×3 (R) wyznacz: (a) (A − B)2 · (AT · B + Id)T , gdzie Id oznacza macierz jednostkową 3 × 3, (b) [A, B] := A · B − B · A (tzw. komutator macierzy A, B), (c) (A−1 · B)−2 (o ile wykonalne). 1 2 3 4 5 6 7 8 9 # r o l l := rand ( 1 . . 1 0 ) : #A : = m a t r i x ( 3 , 3 , [ s e q ( r o l l ( ) , i = 1 . . 9 ) ] ) ; #B : = m a t r i x ( 3 , 3 , [ s e q ( r o l l ( ) , i = 1 . . 9 ) ] ) ; with ( linalg ) : A : = randmatrix (3 ,3) ; B : = randmatrix (3 ,3) ; evalm (( A - B ) & ^ 2 & * transpose ( transpose ( A ) & * B + 1) ) ; kom : = evalm ( A & * B - B & * A ) ; inverse ( inverse ( A ) & * B ) ; Zadanie 220. Dla dowolnie wygenerowanej przez siebie macierzy A ∈ M4×4 (R) wyznacz macierz (a) B, która ma te same kolumny co macierz A, lecz w odwrotnym porządku; (b) C = (ci,j )i,j , gdzie ci,j = a2i,j dla i, j = 1, . . . , 4. 1 2 3 4 5 6 7 8 9 10 odwrot : = proc ( A ) local B , n , i ; B := A; n : = coldim ( A ) ; for i from 1 to floor ( n / 2) do B : = swapcol (B , i , n - i + 1) ; end do ; print ( B ) ; end proc ; C : = matrix (4 ,4 ,[ seq ( seq ( A [i , j ] ^ 2 , j = 1 ..4 ) ,i = 1 ..4 ) ]) ; Zadanie 221. Skonstruuj poniższą macierz nie wypisując po kolei jej elementów: 1 1 1 1 2 4 8 16 X= 3 9 27 81 4 16 64 256 Wykonaj na niej eliminację Gaussa. 1 2 3 with ( linalg ) : X : = matrix (4 ,4 ,[ seq ( seq ( i ^j , j = 1 ..4 ) ,i = 1 ..4 ) ]) ; gausselim ( X ) ; Zadanie 222. Zdefiniuj funkcję E(·), która dla danego n ∈ N \ {0} generowała będzie macierz E(n), według takiego wzoru, że powyższa macierz X = E(4). Dla tak zdefiniowanej funkcji wyznacz (jako funkcję) wielomian charakterystyczny. 1 2 3 with ( linalg ) : E : = n - > matrix (n ,n ,[ seq ( seq ( i ^j , j = 1 ..n ) , i = 1 ..n ) ]) ; wielch : = n - > charpoly ( E ( n ) , lambda ) ; 40 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 223. Zdefiniuj funkcję K(·), która dla danego n ∈ N generowała będzie macierz K(n), w której element na przecięciu i-tego wiersza i j-tej kolumny będzie miał wartość i · j. Zdefiniuj funkcję przyporządkowującą trójce (n, m, p) ∈ (N \ {0})3 p-tą pochodną wielomianu charakterystycznego macierzy K(n)m . 1 2 K : = n - > matrix (n ,n ,[ seq ( seq ( i *j , j = 1 ..n ) , i = 1 ..n ) ]) ; pwch : = (n ,m , p ) - > diff ( charpoly ( K ( n ) , lambda ) ^m , lambda$p ) ; Zadanie 224. Skonstruuj następujące macierze nie wpisując po kolei elementów 1 2−x 1 3−x 1 4−x 1 5−x A= 1 3−x 1 4−x 1 5−x 1 6−x 1 4−x 1 5−x 1 6−x 1 7−x 1 5−x 1 6−x , 1 7−x 1 8−x 1−x 0 0 1 − 2x + 12 x2 B= 0 0 0 0 0 0 1 − 3x + 32 x2 − 16 x3 0 0 0 0 2 1 − 4x + 3x − 23 x3 + 1 4 24 x . Wskazówka: Na przekątnej znajdują się kolejne wielomiany Laguerre’a. 1 2 with ( LinearAlgebra ) : HilbertMatrix (3 , 5 , x ) ; with ( orthopoly ) : B : = diag ( seq ( L (i , x ) , i = 1 ..4 ) ) ; Zadanie 225. Korzystając z poleceń Maple z pakietu linalg wykonaj poniższe polecenia: (a) Utwórz macierze 1 A= 1 1 12 3 1 4 1 2 1 3 1 4 1 5 1 3 1 4 1 5 1 6 1 4 1 5 , 1 6 1 7 2 3 B= 4 5 3 4 5 6 4 5 6 7 5 6 , 7 8 (na dwa sposoby: wypisując elementy i bez wypisywania); (b) Oblicz A + B, AB, BAT , A−1 , A2 , 2B; (c) Oblicz wyznacznik i rząd macierzy A; (d) Znajdź wielomian charakterystyczny, wartości własne i wektory własne macierzy B oraz podaj postać Jordana tej macierzy; (e) Utwórz macierz C, której pierwsze dwie kolumny są pierwszymi dwiema kolumnami macierzy A, zaś dwie następne – pierwszymi dwiema kolumnami macierzy B; (f) Usuń z macierzy C trzeci wiersz; (g) Dodaj do macierzy C wiersz [1, 1, 1, 1] między wiersze drugi i trzeci. 1 2 3 4 5 6 7 8 A : = matrix (4 ,4 ,[ seq ( seq (1 / ( i + j - 1) , j = 1 ..4 ) , i = 1 ..4 ) ]) ; B : = matrix (4 ,4 ,[ seq ( seq ( i +j , j = 1 ..4 ) , i = 1 ..4 ) ]) ; evalm ( A + B ) ; evalm ( A & * B ) ; evalm ( B & * transpose ( A ) ) ; inverse ( A ) ; evalm ( A & ^ 2) ; evalm (2 * B ) ; det ( A ) ; rank ( A ) ; charpoly (B , lambda ) ; eigenvalues ( B ) ; eigenvectors ( B ) ; jordan ( B ) ; C1 : = col (A , 1 ..2 ) ; C2 : = col (B , 1 ..2 ) ; C : = concat ( C1 , C2 ) ; delrows (C , 3 ..3 ) ; stackmatrix ( row (C ,1 ..2 ) ,[1 ,1 ,1 ,1] , row (C ,3 ..4 ) ) ; Zadanie 226. Dane są macierze: 1 A= 2 2 4 3 6 4 , 8 1 4 B= 3 8 2 2 . 6 4 Oblicz AB, BA, AAT BT . 1 2 3 A : = matrix (2 ,4 ,[1 ,2 ,3 ,4 ,2 ,4 ,6 ,8]) ; B : = matrix (4 ,2 ,[1 ,2 ,4 ,2 ,3 ,6 ,8 ,4]) ; evalm ( A & * B ) ; evalm ( B & * A ) ; evalm ( A & * transpose ( A ) & * transpose ( B ) ) ; 41 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 227. Oblicz wyznaczniki następujących macierzy stopnia n: x y 0 ... 1 2 2 ... 2 2 0 x y . . . 2 2 2 . . . 2 2 0 0 x . . . 2 2 3 . . . 2 2 , .. . .. . 0 0 0 . . . 2 2 2 . . . n − 1 2 y 0 0 ... 2 2 2 ... 2 n 0 0 0 x 0 0 0 0 , y x dla n = 15 oraz n = 16. 1 2 3 4 A : = n - > matrix (n ,n ,[ seq ( seq ( ` if `( i =j , i , 2) , j = 1 ..n ) , i = 1 ..n ) ]) : seq ( det ( A ( i ) ) , i = 2 ..16 ) ; seq ( -2 * ( i - 1) ! , i = 1 ..15 ) ; B : = n - > matrix (n ,n ,[ seq ( seq ( ` if ` (( j = i + 1) mod n , y , ` if `( i =j ,x ,0) ) , j = 1 ..n ) , i = 1 ..n ) ]) : det ( B (15) ) ; det ( B (16) ) ; Zadanie 228. Zbadaj istnienie macierzy odwrotnych do macierzy z poprzedniego zadania. Jeśli macierze odwrotne istnieją, znajdź je. 1 2 3 n : = 16; A ( n ) ; inverse ( A ( n ) ) ; B ( n ) ; inverse ( B ( n ) ) ; Zadanie 229. Wykonaj następujące polecenia: (a) Wygeneruj macierze C i M o wymiarach 3 × 3, (b) oblicz C + M, CM, C2 , (c) oblicz C−1 , (2C + MMT )CT , det(M), (d) zadaj 1 2 0 E = −1 1 1 , 0 1 0 (e) wyznacz wielomian charakterystyczny, sprowadź do macierzy schodkowej, wyznacz wektory i wartości własne, skonstruuj macierz 1 2 0 0 1 0 −1 1 1 przy pomocy macierzy E, przemnóż drugą kolumnę przez ln(2), (f) rozwiąż układ równań Fx = b, gdzie 1 F = 2 3 1 4 9 1 8 27 (nie wypisywać elementów po kolei!!), b = [2, 0, 1], (g) sprawdź czy podane macierze są ortogonalne A= cos(φ) sin(φ) , − sin(φ) cos(φ) a następnie podstawić φ = π/6, 1 B= 2 1 −1 . 4 42 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 30 stycznia 2013 with ( linalg ) : roll : = rand (1 ..10 ) : C : = matrix (3 ,3 ,[ seq ( roll () , i = 1 ..9 ) ]) ; M : = matrix (3 ,3 ,[ seq ( roll () , i = 1 ..9 ) ]) ; inverse ( C ) ; evalm ((2 * C + M & * transpose ( M ) ) & * transpose ( C ) ) ; det ( M ) ; E : = matrix (3 ,3 ,[1 ,2 ,0 , - 1 ,1 ,1 ,0 ,1 ,0]) ; charpoly (E , lambda ) ; gausselim ( E ) ; eigenvalues ( E ) ; eigenvectors ( E ) ; F : = swaprow (E , 2 ,3) ; mulcol (F , 2 , ln (2) ) ; b : = vector (3 , [2 ,0 ,1]) ; linsolve (F , b ) ; A : = matrix (2 ,2 ,[ cos ( phi ) , sin ( phi ) , - sin ( phi ) , cos ( phi ) ]) ; A & * transpose ( A ) ; transpose ( A ) & * A ; evalm (%) ; evalm (%%) ; simplify (%) ; simplify (%%) ; phi : = Pi / 6; B : = matrix (2 ,2 ,[1 / 2 , - 1 ,1 ,4]) ; B & * transpose ( B ) ; transpose ( B ) & * B ; evalm (%) ; evalm (%%) ; Zadanie 230. Stwórz macierz Toeplitza dla wektora [a, b, c, d]. 1 2 3 with ( LinearAlgebra ) : C : = <a ,b ,c , d >: evalm ( LinearAlgebra [ Toepli tzMatr ix ]( C , 4 , symmetric ) ) ; Zadanie 231. Policz wartości osobliwe losowej macierzy. 1 2 A : = linalg [ randmatrix ](5 ,5) ; evalf ( Svd ( A ) ) ; Zadanie 232. Policz pseudoodwrotność macierzy 1 B = 4 7 2 5 8 3 6 9 i sprawdź czy BCB = C oraz CBC = B, gdzie C to macierz pseudoodwrotna. 1 2 3 4 B : = matrix (3 ,3 ,[1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9]) ; det ( B ) ; C : = LinearAlgebra [ MatrixInverse ]( Matrix ( B ) , method = pseudo ) ; evalm ( B & * C & * B ) ; evalm ( C & * B & * C ) ; Zadanie 233. Niech A oznacza macierz sąsiedztwa grafu G. Macierz An (n-ta potęga macierzy A) ma następującą interpretację: ai,j oznacza liczbę ścieżek długości n z wierzchołka i do wierzchołka j. Dla grafu jak poniżej znajdź ilość ścieżek z węzła 1 do węzła 6 długości 5. 2 1 2 3 4 5 3 4 5 1 Teoria grafów. 6 with ( linalg ) : # Macierz sasiedztwa A : = matrix (6 ,6 ,[[0 , 1 , 0 , 0 , 1 , 0] , [1 , 0 , 1 , 0 , 1 , 0] , [0 , 1 , 0 , 1 , 0 , 0] , [0 , 0 , 1 , 0 , 1 , 1] , [1 , 1 , 0 , 1 , 0 , 0] , [0 , 0 , 0 , 1 , 0 , 0]]) ; B : = evalm ( A & ^ 5) ; B [1 ,6]; Zadanie 234. Dla grafów skierowanych macierz I − A (gdzie I oznacza macierz jednostkową) jest odwracalna wtedy i tylko wtedy, gdy graf G nie zawiera cykli. W takim przypadku (I − A)−1 ma następującą interpretację: ai,j oznacza liczbę wszystkich ścieżek z wierzchołka i do wierzchołka j (przy braku cykli ta liczba jest skończona). Dla grafu jak poniżej znajdź liczbę wszystkich ścieżek skierowanych z węzła 6 do węzła 2. Teoria grafów. 43 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 2 3 1 4 5 6 1 2 3 4 with ( linalg ) : A : = matrix (6 , 6 , [[0 , 0 , 0 , 0 , 0 , 0] , [0 , 0 , 0 , 0 , 0 , 0] , [0 , 0 , 0 , 0 , 0 , 0] , [1 , 1 , 1 , 0 , 0 , 0] , [0 , 0 , 0 , 1 , 0 , 0] , [0 , 0 , 0 , 0 , 1 , 0]]) ; T : = array (1 ..6 , 1 ..6 , identity ) ; inverse ( T - A ) ; Zadanie 235. Czy złożenie przekształceń g i h reprezentowanych przez macierze: cos(φ) sin(φ) 0 1 0 0 Mg = − sin(φ) cos(φ) 0 , Mh = 0 cos(φ) sin(φ) 0 0 1 0 − sin(φ) cos(φ) Geometria analityczna. jest przekształceniem ortogonalnym? 1 2 3 T : = matrix (2 ,2 ,[ cos ( phi ) , sin ( phi ) , - sin ( phi ) , cos ( phi ) ]) ; M [ g ] : = diag (T ,1) ; M [ h ] : = diag (1 , T ) ; evalm ( M [ g ] & * M [ h ]) ; evalm ( M [ h ] & * M [ g ]) ; Zadanie 236. Dana jest funkcja ROT : R3 → R2 określona wzorem cos(α) − sin(α) x ROT (α, x, y) := · sin(α) cos(α) y Sprawdź ortogonalność wektorów ROT 1 2 π 3 , 1, 1 oraz ROT 5π , 1, 0 . 6 ROT : = ( alpha ,x , y ) - > matrix (2 ,2 ,[ cos ( alpha ) , sin ( alpha ) , - sin ( alpha ) , cos ( alpha ) ]) & * vector (2 ,[ x , y ]) ; multiply ( ROT ( Pi / 3 ,1 ,1) , ROT (5 * Pi / 6 ,1 ,0) ) ; Zadanie 237. Zdefiniuj wektory a = [1, 2, 3], b = [2, 3, 4]. Oblicz iloczyn skalarny i iloczyn wektorowy tych wektorów oraz wyznacz kąt między nimi. 1 2 3 with ( linalg ) : v : = vector (3 ,[1 ,2 ,3]) ; w : = vector (3 ,[2 ,3 ,4]) ; z : = dotprod (v , w ) ; angle (v , w ) ; Zadanie 238. Wykonaj polecenia (a) Zadaj wektory Q = [1, 2, 3], P = [4, 5, 6], (b) znajdź sumę, iloczyn skalarny, iloczyn wektorowy oraz kąt pomiędzy wektorami Q i P, (c) unormuj i znajdź długość Q oraz przemnóż wektor P przez 3. 1 2 3 4 with ( linalg ) : Q : = vector (3 ,[1 ,2 ,3]) ; P : = vector (3 ,[4 ,5 ,6]) ; Q + P ; innerprod (Q , P ) ; crossprod (P , Q ) ; angle (P , Q ) ; normalize ( Q ) ; norm (Q , 2) ; scalarmul (P ,3) ; 44 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 239. Wygeneruj dwa wektory v1 , v2 ∈ R25 (mogą być w postaci list), a następnie oblicz (a) iloczyn skalarny wektorów v1 , v2 , (b) długości wektorów v1 , v2 , (c) kąt między tymi wektorami (w stopniach i radianach). 1 2 3 4 5 roll : = rand (1 ..20 ) : with ( linalg ) : v1 : = [ seq ( roll () , i = 1 ..25 ) ] : w1 : = [ seq ( roll () , i = 1 ..25 ) ] : v : = vector (25 , v1 ) ; w : = vector (25 , w1 ) ; norm ( array ( v1 ) ,2) , norm ( array ( w1 ) ,2) ; angle (v , w ) ; convert (% , units , radian , degree ) ; innerprod (v , w ) ; Zadanie 240. W przestrzeni funkcji całkowalnych z kwadratem z iloczynem skalarnym danym przez całkę Q(p, q) = Z1 p 1 − t2 p(t)q(t) dt −1 z bazy {u1 = 1, u2 = t, u3 = t2 } utwórz bazę ortonormalną. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 with ( linalg ) : u1 : = 1; u2 : = t ; u3 : = t ^ 2; Q : = (p , q ) - > int ( sqrt (1 -t ^ 2) * p *q , t = -1 ..1 ) ; QQ : = p - > sqrt ( Q (p , p ) ) ; # norma # Macierz iloczynow skalarnych matrix ([ seq ([ seq ( Q ( u || i , u || j ) ,j = 1 ..3 ) ] , i = 1 ..3 ) ]) ; nq : = map ( QQ ,[ seq ( u || j , j = 1 ..3 ) ]) ; # Katy pomiedzy p o s z c z e g o l n y m i wektorami aa : = (i , j ) - > arccos ( Q ( u || i , u || j ) / nq [ i ] / nq [ j ]) ; aa (1 ,2) ; aa (1 ,3) ; aa (2 ,3) ; # O r t o n o r m a l i z a c j a Grama - S c h m i d t a w1 : = u1 / nq [1]; ww2 : = u2 - Q ( w1 , u2 ) * w1 ; w2 : = ww2 / QQ ( ww2 ) ; ww3 : = u3 - Q ( w1 , u3 ) * w1 - Q ( w2 , u3 ) * w2 ; w3 : = ww3 / QQ ( ww3 ) ; matrix ([ seq ([ seq ( Q ( w || i , w || j ) ,j = 1 ..3 ) ] , i = 1 ..3 ) ]) ; # Porownajmy bazy plot ([ u1 , u2 , u3 ] , t = -1 ..1 , thickness = 2 , color = blue ) ; plot ([ w1 , w2 , w3 ] , t = -1 ..1 , thickness = 2 , color = red ) ; Zadanie 241. Podaj wszystkie elementy, które nie są odwracalne w pierścieniu Z356 . 1 Pierścienie. { seq ( ` if `( igcd (i ,356) < > 1 , i ,0) ,i = 1 ..356 ) } minus {0}; Zadanie 242. Znajdź wszystkie elementy odwracalne w pierścieniu Z26 . 1 { seq ( ` if `( igcd (i ,26) = 1 , i ,0) ,i = 1 ..356 ) } minus {0}; Zadanie 243. Znajdź wszystkie elementy odwracalne (oraz ich odwrotności) w pierścieniu Z18 . 1 { seq ( ` if `( igcd (i ,18) = 1 , [i , i ^ ( - 1) mod 18] ,0) ,i = 1 ..17 ) } minus {0}; Zadanie 244. Rozwiąż następujące równania w pierścieniach Zn (o ile są poprawnie zdefiniowane, jeśli nie wskaż dlaczego): (a) x2 − 5x = 6, dla n = 6, 1 (b) 1 6x = 3, dla n = 7, (c) x2 + x 8 = 0, dla n = 12. msolve ( x ^ 2 - 5 * x = 6 , 6) ; msolve (1 / 6 * x = 3 , 7) ; msolve ( x ^ 2 + x / 8 = 0 , 12) ; Zadanie 245. Rozwiąż równanie 3x2 − 4x + 1 = 0 45 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 30 stycznia 2013 (a) w ciele liczb rzeczywistych, (c) w pierścieniu Z8 , (b) w pierścieniu Z6 , (d) w ciele Z19 . rown : = 3 * x ^ 2 - 4 * x + 1 = 0 : solve ( row , x ) ; msolve ( rown , 6) ; msolve ( rown , 8) ; msolve ( rown , 19) ; Zadanie 246. Które z podanych wielomianów w Z5 [x] definiują te same funkcje wielomianowe: x + 1, 1 2 3 x5 + 1, x6 + x5 + 4x2 + 1, Wielomiany. 3x3 + 2x2 + x + 1? f : = x - > x + 1 mod 5; g : = x - > x ^ 5 + 1 mod 5; h : = x - > x ^ 6 + x ^ 5 + 4 * x ^ 2 + 1 mod 5; k : = x - > 3 * x ^ 3 + 2 * x ^ 2 + x + 1 mod 5; for x from 0 to 4 do f ( x ) , g ( x ) , h ( x ) , k ( x ) end do ; Zadanie 247. Znajdź trzy różne wielomiany w Z3 [x] (w Z7 [x], odpowiednio), które definiują tą samą funkcję wielomianową. 1 x + 1 , x ^ 7 + 1 , x ^ 13 + 1; Zadanie 248. Wykonaj następujące polecenia: (a) w pierścieniu Z5 [X] sprawdź podzielność wielomianów x4 + 4x3 + 2x2 + 3x + 4 przez x3 + x2 + 2x + 2, gdy nie są podzielne to wyznacz resztę, (b) wygenerować pewien wielomian, a następnie podaj jego stopień, wypisz współczynnik przy x3 , wypisz wszystkie współczynniki: dwoma sposobami (w drugim wykorzystać pakiet PolynomialTools, przedstaw ten wielomian w postaci Hornera. 1 2 3 4 5 6 7 8 9 p := x^4 + 4*x^3 + 2*x^2 + 3*x + 4: q := x^3 + x^2 + 2*x + 2: Divide (p , q ) mod 5; Rem (p ,q , x ) mod 5; roll : = rand (1 ..20 ) : q : = linalg [ innerprod ]([ seq ( roll () , i = 1 ..4 ) ] ,[ seq ( x ^i , i = 1 ..4 ) ]) : p : = unapply (q , x ) ; p ( x ) ; coeff ( p ( x ) ,x ^ 3) ; op (3 , p ( x ) ) ; P ol yn o mi al T oo ls [ C o e f f i c i e n t V e c t o r ]( p ( x ) ,x ) [4]; numapprox [ hornerform ]( p ( x ) ) ; r : = convert (p , ' horner ') ; with ( codegen , cost ) : cost ( p ) ; cost ( r ) ; Zadanie 249. Wykonaj poniższe polecenia dla wielomianu w(x, y) = 12x6 + 16x5 y − 45x4 y2 − 75x3 y3 + 25x2 y4 + 87xy5 + 36y6 . (a) Wyznacz stopień wielomianu, (b) Posortuj wielomian w na 3 różne sposoby, (c) Zapisz wielomian w postaci iloczynowej i na tej podstawie oceń wartość logiczną następującego zdania logicznego ∀x0 ∀y0 w(x, y) 0. (d) Sprawdź, czy wielomian w jest podzielny przez wielomian e(x, y) = −13xy2 + 5x2 y − 12y3 + 6x3 . Jeśli jest to prawdą to wyznacz iloraz w(x,y) e(x,y) . 1 2 3 4 5 w : = (x , y ) - > 12 * x ^ 6 + 16 * x ^ 5 * y - 45 * x ^ 4 * y ^ 2 - 75 * x ^ 3 * y ^ 3 + 25 * x ^ 2 * y ^ 4 + 87 * x * y ^ 5 + 36 * y ^ 6; degree ( w (x , y ) ) ; sort ( w (x , y ) ,[x , y ] , ascending ) ; sort ( w (x , y ) ,[x , y ] , plex ) ; sort ( w (x , y ) ,[x , y ] , plex , descending ) ; factor ( w (x , y ) ) ; divide ( w (x , y ) , e (x , y ) ) ; simplify ( w (x , y ) / e (x , y ) ) ; 46 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 250. Wyznacz iloczyny następujących wielomianów: (a) W1 (x) = x6 − 10x − 3, W2 (x) = x2 − 4x, (b) P1 (x) = 2x3 − 5x2 + 1, P2 (x) = 4x3 − 1, P3 (x) = 3x + 2. Ile wynosi suma wszystkich współczynników wielomianu P(x) = P1 (x)P2 (x)P3 (x)? 1 2 3 W1 : = x - > x ^ 6 - 10 * x - 3 : W2 : = x - > x ^ 2 - 4 * x : expand ( W1 ( x ) * W2 ( x ) ) ; P1 : = x - > 2 * x ^ 3 - 5 * x ^ 2 + 1 : P2 : = x - > 4 * x ^ 3 - 1 : P3 : = x - > 3 * x + 2 : P : = x - > P1 ( x ) * P2 ( x ) * P3 ( x ) : expand ( P ( x ) ) ; P (1) ; Zadanie 251. Wyznacz iloczyn wielomianów: P(x) = x4 + 8x2 + 15, Q(x) = x2 + x − 1. 1 2 P : = x - > x ^ 4 + 8 * x ^ 2 + 15; Q : = x - > x ^ 2 + x - 1; P ( x ) * Q ( x ) ; expand (%) ; Zadanie 252. Przedstaw następujące wielomiany w postaci iloczynu nierozkładalnych czynników rzeczywistych: (a) 2x5 + 5x4 − 3x3 − 24x2 + 16x − 2, (b) 8x4 − 10x2 + 2, (c) 2x3 − 9x2 + 3x + 4. 1 2 factor (2 * x ^ 5 + 5 * x ^ 4 - 3 * x ^ 3 - 24 * x ^ 2 + 16 * x - 2) ; factor (8 * x ^ 4 - 10 * x ^ 2 + 2) ; factor (2 * x ^ 3 - 9 * x ^ 2 + 3 * x + 4) ; Zadanie 253. Wielomiany: (a) 4x5 − 6x4 − 10x3 + 26x2 − 18x + 4, (b) x4 + 6x2 + 5, (c) x4 − x2 + 1 przedstaw w postaci iloczynu nierozkładalnych czynników rzeczywistych. 1 2 3 factor (4 * x ^ 5 - 6 * x ^ 4 - 10 * x ^ 3 + 26 * x ^ 2 - 18 * x + 4) ; factor ( x ^ 4 + 6 * x ^ 2 + 5) ; factor ( x ^ 4 - x ^ 2 + 1) ; Zadanie 254. Rozłóż wielomiany f(x) = x4 − 3x3 + x2 + 4, g(x) = x6 + 3x5 + 6x4 + 7x3 + 6x2 + 3x + 1 na iloczyn wielomianów nierozkładalnych w Q[x] oraz w C[x]. 1 2 3 factor ( x ^ 4 -3 * x ^ 3 + x ^ 2 + 4) ; factor ( x ^ 4 -3 * x ^ 3 + x ^ 2 + 4 , complex ) ; factor ( x ^ 6 + 3 * x ^ 5 + 6 * x ^ 4 + 7 * x ^ 3 + 6 * x ^ 2 + 3 * x + 1) ; factor ( x ^ 6 + 3 * x ^ 5 + 6 * x ^ 4 + 7 * x ^ 3 + 6 * x ^ 2 + 3 * x + 1 , complex ) ; Zadanie 255. Znajdź największy wspólny dzielnik oraz najmniejszą wspólną wielokrotność wielomianów f(x) = x7 − 5x5 − 5x4 + 4x3 + 13x2 + 12x + 4, g(x) = x5 − x4 − 2x3 − x2 + x + 2 w Q[x]. 1 2 gcd ( x ^ 7 -5 * x ^ 5 -5 * x ^ 4 + 4 * x ^ 3 + 13 * x ^ 2 + 12 * x + 4 , x ^ 5 -x ^ 4 -2 * x63 -x ^ 2 + x + 2) ; lcm ( x ^ 7 -5 * x ^ 5 -5 * x ^ 4 + 4 * x ^ 3 + 13 * x ^ 2 + 12 * x + 4 , x ^ 5 -x ^ 4 -2 * x63 -x ^ 2 + x + 2) ; Zadanie 256. Sprawdź ilość zer wielomianu x3 − 2x + 1 w przedziale [0, 2]. 1 2 3 readlib ( sturm ) : sturmseq ( x ^ 3 -2 * x + 1 , x ) ; sturm (% , x , 0 , 2) ; 47 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 257. Rozłóż wyrażenie wymierne na ułamki proste x4 1 Wyrażenia wymierne. 4x + 1 . − 13x2 + 36 f : = (4 * x + 1) / ( x ^ 4 - 13 * x ^ 2 + 36) : convert (f , parfrac , x ) ; Zadanie 258. Zapoznaj się z pomocą Maple dotyczącą funkcji parfrac i rozłóż podane funkcje rzeczywiste na rzeczywiste ułamki proste: x4 − x2 x+3 3x2 + x − 2 . , , 2 2x − 1 x −x−2 (x − 1)3 (x2 + 1) 1 2 3 p : = x ^ 4 -x ^ 2 : q : = 2 * x - 1 : convert ( p /q , parfrac , x ) ; p : = x + 3 : q : = x ^ 2 - x - 2 : convert ( p /q , parfrac , x ) ; p : = 3 * x ^ 2 + x - 2 : q : = ( x - 1) ^ 3 * ( x ^ 2 + 1) : convert ( p /q , parfrac , x ) ; Zadanie 259. Podane rzeczywiste funkcje wymierne właściwe rozłóż na rzeczywiste ułamki proste: x2 , x4 − 1 1 2 x3 − 8x − 4 . (x2 + 4)(x3 + x + 3)3 convert (( x ^ 2) / ( x ^ 4 - 1) , parfrac , x ) ; convert (( x ^ 3 - 8 * x - 4) / (( x ^ 2 + 4) * ( x ^ 3 + x + 3) ^ 3) , parfrac , x ) ; 7 Procedury i instrukcje warunkowe w Maple Astronomers say the universe is finite, which is a comforting thought for those people who can’t remember where they leave things. — Woody Allen Zadanie 260. Dany jest ciąg an = (−1)n · n + 16 n. Napisz w Maple procedury, które pobierają jako argument liczbę naturalną m 0 oraz na wyjściu zwracają: Podstawowe zadania ze strukturami danych (a) listę wartości ciągu L := [a0 , a1 , . . . , am ], 1 2 a : = n - > ( - 1) ^ n * n + n / 6; zwa : = proc ( m ) local l ; l : = [ seq (i , i = 0 ..m ) ]; return map (a , l ) ; end proc ; (b) listę składającą się z tych elementów listy L, które są liczbami całkowitymi, 1 zwb : = proc ( m ) local l ; l : = [ seq (6 *i , i = 0 ..floor ( m / 6) ) ]; return map (a , l ) ; end proc ; (c) listę składającą się z tych elementów listy L, które są liczbami ujemnymi. 1 2 3 4 5 6 7 8 9 zwc : = proc ( m ) local l , x ; l : = []; for x in zwa ( m ) do if ( x < 0) then l : = [ op ( l ) , x ]; end if ; end do ; return l ; end proc ; Zadanie 261. Napisz procedurę wyznaczającą ze zbioru liczb rzeczywistych liczby pierwsze. 1 2 3 4 5 6 7 8 pren : = proc ( L ) local i ; for i from 1 to nops ( L ) do if L [ i ] : : integer and isprime ( L [ i ]) then print ( L [ i ]) ; end if ; end do ; end proc ; 48 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 262. Napisz procedurę, która dla podanych liczb całkowitych dodatnich a, b zwraca ilość liczb pierwszych zawartych w przedziale [a, b]. 1 2 3 liczp : = proc (a , b ) return convert ([ seq ( ` if `( isprime ( k ) , 1 , 0) , k = ceil ( a ) ..floor ( b ) ) ] , `+ `) ; end proc ; Zadanie 263. Napisz procedurę, która dla argumentu będącego listą zliczy liczbę różnych elementów tej listy. Np. dla listy [3, 0, 2, 0, 0, 0, 3] procedura zwróci wynik 3. Podaj dwa rozwiązania: jedno korzystające z iteracji, a drugie bez użycia pętli. 1 2 3 4 5 6 7 8 9 10 11 12 13 liczroz : = proc ( A ) return nops ( convert (A , set ) ) ; end proc ; liczroz2 : = proc ( A ) local i , B ; B : = []; for i to nops ( A ) do if not member ( A [ i ] , B ) then B : = [ op ( B ) , A [ i ]]; fi ; end do ; return nops ( B ) ; end proc ; Zadanie 264. W jaki sposób z listy [a, b, c] utworzysz listę [a, a, b, b, c, c, b, b, a, a]? Zastosuj tę metodę do listy zawierającej kolejne liczby naturalne od 0 do 10000. 1 2 3 4 5 6 7 8 9 10 11 12 13 v : = [a ,b , c ]; oddwoj : = proc ( A ) local L , n , i ; L : = []; n : = nops ( A ) ; for i from 1 to n do L : = [ op ( L ) , A [ i ] , A [ i ]]; end do ; for i from 1 to n -1 do L : = [ op ( L ) , A [ n -i ] , A [ n -i ]]; end do ; return L ; end proc ; oddwoj ( v ) ; oddwoj ([ seq (i , i = 1 ..10000 ) ]) ; Zadanie 265. ma w L. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Napisz procedurę, która usuwa dany element z listy L lub podaje komunikat, że takiego element nie rm : = proc ( tab , el ) local i , wart , L ; wart : = true ; for i from 1 to nops ( tab ) do if tab [ i ] = el then L : = subsop ( i = NULL , tab ) ; wart : = false ; break ; end if ; end do ; if wart then return FAIL ; end if ; return L ; end proc ; Zadanie 266. Niech dana będzie lista L złożona z liczb rzeczywistych. Napisz procedurę, która wyznacza element maksymalny i minimalny listy L. 1 2 3 4 5 6 7 zw : = proc ( L ) local ma , mi , i ; ma : = L [1]; mi : = L [1]; for i in L do if is ( ma < i ) then ma : = i ; end if ; if is ( mi > i ) then mi : = i ; end if ; end do ; 49 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 8 9 30 stycznia 2013 print ( ma , mi ) ; end proc ; Zadanie 267. Napisz procedurę wyznaczającą średnią arytmetyczną elementów listy. 1 2 3 4 5 sreda : = proc ( L ) local n ; n : = nops ( L ) ; return 1 / n * sum ( L [ i ] , i = 1 ..n ) ; end proc ; Zadanie 268. Napisz procedurę wyznaczającą średnią harmoniczną elementów listy. Wprowadzić zabezpieczenie na wypadek zerowych elementów listy. 1 2 3 4 5 6 7 8 9 10 sredh : = proc ( L ) local n , i ; n : = nops ( L ) ; for i in L do if i = 0 then return FAIL ; end if ; end do ; return n / ( sum (1 / L [ i ] , i = 1 ..n ) ) ; end proc ; Zadanie 269. listę B. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Niech dana będzie lista L złożona z liczb rzeczywistych. Napisz procedurę, która sortuje bąbelkowo bubbleSort : = proc ( B ) local n , i , temp , A ; A := B; n : = nops ( A ) ; while n > 1 do for i from 1 to n -1 do if A [ i ] > A [ i + 1] then temp : = A [ i + 1]; A [ i + 1] : = A [ i ]; A [ i ] : = temp ; # print (A) ; end if ; end do ; n : = n - 1; end do ; return A ; end proc ; Zadanie 270. Napisz algorytm sortujący select. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 select_sort : = proc ( B ) local A ,i ,j , min , temp , m ; A := B; m : = nops ( B ) ; for i from 1 to m -1 do min : = i ; for j from i to m do if A [ j ] < A [ min ] then min : = j ; fi ; end do ; temp : = A [ i ]; A [ i ] : = A [ min ]; A [ min ] : = temp ; end do ; return A ; end proc ; Zadanie 271. Napisz algorytm sortujący insert. 1 2 3 insert_sort : = proc ( B ) local A ,i ,j , temp , n ; n : = nops ( B ) ; 50 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 4 5 6 7 8 9 10 11 12 13 14 15 16 17 30 stycznia 2013 A := B; i : = 2; while ( i <= n ) do j : = i - 1; temp : = A [ i ]; while ( j >= 1) and ( A [ j ] > temp ) do A [ j + 1] : = A [ j ]; j : = j - 1; end do ; A [ j + 1] : = temp ; i : = i + 1; end do ; return A ; end proc ; Zadanie 272. Napisz algorytm quicksort. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 qsort : = proc (k ,n , B ) local a ,A ,z ,l ,m ,j , f ; a : = rand ( max ( n -k - 1 ,1) ) ; z : = k + a () + 1; l := k; m := n; A := B; for j from k to n do if B [ j ] < B [ z ] then A [ l ] : = B [ j ]; l : = l + 1; fi ; if B [ j ] > B [ z ] then A [ m ] : = B [ j ]; m : = m - 1; fi ; for f from l to m do A [ f ] : = B [ z ]; end do ; end do ; if ( l - 1 - k > 0) then A : = qsort (k , l - 1 , A ) ; fi ; if ( n - m - 1 > 0) then A : = qsort ( m + 1 ,n , A ) ; fi ; return A ; end proc ; P20 1 Zadanie 273. Napisz funkcję, która definiuje ciąg Fibonacciego F(n) oraz policz n=1 F(n) z dokładnością do 30 P20 1 miejsc po przecinku. Porównać działanie tej procedury z wykonaniem n=1 fibonacci(n) . 1 2 3 4 5 6 7 8 Fib : = proc ( n ) if n = 1 or n = 0 then return 1; else return Fib ( n - 1) + Fib ( n - 2) ; end if ; end proc ; with ( combinat ) : evalf ( sum (1 / fibonacci ( n ) , n = 1 ..20 ) , 30) ; Zadanie 274. Napisać procedurę wyznaczającą wartość symbolu Newtona 1 2 3 4 5 6 7 8 9 Wykorzystanie prostych funkcji matematycznych n k , dla n, k ∈ N. niuton : = proc (x , y ) if ( x = y or y = 0) then return 1; elif ( y > x ) then return FAIL ; else return niuton ( x -1 , y - 1) + niuton ( x -1 , y ) ; end if ; end proc ; Zadanie 275. Niech będzie dana funkcja f : N → N taka, że dla n > 0 mamy n , gdy n jest parzysta, f(n) = 2 3n + 1, gdy n jest nieparzyste. Sprawdzanie hipotez i problemów otwartych w teorii liczb 51 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Określmy rekurencyjnie ciąg (an )∞ n=0 następująco: a0 jest z góry zadaną liczbą naturalną oraz dla n > 0 mamy an = f(an−1 ). Hipoteza Collatza (wciąż nieudowodniona) mówi, że dla dowolnego a0 ∈ N istnieje n (zależne od a0 ) takie, że an = 1. Napisać procedurę, która pobiera dodatnią liczbę naturalną jako argument, a na wyjściu zwraca najmniejsze n, dla którego an = 1 (po cichu zakładamy, że hipoteza Collatza jest prawdziwa – empirycznie sprawdzono, że jest prawdziwa dla wszystkich liczb mniejszych od 20 · 258 i to wystarczy na nasze potrzeby). 1 2 3 4 5 6 7 8 9 10 f : = n - > piecewise ( n mod 2 = 0 , n / 2 , 3 * n + 1) ; collatz : = proc ( n ) local k , l ; k : = n ; l : = 1; while f ( k ) < > 1 do k := f(k); l : = l + 1; end do ; print ( l ) ; end proc ; Zadanie 276. Liczbę naturalną k nazwiemy ?-parzystą, o ile k = p1 · · · · · pn dla pewnych liczb pierwszych pi (mogą się powtarzać) oraz n jest liczbą parzystą. Analogicznie mamy definicję liczby ?-nieparzystej. Problem Pólya głosi, że dla dowolnej liczby n istnieje więcej liczb ?-nieparzystych mniejszych od n niż ?-parzystych. Napisz procedurę, która pobiera liczbę naturalną n oraz zwraca listę [A, B], gdzie A jest liczbą liczby ?-parzystych mniejszych od n, zaś B jest liczbą liczb ?-nieparzystych mniejszych od n. Uwaga. Okazuje, że istnieją kontrprzykłady, np. 906150257. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 polya : = proc ( n ) local i , j , X , A , B , suma ; A : = []; B : = []; for i from 2 to n do X : = op (2 , ifactors ( i ) ) ; suma : = 0; for j from 1 to nops ( X ) do suma : = suma + X [ j ][2]; end do ; if suma mod 2 = 0 then A : = [ op ( A ) , i ]; else B : = [ op ( B ) , i ]; end if ; end do ; return nops ( A ) , nops ( B ) ; end proc ; Zadanie 277. Ile wśród 100000 pierwszych liczb pierwszych jest liczb postaci n2 + 1? 1 2 3 4 5 6 7 8 9 10 11 12 Teoria liczb pierw : = proc ( n ) local l , i ; l : = 0; for i from 1 to n do if isprime ( i ) and sqrt ( i - 1) : : integer then l : = l + 1; # print ( i ) ; end if ; end do ; return l ; end proc : pierw (100000) ; Zadanie 278. Utwórz listę A tysiąca pierwszych liczb pierwszych oraz listę B tysiąca pierwszych liczb postaci 2p − 1, gdzie p jest liczbą pierwszą. Sprawdź czy liczba 3217 jest elementem tych list. Jeśli tak, to podaj pozycję liczby na każdej z list. Wyznacz wszystkie elementy wspólne obu list. 1 2 3 4 5 germain : = proc ( n ) local L , p ; L : = []; p : = 3; while nops ( L ) < n do if isprime ( p ) and isprime (( p + 1) / 2) then 52 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 6 7 8 9 10 11 12 13 14 15 30 stycznia 2013 L : = [ op ( L ) , p ]; end if ; p : = p + 2; end do ; return L ; end proc : P : = [ seq ( ithprime ( i ) , i = 1 ..1000 ) ] : Q : = germain (1000) : member (3217 , P , ' k1 ') ; member (3217 , Q , ' k2 ') ; k1 , k2 ; A : = convert (P , set ) : B : = convert (Q , set ) : A intersect B ; Zadanie 279. Napisz procedurę, która będzie implementować sito Eratostenesa. Po podaniu liczby (jako argument) n na wejściu, ma wyświetlić listę liczb pierwszych nie większych od n na wyjściu. W zadaniu ma być przeprowadzony test dla n = 10, 50, 100, 200. 1 2 3 4 5 6 7 8 9 10 11 12 13 eratostenes : = proc ( n ) local A , B , i , j ; A : = [ seq ( true , i = 1 ..n ) ]; B : = []; for i from 2 to nops ( A ) do if A [ i ] then for j from 2 to floor ( nops ( A ) / i ) do A [ i * j ] : = false ; end do ; B : = [ op ( B ) , i ]; end if ; end do ; return B ; end proc ; Zadanie 280. Napisz procedurę, która na wejściu bierze dwie liczby naturalne, zaś na wyjściu zwraca ich największy wspólny dzielnik. Procedura ma implementować algorytm Euklidesa. 1 2 3 euclid : = proc (a , b ) return ` if `( b < > 0 , euclid (b , irem (a , b ) ) , a ) ; end proc ; Zadanie 281. Stwórz procedurę, która na wejściu pobierze liczbę naturalną n, zaś na wyjściu wyświetli wszystkie możliwe pary liczb (bez powtórzeń) a, b takich, że a2 + b2 = n (lub nic nie wyświetli, jeśli taka para nie istnieje). 1 2 3 4 5 6 7 8 9 10 11 kwadrat : = proc ( n ) local A , i , x ; A : = {}; for i from 1 to floor ( sqrt ( n ) ) do x : = n - i ^ 2; if is ( sqrt ( x ) : : integer ) then A : = { op ( A ) , {i , sqrt ( x ) }}; end if ; end do ; print ( op ( A ) ) ; end proc ; Zadanie 282. cha). 1 2 3 4 5 6 7 8 9 10 11 Napisz procedurę generującą rozkład danej liczby na sumę dwóch liczb pierwszych (Hipoteza Goldba- goldbach : = proc ( n ) local A , i , x ; A : = {}; for i from 1 to n do x := n - i; if isprime ( i ) and isprime ( x ) then A : = [ op ( A ) , [i , x ]]; end if ; end do ; print ( op ( A ) ) ; end proc ; Zadanie 283. Utwórz procedurę, która na wejściu przyjmuje liczbę naturalną n, zaś na wyjściu daje true, o ile n jest palindromem (tzn. po odwróceniu kolejności cyfr jest tą samą liczbą) lub false w przeciwnym wypadku. 53 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 30 stycznia 2013 with ( StringTools ) : palindrom : = proc ( n ) IsPalindrome ( convert (n , string ) ) ; end proc ; Zadanie 284. Napisz procedurę na algorytm faktoryzacji Fermata. Działanie algorytmu polega na szukaniu pary liczb a i b takich że N = a2 − b2 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 FermatAlg : = proc ( N ) local s ,a , b ; s : = sqrt ( N ) ; a : = ceil ( s ) ; if ( a = s ) then return a ; else b := a^2 - N; while not ( sqrt ( b ) : : integer ) and ( a + evalf ( sqrt ( b ) ) <= N ) do ; a : = a + 1; b := a^2 - N; end do ; if ( sqrt ( b ) : : integer ) then return a - sqrt ( b ) , a + sqrt ( b ) ; else return ( ` Nie mozna znalezc `) ; end if ; end if ; end proc ; FermatAlg (5959) ; Zadanie Niech dana będzie macierz A = (ai,j ), gdzie i = 1, . . . , n i j = 1, . . . , m. Napisz procedurę, która Q285. m Pn oblicza j=1 ( i=1 ai,j ). 1 2 3 4 5 6 7 8 9 10 11 12 Algebra mnoz : = proc ( A ) local pr , suma , i , j ; pr : = 1; for i from 1 to rowdim ( A ) do suma : = 0; for j from 1 to coldim ( A ) do suma : = suma + A [i , j ]; end do ; pr : = pr * suma ; end do ; return pr ; end proc ; Zadanie 286. Niech dana będzie macierz A. Napisz procedurę, która zamienia macierz A na macierz AT . Nie można używać polecenia: tranpose! 1 2 3 4 5 6 7 8 9 10 11 with ( linalg ) : trans : = proc ( A ) local B , i , j ; B : = array (1 ..coldim ( A ) ,1 ..rowdim ( A ) ) ; for i from 1 to coldim ( A ) do for j from 1 to rowdim ( A ) do B [i , j ] : = A [j , i ]; end do ; end do ; print ( B ) ; end proc ; Zadanie 287. Napisz procedurę, która dla danej macierzy zwracać będzie macierz o tych samych kolumnach co wejściowa, lecz w odwrotnym porządku. 1 2 3 4 5 6 odwrot : = proc ( A ) local B , n , i ; B := A; n : = coldim ( A ) ; for i from 1 to floor ( n / 2) do B : = swapcol (B ,i , n -i + 1) ; 54 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 7 8 9 30 stycznia 2013 end do ; print ( B ) ; end proc ; Zadanie 288. Napisz procedurę, która pobiera 3 argumenty, mianowicie macierz M i dwie liczby naturalne a, b. Na wyjściu ma zwrócić minor macierzy M w (a, b), tzn. macierz M 0 , która powstaje z M poprzez usunięcie a-tej kolumny i b-tego wiersza. 1 2 3 4 5 6 7 8 with ( linalg ) : usu : = proc (M , a , b ) local L ; L : = []; L : = delrows (M , b..b ) ; L : = delcols (L , a..a ) ; return L ; end proc ; Zadanie 289. cji indeksów). 1 2 3 Wyznacznik poprzez rozwinięcie Laplace’a. Wyznacznik z definicji (poprzez sumę po zbiorze permuta- restart ; with ( linalg ) : n : = 3 : A : = array (1 ..n , 1 ..n ) : 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 signature : = proc ( L ) return group [ parity ]( convert (L , ' disjcyc ') ) ; end proc : wyznacznik : = proc ( A ) local n , P ; n : = coldim ( A ) : if n = rowdim ( A ) then P : = combinat [ permute ]( n ) : return convert ([ seq ( signature ( p ) * product ( A [i , p [ i ]] , i = 1 ..n ) , p in P ) ] , `+ `) ; else return FAIL ; end if ; end proc : det ( A ) ; wyznacznik ( A ) ; is (% = %%) ; 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 rozwLap : = proc ( A ) local n , roll , i ; n : = linalg [ coldim ]( A ) : if n = linalg [ rowdim ]( A ) then if n > 1 then roll : = rand (1 ..n ) : i : = roll () : return convert ([ seq (( - 1) ^ ( i + j ) * A [i , j ] * rozwLap ( delcols ( delrows (A , i..i ) , j..j ) ) , j = 1 ..n ) ] , `+ `) ; else return A [1 ,1]; end if ; else return FAIL ; end if ; end proc : rozwLap ( A ) ; det ( A ) ; is (% = %%) ; Zadanie 290. Napisz procedurę zwracającą macierz Hankela dla danego wektora (danych wektorów). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 with ( linalg ) : Hanekl : = proc ( C : : vector , R : : vector ) local i ,j ,n , h ; n : = vectdim ( C ) ; h : = matrix (n ,n ,0) ; if n < 2 then ERROR ( ' Blad ! ') ; fi ; for j to n do for i to n -j + 1 do h [i , j ] : = C [ i + j - 1]; end do ; end do ; if nargs > 1 and vectdim ( R ) = n then if C [ n ] < > R [1] then print ( ` Kolumny zwyciezyly ` , R [1]) ; 55 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 15 16 17 18 19 20 21 22 23 24 25 30 stycznia 2013 fi ; for j from 2 to n do for i from n by -1 to n -j + 2 do h [i , j ] : = R [ j + i -n ]; end do ; end do ; fi ; return evalm ( h ) ; end proc ; C : = vector ([1 ,2 ,3 ,4]) ; R : = vector ([4 ,5 ,6 ,7]) ; Hanekl ( C ) ; Hanekl (C , R ) ; Zadanie 291. Napisz procedurę realizującą schemat Hornera. 1 2 3 4 5 6 7 8 horner : = proc (L , x ) local wart , i ; wart : = L [ nops ( L ) ]; for i from nops ( L ) to 2 by -1 do wart : = wart * x + L [ i - 1]; end do ; return wart ; end proc ; Zadanie 292. nej. 1 2 3 Napisz procedurę wyznaczającą liczbę rzeczywistych pierwiastków danego wielomianu jednej zmien- rzecz : = proc ( W ) return nops ( realroot ( W ( x ) ,1 / 1000) ) ; end proc ; Zadanie 293. Napisz procedurę, która znajduje wszystkie (o ile istnieją) pierwiastki stopnia 2 z −1 w pierścieniu Zn reszt modulo n. Na wejściu procedura pobiera n, zaś na wyjściu wyświetla zbiór tych pierwiastków. 1 2 3 4 5 6 7 8 fun : = proc ( n ) local L , a ; L : = []; for a in ( Roots ( x ^ 2 + 1) mod n ) do L : = [ op ( L ) , a [1]]; end do ; return L ; end proc ; Zadanie 294. Napisz procedurę wyznaczającą kąt między dwoma wektorami z tej samej przestrzeni Rn . Procedura ma posiadać zabezpieczenia przed podaniem wektorów z różnych przestrzeni. 1 2 3 4 5 6 7 8 with ( linalg ) : kat : = proc (v , w ) if ( vectdim ( v ) = vectdim ( w ) ) then return angle (v , w ) ; else return FAIL ; end if ; end proc ; Zadanie 295. Napisz procedurę znajdującą, dla danego odwzorowania zwężającego f : R → R oraz danego > 0, przybliżenie punktu stałego tego odwzorowania. Błąd przybliżenia ma być mniejszy od . 1 2 3 4 5 6 7 8 Analiza zbliz : = proc (f , a , b , epsilon ) local x0 ; x0 : = ( a + b ) / 2; while is ( abs ( f ( x0 ) - x0 ) >= epsilon ) do x0 : = evalf ( f ( x0 ) ) ; end do ; return x0 ; end proc ; 56 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 296. Napisz procedurę, która na wejściu pobiera dwa argumenty: funkcję f i punkt x, zaś na wyjściu wylicza pochodną f 0 (x) (z definicji pochodnej). 1 2 3 poch : = proc (f , x ) : return limit (( f ( y ) - f ( x ) ) / ( y - x ) , y = x ) ; end proc ; Zadanie 297. Niech dana będzie funkcja różniczkowalna f : R → R. Napisz procedurę, która wyznacza przestrzeń styczną do funkcji f w danym punkcie x0 . 1 2 3 4 5 6 with ( student ) : stycz : = proc (f , x0 ) simplify ( x0 + D ( f ) ( x0 ) * ( x - x0 ) ) ; # showtangent ( f ( x ) , x= x0 ) ; # p r i n t f ( " % g + %g * ( x - %g ) \ n " , x0 , D ( f ) ( x 0 ) , x 0 ) ; end proc ; Zadanie 298. Niech dana będzie funkcja różniczkowalna f : R2 → R. Napisz procedurę, która liczy pochodną kierunkową w punkcie x0 w kierunku v. 1 2 3 4 5 pochkier : = proc (f , x0 , v ) local x ; x : = evalm ( x0 + scalarmul (v , h ) ) ; return limit (( f ( x [1] , x [2]) - f ( x0 [1] , x0 [2]) ) / abs ( h ) , h = 0) ; end proc ; Zadanie 299. Napisz procedurę, która wyznacza punkty krytyczne funkcji f : R → R. 1 2 3 kryt : = proc ( f ) return solve ( D ( f ) ( x ) = 0 , x ) ; end proc ; Zadanie 300. Napisz procedurę na obliczanie długości krzywej zadanej parametrycznie. 1 2 3 4 5 6 7 8 9 arclngth : = proc ( rt , a ) local vt , sp ; vt : = map ( diff , rt , t ) ; sp : = subs ( t =u , sqrt ( sum ( vt [ 'i '] ^ 2 , i = 1 ..nops ( rt ) ) ) ) ; Int ( sp , u = a..t ) = int ( simplify ( sp ) ,u = a..t ) ; end : assume ( r > 0) ; arclngth ([ r * cos ( t ) ,r * sin ( t ) ] ,0) ; arclngth ([ t , t ^ 2 / 2] , a ) ; arclngth ([ t , cosh ( t ) ] , a ) ; Zadanie 301. Stwórz animację: dla ustalonego parametru N ∈ N narysuj łamaną łączącą punkty (1 + Co oznacza ta animacja dla N → +∞? 1 2 3 4 5 iπ k N . N) k=1 Grafika i animacja with ( plots , plottools , line ) : plEuler : = N - > [ seq ( line ([ Re ((1 + I * Pi / N ) ^ ( k - 1) ) , Im ((1 + I * Pi / N ) ^ ( k - 1) ) ] , [ Re ((1 + I * Pi / N ) ^ k ) , Im ((1 + I * Pi / N ) ^ k ) ]) , k = 1 ..N ) ] : plEulerX : = proc ( x ) return plots [ display ]( plEuler ( floor ( x ) ) ) end : animate ( plEulerX , [ theta ] , theta = 1 ..24 , scaling = constrained , axes = none ) ; Zadanie 302. Napisz procedurę, która rysuje bryłę powstałą przez obrót funkcji f : [1, 2] → R dookoła osi OX. 1 2 3 4 with ( Student [ Calculus1 ]) : resolut : = proc ( f ) V o l u m e O f R e v o l u t i o n ( f ( x ) , x = 1 ..2 , output = plot , axis = horizontal ) ; end proc ; Zadanie 303. Rozwiązać problem wież Hanoi. 1 2 3 4 5 6 7 8 9 Zadania różne h a n o i _ t o w e r s _ r e c : = proc (A ,B ,C , k ) if k >= 1 then h a n o i _ t o w e r s _ r e c (A ,C ,B , k - 1) ; print (A , " - > " ,B ) ; h a n o i _ t o w e r s _ r e c (C ,B ,A , k - 1) ; fi ; end proc ; n : = 3; h a n o i _ t o w e r s _ r e c ( 'a ' , 'b ' , 'c ' , n ) ; 57 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 304. Napisać procedurę na obliczanie dnia Wielkanocy (święto ruchome), korzystając z algorytmu Gaussa: (a) Dzielimy liczbę roku przez 19 i znajdujemy resztę a. (b) Dzielimy liczbę roku przez 4 i znajdujemy resztę b. (c) Dzielimy liczbę roku przez 7 i znajdujemy resztę c. (d) Resztę a mnożymy przez 19, do iloczynu dodajemy liczbę A (z odpowiedniej tablicy), sumę dzielimy przez 30 i znajdujemy resztę d. (e) Dzielimy sumę iloczynów 2b + 4c + 6d + B przez 7 i znajdujemy resztę e (B z odpowiedniej tablicy). (f) Sumę reszt d + e dodajemy do daty 22 marca i otrzymujemy datę Wielkanocy. (g) Jeżeli data wypadnie powyżej 31 marca, należy ją przeliczyć na odpowiedni dzień kwietnia. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 getA : = proc ( rok : : integer ) # Pobierz wartosc A z t a b e l i l a t local res ; if ( rok <= 1582) then res : = 15; elif ( rok <= 1699) then res : = 22; elif ( rok <= 1899) then res : = 23; elif ( rok <= 2199) then res : = 24; elif ( rok <= 2299) then res : = 25; elif ( rok <= 2399) then res : = 26; elif ( rok <= 2499) then res : = 25; else res : = 0; # p o z a z a k r e s e m end if ; return res ; end proc : getB : = proc ( rok : : integer ) # Pobierz wartosc B z t a b e l i l a t local res ; if ( rok <= 1582) then res : = 6; elif ( rok <= 1699) then res : = 2; elif ( rok <= 1799) then res : = 3; elif ( rok <= 1899) then res : = 4; elif ( rok <= 2099) then res : = 5; elif ( rok <= 2199) then res : = 6; elif ( rok <= 2299) then res : = 0; elif ( rok <= 2499) then res : = 1; else res : = 0; # p o z a z a k r e s e m end if ; end : wielkanoc : = proc ( rok : : integer ) # O b l i c z a i l e d n i po 2 2 m a r c a p r z y p a d a w i e l k a n o c local a , b , c , d , e , res ; 49 50 51 52 53 54 a b c d e := := := := := rok mod 19; rok mod 4; rok mod 7; ( a * 19 + getA ( rok ) ) mod 30; (2 * b + 4 * c + 6 * d + getB ( rok ) ) mod 7; 55 56 57 if ((( d = 29) and ( e = 6) ) or (( d = 28) and ( e = 6) ) ) then d : = d - 7; 58 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 58 30 stycznia 2013 end if ; 59 60 61 62 63 64 65 66 67 68 res : = d + e ; return res ; end : EasterGauss : = proc ( rok : : integer ) local data ; if (( rok < 33) or ( rok > 2499) ) then print ( ` Podany rok nie jest w zakresie 33 - - 2499 . `) ; quit ; end if ; 69 70 71 72 73 74 75 76 77 data : = 22 + wielkanoc ( rok ) ; if ( data > 31) then print ( `W roku ` || rok || ` Wielkanoc przypada ` ||( data mod 31) || ` kwietnia. `) ; else print ( `W roku ` || rok || ` Wielkanoc przypada ` || data || ` marca. `) ; end if ; end proc : EasterGauss (1777) ; Zadanie 305. Napisać procedurę na obliczanie dnia Wielkanocy, korzystając z algorytmu Meeusa: (a) Dzielimy liczbę roku na 19 i wyznaczamy resztę a. (b) Dzielimy liczbę roku przez 100, wynik zaokrąglamy w dół (odcinamy część ułamkową) i otrzymujemy liczbę b. (c) Dzielimy liczbę roku przez 100 i otrzymujemy resztę c. (d) Liczymy: b : 4 i wynik zaokrąglamy w dół i otrzymujemy liczbę d. (e) Liczymy: b : 4 i wyznaczamy resztę e. (f) Liczymy: (b + 8) : 25 i wynik zaokrąglamy w dół i otrzymujemy liczbę f. (g) Liczymy: (b − f + 1) : 3 i wynik zaokrąglamy w dół i otrzymujemy liczbę g. (h) Liczymy: (19a + b − d − g + 15) : 30 i wyznaczamy resztę h. (i) Liczymy: c : 4 i wynik zaokrąglamy w dół i otrzymujemy cyfrę i. (j) Liczymy: c : 4 i wyznaczamy resztę k. (k) Liczymy: (32 + 2e + 2i − h − k) : 7 i otrzymujemy resztę l. (l) Liczymy: (a + 11h + 22l) : 451 i wynik zaokrąglamy w dół i otrzymujemy liczbę m. (m) Liczymy: (h + l − 7m + 114) : 31 i otrzymujemy resztę p. (n) Dzień Wielkanocy = p + 1. (o) Miesiąc = Zaokrąglenie w dół dzielenia (h + l − 7m + 114) przez 31. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 EasterMeeus : = proc ( rok ) local a ,b ,c ,d ,e ,f ,g ,h ,i ,k ,l ,m ,p ,q , ms ; a : = rok mod 19; b : = floor ( rok / 100) ; c : = rok mod 100; d : = floor ( b / 4) ; e : = b mod 4; f : = floor (( b + 8) / 25) ; g : = floor (( b - f + 1) / 3) ; h : = (19 * a + b - d - g + 15) mod 30; i : = floor ( c / 4) ; k : = c mod 4; l : = (32 + 2 * e + 2 * i - h - k ) mod 7; m : = floor (( a + 11 * h + 22 * l ) / 451) ; p : = ( h + l - 7 * m + 114) mod 31; q : = floor (( h + l - 7 * m + 114) / 31) ; if ( q = 3) then ms : = ` marca `; else ms : = ` kwietnia `; end if ; print ( `W roku ` || rok || ` Wielkanoc przypada ` ||( p + 1) || ` ` || ms || `. `) ; end proc : EasterMeeus (1777) ; 59 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 306. Napisać test Lucasa-Lehmera sprawdzania pierwszości liczb Mp postaci 2p − 1. 4, jeśli i = 0; si = s2i−1 − 2, w p.p. Liczba Mp jest pierwsza wtedy i tylko wtedy, gdy sp−2 ≡ 0 (mod Mp ). 1 2 3 4 5 6 7 8 9 10 lucaslehmer : = proc ( p ) local u , k , M ; M : = 2 ^ p - 1; u : = 4; for k from 2 to p - 1 do u : = ( u ^ 2 - 2) mod M ; end do ; if ( u = 0) then return true ; else return false ; fi ; end proc ; Zadanie 307. Zaimplementuj chińskie twierdzenie o resztach do znajdowania rozwiązania układu kongruencji. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 chinskie : = proc (A , B ) local K , L , M , N , i , j ; N : = nops ( B ) ; if nops ( A ) < > N then return FAIL ; fi ; for i from 1 to N do for j from 1 to N do if ( i < > j ) and igcd ( B [ i ] , B [ j ]) < > 1 then return FAIL ; fi ; end do ; end do ; M : = convert ([ seq ( B [ i ] , i = 1 ..N ) ] , `* `) ; K : = []; L : = []; for i from 1 to N do L : = [ op ( L ) , M / B [ i ]]; # O c z y w i s c i e t e c z e s c mozna r o z w i a z a c r o z s z e r z o n y m a l g o r y t m e m E u k l i d e s a K : = [ op ( K ) , rhs ( op ( msolve ( x * L [ i ] = 1 , B [ i ]) ) ) ]; end do ; return convert ([ seq ( A [ i ] * K [ i ] * L [ i ] , i = 1 ..N ) ] , `+ `) mod M ; end proc ; chinskie ([3 ,4 ,1] , [4 ,5 ,7]) ; chinskie ([2 ,3 ,1] , [3 ,4 ,5]) ; Zadanie 308. Napisz procedurę liczącą pole powierzchni dowolnego wielokąta. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 L : = [[1 ,20] , [79 , 19] , [61 , 51] , [80 , 61] , [83 , 69] , [90 , 76] , [98 , 100] , [44 , 73] , [29 , 67] , [6 , 34]]; # W i e r z c h o l k i musza b y c po k o l e i ! with ( plottools ) : l : = polygon (L , color = red , linestyle = 3 , thickness = 2) : k : = plots [ pointplot ]( L , color = blue , symbol = circle ) : plots [ display ]({ l , k }) ; area : = 0 : areaofpolygon : = proc ( polygon , i ) local x1 , x2 , y1 , y2 ; global area ; if i = 0 then area = 0; fi ; try x1 : = polygon [ i + 1][1]; y1 : = polygon [ i + 1][2]; x2 : = polygon [ i + 2][1]; y2 : = polygon [ i + 2][2]; area : = area + ( x1 * y2 ) - ( x2 * y1 ) ; catch : x1 : = polygon [1][1]; y1 : = polygon [1][2]; x2 : = polygon [ - 1][1]; y2 : = polygon [ - 1][2]; area : = area + ( x2 * y1 ) - ( x1 * y2 ) ; return abs ( area / 2 .0 ) ; end try ; return areaofpolygon ( polygon , i + 1) ; end proc : area : = areaofpolygon (L , 0) ; 60 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 309. Napisz procedurę na grupowanie wyrazów i zbieranie niepotrzebnych wyrazów w stałe. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Wiodacy_Index : = 0; L i s t _ w s p o l c z y n n i k o w : = array (1 ..10000 ) ; C : = array (1 ..10000 ) ; Ruguj : = proc ( term ) local c ; global Wiodacy_Index , L i s t _ w s p o l c z y n n i k o w ; c : = expand ( term ) ; if ( c < > 0) and nops ( c ) < > 1 and not type (c , numeric ) and not ( type (c , `* `) and type ( op (1 , c ) , constant ) ) then Wiodacy_Index : = Wiodacy_Index + 1; L i s t _ w s p o l c z y n n i k o w [ Wiodacy_Index ] : = c ; C [ Wiodacy_Index ] else c; fi ; end proc ; flatten : = proc ( expr , vars ) collect ( expr , vars , distributed , Ruguj ) ; end proc ; p : = randpoly ([ r , ln ( r ) , a , b ] , dense ) ; flatten (p , [r , ln ( r ) ]) ; 8 Analiza numeryczna Zadanie 310. Zaimplementować metodę stycznych Newtona rozwiązywania równań: xk+1 = xk − f(xk ) . f0 (xk ) Rozwiązywanie równań 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 newraph : = proc (f , x0 , n ) local i , x ; x : = [ x0 ]; for i from 1 to n do x : = [ op ( x ) ,x [ i ] - f ( x [ i ]) / D ( f ) ( x [ i ]) ]; end do ; print ( x [ n ] , evalf ( x [ n ]) ) ; return x ; end proc ; p : = x - > x ^ 3 - 2 * x ^ 2 - 11 * x + 12; factor ( p ( x ) , complex ) ; y : = newraph (p , -5 / 7 ,5) : N : = nops ( y ) : with ( plots ) : funk : = plot ( p ( x ) , x = -2 ..3 ) : pts : = pointplot ({ seq ([ y [ j ] ,0] , j = 1 ..N ) } , color = blue , symbol = circle , symbolsize = 10) : lns : = seq ( plot ({[ y [ i ] ,0] ,[ y [ i ] , p ( y [ i ]) ]} , color = gray ) , i = 1 ..N ) : B : = display ({ funk , pts , lns }) : animate ( plot , [ D ( p ) ( y [ floor ( t ) ]) * ( x - y [ floor ( t ) ]) + p ( y [ floor ( t ) ]) , x = -2 ..3 , color = green ] , t = 1 ..N , frames =N , background = B ) ; Zadanie 311. Napisz procedurę, która pobiera jako argumenty funkcję f, liczby rzeczywiste x, y oraz stałą c > 0. Na wyjściu funkcja zwraca taką liczbę rzeczywistą x0 ∈ [x, y], że |f(x0 )| < c. Procedura ma implementować algorytm równego podziału (metodę bisekcji), tzn. w pierwszym kroku sprawdza, czy f(x) · f(y) < 0. Jeśli nie, to zwraca FAIL. Jeśli tak, to sprawdza czy f x+y ma znak różny od f(x) czy f(y). Jeśli 2 ma różny od f(x), to dokonuje zamiany y1 := x+y . Podobnie dla znaku różnego od f(y). Powtarzając rozumowanie 2 otrzymujemy ciąg ułamków {yn }, który zbiega do zera funkcji f. 1 2 3 4 5 6 7 newton : = proc (f , x , y , c ) : if evalf ( f ( x ) * f ( y ) ) < 0 then if evalf ( abs ( f (( x + y ) / 2) ) ) < c then return ( x + y ) / 2; else if evalf ( f ( x ) * f (( x + y ) / 2) ) < 0 then newton (f , x , ( x + y ) / 2 , c ) ; 61 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski else 8 9 10 11 12 13 14 15 30 stycznia 2013 else newton (f , ( x + y ) / 2 , y , c ) ; end if ; end if ; return FAIL ; end if ; end proc ; Zadanie 312. Napisz metodę Halleya, metodę Steffensona, metodę Graeffe’a, metodę siecznych do rozwiązywania rówQ20 nań i wypróbuj je na wielomianie Wilkinsona p(x) = i=1 (x − i). Metoda Halleya: xn+1 = xn − 2f(xn )f 0 (xn ) 2 2[f 0 (xn )] − f(xn )f 00 (xn ) Metoda Steffensona: xn+1 = xn − f2 (xn ) f xn + f(xn ) − f(xn ) Metoda siecznych: xn = xn−1 − f(xn−1 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 xn−1 − xn−2 f(xn−1 ) − f(xn−2 ) halley : = proc (f , x0 , n ) local i , x ; x : = [ x0 ]; for i from 1 to n do x : = [ op ( x ) , x [ i ] - f ( x [ i ]) * D ( f ) ( x [ i ]) / ( D ( f ) ( x [ i ]) ^ 2 - ( f ( x [ i ]) * ( D @ @ 2) ( f ) ( x [ i ]) ) / 2) ]; end do ; print ( evalf ( x [ n ]) ) ; # return x ; end proc ; steffensen : = proc (f , x0 , n ) local i ,x , xi ; x : = [ x0 ]; for i from 1 to n do xi : = x [ i ]; x : = [ op ( x ) , xi - f ( xi ) ^ 2 / ( f ( xi + f ( xi ) ) - f ( xi ) ) ]; end do ; print ( evalf ( x [ n ]) ) ; # return x ; end proc ; graeffe : = proc (f , v ) # metoda t y l k o d l a wielomianow ! local i ,b ,p ,q ,r ,n , pierw ; n : = degree ( f ( x ) ) ; p : = [ f ( x ) ]; for i from 2 to v do r : = x - > expand ( eval ( p [ i - 1] , x = -x ) * p [ i - 1]) ; p : = [ op ( p ) , eval ( r ( x ) , x = sqrt ( x ) ) ]; end do ; q : = sort ( p [ v ]) ; b : = linalg [ vector ]( n + 1) ; b [1] : = 1; for i from 2 to n + 1 do b [ i ] : = op (1 , op (i , q ) ) ; end do ; pierw : = linalg [ vector ]( n ) ; for i from 1 to n do pierw [ i ] : = evalf (( -b [ i + 1] / b [ i ]) ^ (1 / (2 * v ) ) ) ; end do ; print ( pierw ) ; return pierw ; end proc ; sieczne : = proc (f , x0 , n ) local i ,x , xi , xi1 ; x : = [ x0 ]; # d r u g i e l e m e n t w y l i c z o n y z metody S t e f f e n s o n a x : = [ op ( x ) , x [1] - f ( x [1]) ^ 2 / ( f ( x [1] + f ( x [1]) ) - f ( x [1]) ) ]; for i from 2 to n do xi : = x [ i ]; xi1 : = x [ i - 1]; x : = [ op ( x ) , xi - f ( xi ) * ( xi - xi1 ) / ( f ( xi ) - f ( xi1 ) ) ]; 62 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 51 52 53 54 55 56 57 58 59 60 61 30 stycznia 2013 end do ; print ( evalf ( x [ n ]) ) ; # return x ; end proc ; # p := x -> p r o d u c t ( x - k , k= 1 . . 2 0 ) ; p : = x - > x ^ 3 - 2 * x ^ 2 - 10 * x + 12; factor ( p ( x ) , complex ) ; halley (p , 1 / 2 , 5) ; steffensen (p , 1 .0 , 5) ; sieczne (p , 0 .5 , 5) ; p : = x - > x ^ 2 - 10 * x + 23; factor ( p ( x ) , complex ) ; graeffe (p ,20) ; Zadanie 313. Napisz procedurę na aproksymację (w sensie metody najmniejszego kwadratu) danego zbioru punktów za pomocą wielomianu stopnia n. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Aproksymacje i interpolacje with ( linalg ) : aproksymacja : = proc (x , y , n : : integer ) local p ,N ,A ,B , C ; N : = nops ( x ) ; if N < > nops ( y ) then return FAIL ; fi ; A : = matrix ( n + 1 , n + 1 ,[ seq ( seq ( sum ( x [ k ] ^ (2 * ( n + 1) -( i + j ) ) ,k = 1 ..N ) ,j = 1 ..n + 1) ,i = 1 ..n + 1) ]) ; B : = vector ( n + 1 ,[ seq ( sum ( y [ k ] * x [ k ] ^ ( n -i + 1) ,k = 1 ..N ) ,i = 1 ..n + 1) ]) ; if det ( A ) < > 0 then C : = linsolve (A , B ) ; p : = sum ( C [ k + 1] * t ^ ( n -k ) , k = 0 ..n ) ; return p ; else return FAIL ; fi ; end proc ; x : = [0 ,0 .5 ,1 ,1 .5 ,2 ,2 .3 ,2 .5 ]; y : = [ seq ( sin ( x [ i ]) , i = 1 ..nops ( x ) ) ]; ap : = t - > aproksymacja (x ,y ,2) : evalf ( ap ( t ) ) ; plot ({ sin ( t ) , ap ( t ) } , t = -1 ..2 ) ; Zadanie 314. Napisz procedurę zwracającą wielomian interpolacyjny Lagrange’a: Lf (x) = n X i=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 f(xi ) n Y j=0,j6=i x − xj . xi − xj lagr : = proc (X , Y ) local B ,C ,L , n ; n : = nops ( X ) ; if nops ( Y ) < > n then return FAIL ; fi ; L : = (i , j ) - > ` if `( i < > j , ( x -X [ j ]) / ( X [ i ] -X [ j ]) , 1) ; B : = i - > convert ([ seq ( L (i , j ) , j = 1 ..n ) ] , `* `) ; C : = convert ([ seq ( Y [ i ] * B ( i ) , i = 1 ..n ) ] , `+ `) ; return C ; end proc ; X : = [0 ,2 ,4 ,7 ,9]; Y : = [2 ,3 ,1 ,3 ,4]; p : = x - > lagr (X , Y ) ; with ( plots ) : F : = plot ( p ( x ) , x = -1 ..10 ) : G : = pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..nops ( X ) ) }) : display ({ F , G }) ; with ( CurveFitting ) : P o l y n o m i a l I n t e r p o l a t i o n (X , Y , z , form = Lagrange ) ; Zadanie 315. Policz wartość wielomianu interpolacyjnego Lagrange’a za pomocą algorytmu Neville’a: −(x−xi )Pi−1,k−1 Pi,k = (x−xi−k )Pi,k−1 , k > 0, xi −xi−k Pi,0 = f(xi ). 1 2 3 4 5 neville : = proc (i , k ) global x ,X , Y ; if ( k = 0) then return Y [ i + 1]; else 63 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 6 7 8 9 10 return (( x -X [ i -k + 1]) * neville (i , k - 1) -( x -X [ i + 1]) * neville ( i -1 , k - 1) ) / ( X [ i + 1] -X [ i -k + 1]) ; fi ; end proc ; x : = 2; X : = [0 ,1 ,3 ,4]; Y : = [1 ,3 ,2 ,1]; neville (3 ,2) ; Zadanie 316. cie: 1 2 3 4 5 6 7 8 9 10 30 stycznia 2013 Zaimplementuj algorytm Newtona znajdowania wartości wielomianu interpolacyjnego w danym punkN(x) = [y0 ] + [y0 , y1 ](x − x0 ) + · · · + [y0 , . . . , yk ](x − x0 )(x − x1 ) · · · (x − xn−1 ), [yν ] := yν , ν ∈ {0, . . . , n − 1}, [y ,...,yν+j ]−[yν ,...,yν+j−1 ] [yν , . . . , yν+j ] := ν+1 , xν+j −xν ν ∈ {0, . . . , n − 1 − j}, j ∈ {1, . . . , n − 1}. nev : = proc (i , k ) global x ,X , Y ; if ( k = i ) then return Y [ i + 1]; else return ( nev ( i + 1 , k ) - nev (i , k - 1) ) / ( X [ k + 1] -X [ i + 1]) ; fi ; end proc ; x : = 2; X : = [0 ,1 ,3 ,4]; Y : = [1 ,3 ,2 ,1]; n : = nops ( Y ) : convert ([ seq ( nev (0 , k ) * product ( x -X [ j ] , j = 1 ..k ) , k = 0 ..n - 1) ] , `+ `) ; Zadanie 317. Zaimplementuj algorytm znajdowania wielomianu interpolacyjnego Hermite’a. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 her : = proc (i , k ) global x ,X , Y ; if ( X [ k + 1] = X [ i + 1]) then return Y [ i + 1]; else return ( her ( i + 1 , k ) - her (i , k - 1) ) / ( X [ k + 1] -X [ i + 1]) ; fi ; end proc ; # zakladamy , ze c z y n n i k i z o s t a l y j u z odpowiednio p o d z i e l o n e X : = [0 ,1 ,1 ,3]; Y : = [1 ,3 ,2 ,1]; n : = nops ( Y ) : p : = x - > convert ([ seq ( her (0 , k ) * product ( x -X [ j ] , j = 1 ..k ) , k = 0 ..n - 1) ] , `+ `) ; with ( plots ) : F : = plot ( p ( x ) , x = -1 ..5 ) : G : = pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..nops ( X ) ) }) : display ({ F , G }) ; Zadanie 318. Zaimplementuj następujący wzór interpolacyjny Gaussa: G(f)(x) = N X f(xk )ξk (x), gdzie k=0 0 sin x−x 2 · · · sin ξk (x) = 0 sin xk −x · · · sin 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x−xk−1 2 xk −xk−1 2 sin x−x2k+1 · · · sin · k+1 sin xk −x · · · sin 2 x−xN 2 xk −xN . 2 gauss : = proc (X , Y ) local B ,C ,L , n ; n : = nops ( X ) ; if nops ( Y ) < > n then return FAIL ; fi ; L : = (i , j ) - > ` if `( i < > j , sin (( x -X [ j ]) / 2 . ) / sin (( X [ i ] -X [ j ]) / 2 . ) , 1) ; B : = i - > convert ([ seq ( L (i , j ) , j = 1 ..n ) ] , `* `) ; C : = x - > convert ([ seq ( Y [ i ] * B ( i ) , i = 1 ..n ) ] , `+ `) ; return C ( x ) ; end proc ; X : = [0 ,2 ,4 ,7 ,9]; Y : = [2 ,3 ,1 ,3 ,4]; p : = x - > gauss (X , Y ) ; with ( plots ) : F : = plot ( p ( x ) , x = -1 ..10 ) : G : = pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..nops ( X ) ) }) : display ({ F , G }) ; 64 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 319. Napisz procedury realizujące wzory interpolacje Stirlinga, Bessela, Steffensona, Everetta i Gaussa (na podstawie http://mathworld.wolfram.com/). Gauss’s Forward Formula: fp = f0 + pδ1/2 + G2 δ20 + G3 δ31/2 + G4 δ40 + G5 δ51/2 + · · · Gauss’s Backward Formula: fp = f0 + pδ−1/2 + G∗2 δ20 + G3 δ3−1/2 + G∗4 δ40 + G5 δ5−1/2 + · · · Everett’s Formula: fp = (1 − p)f0 + pf1 + E2 δ20 + F2 δ3−1/2 + E4 δ40 + F4 δ5−1/2 + · · · Bessel’s Finite Difference Formula: fp = f0 + pδ1/2 + B2 (δ20 + δ21 ) + B3 δ31/2 + B4 (δ40 + δ41 ) + · · · 1 1 Stirling’s Finite Difference Formula: fp = f0 + p(δ1/2 + δ−1/2 ) + p2 δ20 + S3 (δ31/2 + δ3−1/2 ) + S4 δ20 + · · · 2 2 1 1 Steffenson’s Finite Difference Formula: fp = f0 + p(p+1)δ1/2 − (1−p)pδ−1/2 +(S3 +S4 )δ31/2 +(S3 −S4 )δ−1/2 +· · · 2 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 restart ; with ( plots ) : f : = x - > x ^ 3 -4 * x + 5; n : = 2; X0 : = 1; h : = 1; X : = [ seq ( X0 + i *h , i = - n..n + 1) ]; for i from -n to ( n + 1) by 1 / 2 do Y [ i ] : = f ( X0 + i / 2 . * h ) ; end do ; p : = ( x - X0 ) / h ; G : = proc ( m ) global p ; if is ( m : : even ) then return binomial ( p + m / 2 -1 , m ) ; else return binomial ( p + ( m - 1) / 2 , m ) ; fi ; end proc ; Gstar : = proc ( m ) global p ; if is ( m : : even ) then return binomial ( p + m / 2 , m ) ; else return 0; fi ; end proc ; E : = k - > G ( k ) - G ( k + 1) ; F : = k - > G ( k + 1) ; B : = proc ( m ) global G ; if is ( m : : even ) then return 1 / 2 * G ( m ) ; else return G ( m ) - 1 / 2 * G ( m - 1) ; fi ; end proc ; S : = proc ( m ) global p ; if is ( m : : even ) then return p / m * binomial ( p + ( m - 2) / 2 , m - 1) ; else return 1 / 2 * binomial ( p + ( m - 1) / 2 , m ) ; fi ; end proc ; H : = proc ( m ) # S ( 2 * i + 1 ) +S ( 2 * i + 2 ) return binomial ( p + ( m + 1) / 2 , m + 1) ; end proc ; K : = proc ( m ) # S ( 2 * i + 1 ) -S ( 2 * i + 2 ) return - binomial ( p + ( m - 1) / 2 , m + 1) ; end proc ; CentDiff : = proc (m , k ) global Y ; 65 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 56 57 58 59 60 61 30 stycznia 2013 if k = 1 then return evalf ( Y [ m + 1 / 2] - Y [ m -1 / 2]) ; else return CentDiff ( m + 1 / 2 , k - 1) - CentDiff ( m -1 / 2 , k - 1) ; fi ; end proc ; 62 63 64 65 66 67 68 69 70 71 72 G a u s s F o r w a r d F o r m u l a : = proc () local Gss ; global p , n , G , Y , CentDiff ; Gss : = [ seq ( G ( i ) * CentDiff ( ` if `( is ( i : : even ) ,0 ,1 / 2) , i ) , i = 2 ..n + 1) ]; return Y [0] + p * CentDiff (1 / 2 ,1) + convert ( Gss , `+ `) ; end proc ; gff : = x - > G a u s s F o r w a r d F o r m u l a () ; P : = plot ( gff ( x ) , x = -3 ..7 ) : Q : = pointplot ({ seq ([ X [ i + n + 1] , Y [ i ]] , i = - n..n + 1) }) : display ({ P , Q }) ; 73 74 75 76 77 78 79 80 81 82 83 84 G a u s s B a c k w a r d F o r m u l a : = proc () local Gss ; global p , n , G , Y , CentDiff , Gstar ; Gss : = [ seq ( ` if `( is ( i : : even ) , Gstar ( i ) * CentDiff (0 , i ) , G ( i ) * CentDiff ( -1 / 2 , i ) ) , i = 2 ..n + 1) ]; return Y [0] + p * CentDiff ( -1 / 2 ,1) + convert ( Gss , `+ `) ; end proc ; gbf : = x - > G a u s s B a c k w a r d F o r m u l a () ; P : = plot ( gbf ( x ) , x = -3 ..7 ) : Q : = pointplot ({ seq ([ X [ i + n + 1] , Y [ i ]] , i = - n..n + 1) }) : display ({ P , Q }) ; 85 86 87 88 89 90 91 92 93 94 95 96 Eve rettFo rmula : = proc () local Ett ; global p , n , E , F , Y , CentDiff ; Ett : = [ seq ( ` if `( is ( i : : even ) , E ( i ) * CentDiff (0 , i ) , F ( i - 1) * CentDiff (1 , i - 1) ) , i = 2 ..n + 1) ]; return (1 -p ) * Y [0] + p * Y [1] + convert ( Ett , `+ `) ; end proc ; ef : = x - > Everet tFormu la () ; P : = plot ( ef ( x ) , x = -3 ..7 ) : Q : = pointplot ({ seq ([ X [ i + n + 1] , Y [ i ]] , i = - n..n + 1) }) : display ({ P , Q }) ; 97 98 99 100 101 102 103 104 105 106 107 108 B e s s e l F i n i t e D i f f e r e n c e F o r m u l a : = proc () local Bss ; global p , n , E , F , Y , CentDiff ; Bss : = [ seq ( B ( i ) * ` if `( is ( i : : even ) , CentDiff (0 , i ) + CentDiff (1 , i ) , CentDiff (1 / 2 , i ) ) , i = 2 ..n + 1) ]; return Y [0] + p * CentDiff (1 / 2 ,1) + convert ( Bss , `+ `) ; end proc ; bfdf : = x - > B e s s e l F i n i t e D i f f e r e n c e F o r m u l a () ; P : = plot ( bfdf ( x ) , x = -3 ..7 ) : Q : = pointplot ({ seq ([ X [ i + n + 1] , Y [ i ]] , i = - n..n + 1) }) : display ({ P , Q }) ; 109 110 111 112 113 114 115 116 117 118 119 120 121 S t i r l i n g F i n i t e D i f f e r e n c e F o r m u l a : = proc () local Stg ; global p , n , S , Y , CentDiff ; Stg : = [ seq ( S ( i ) * ` if `( is ( i : : odd ) , CentDiff (1 / 2 , i ) + CentDiff ( -1 / 2 , i ) , CentDiff (0 , i ) ) , i = 3 ..n + 1) ]; return Y [0] + 1 / 2 * p * ( CentDiff (1 / 2 ,1) + CentDiff ( -1 / 2 ,1) ) + 1 / 2 * p ^ 2 * CentDiff (0 ,2) + convert ( Stg , `+ `) ; end proc ; sfdf : = x - > S t i r l i n g F i n i t e D i f f e r e n c e F o r m u l a () ; P : = plot ( sfdf ( x ) , x = -3 ..7 ) : Q : = pointplot ({ seq ([ X [ i + n + 1] , Y [ i ]] , i = - n..n + 1) }) : display ({ P , Q }) ; 122 123 124 125 126 127 128 S t e f f e n s o n F o r m u l a : = proc () local Stn ; global p , n , H , F , Y , CentDiff ; Stn : = [ seq ( H (2 * i + 1) * CentDiff (1 / 2 , 2 * i + 1) + K (2 * i + 1) * CentDiff ( -1 / 2 , 2 * i + 1) , i = 1 ..n / 2) ]; return Y [0] + 1 / 2 * p * ( p + 1) * CentDiff (1 / 2 ,1) - 1 / 2 * p * ( p - 1) * CentDiff ( -1 / 2 ,1) + convert ( Stn , `+ `) ; 66 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 129 130 131 132 133 30 stycznia 2013 end proc ; sf : = x - > S t e f f e n s o n F o r m u l a () ; P : = plot ( sf ( x ) , x = -3 ..7 ) : Q : = pointplot ({ seq ([ X [ i + n + 1] , Y [ i ]] , i = - n..n + 1) }) : display ({ P , Q }) ; Zadanie 320. Napisz procedurę zwracającą szereg Taylora dla funkcji f: f(x) ≈ f(a) + f 0 (a)(x − a) + 1 2 3 4 f 00 (a) f(k) (a) (x − a)2 + · · · + (x − a)k . 2! k! tay : = proc (f ,x ,a , N ) return sum (( D @ @ k ) ( f ) ( a ) * ( x -a ) ^ k / k ! , k = 0 ..N ) ; end proc ; tay ( sin ,x ,0 ,6) ; Zadanie 321. Napisać szereg Fouriera: T 2 an = T T Z2 f(x) cos 2nπ x dx, T n = 0, 1, 2, . . . Z2 2 bn = T −T 2 f(x) sin 2nπ x dx, T n = 1, 2, 3, . . . −T 2 (SN f)(x) = N 2nπ 2nπ a0 X + an cos x + bn sin x , 2 T T N 0. n=1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 with ( linalg ) : fourier : = proc (T , n ) # Okres ' f ' to ' 2 T ' global f ; local A ,B ,C ,F , st , Cos , Sin , S ; A : = k - > 1 / T * evalf ( Int ( f ( t ) * cos ( k * Pi * t / T ) , t = 0 ..2 *T , method = _Gquad ) ) ; B : = k - > 1 / T * evalf ( Int ( f ( t ) * sin ( k * Pi * t / T ) , t = 0 ..2 *T , method = _Gquad ) ) ; C : = [ seq ( A ( m ) , m = 1 ..n ) ]; S : = [ seq ( B ( m ) , m = 1 ..n ) ]; Cos : = [ seq ( cos ( m * Pi * x / T ) , m = 1 ..n ) ]; Sin : = [ seq ( sin ( m * Pi * x / T ) , m = 1 ..n ) ]; st : = A (0) / 2; F : = x - > st + multiply (C , Cos ) + multiply (S , Sin ) ; plot ( F ( x ) , x = -2 * T..2 *T , numpoints = 2000 , color = blue ) ; end proc : sgn : = x - > piecewise ( x > 0 , 1 , x < 0 , -1 , 0) ; f : = x - > sgn ( sin ( x ) ) ; G : = plot ( f ( x ) , x = -2 * Pi..2 * Pi ) : H : = fourier ( Pi ,10) : plots [ display ]({ G , H } , axes = boxed , scaling = constrained , title = ` Szereg Fouriera `) ; f : = x - > x - floor ( x ) ; G : = plot ( f ( x ) , x = -2 ..2 ) : H : = fourier (1 ,10) : plots [ display ]({ G , H } , axes = boxed , scaling = constrained , title = ` Szereg Fouriera `) ; Zadanie 322. Zaimplementuj procedurę rysującą funkcje sklejane. 1 2 3 4 5 6 7 8 9 10 11 12 with ( plots ) : with ( linalg ) : sklejany : = proc (X , Y ) local a ,b ,c ,d ,h ,m , m_sol ,A ,B ,K ,L ,N ,M ,i , x_temp , y_temp ; N : = nops ( X ) ; # przenumerujemy K : = N - 1; x_temp : = array (0 ..K ) ; y_temp : = array (0 ..K ) ; for i from 1 to N do x_temp [ i - 1] : = X [ i ]; end do ; for i from 1 to N do y_temp [ i - 1] : = Y [ i ]; end do ; # d l u g o s c i odcinkow h : = vector (K , i - > x_temp [ i ] - x_temp [ i - 1]) ; 13 14 15 16 # Obliczamy a a : = array (0 ..K ) ; a : = y_temp ; 67 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 17 18 19 20 21 22 23 24 25 26 27 28 29 30 stycznia 2013 # Obliczamy m A : = matrix ( N -2 , N -2 , (j , i ) - > ` if `( j = i -1 , h [ i ] , 0 . ) ) ; A : = evalm ( A & + matrix ( N -2 , N -2 , (i , j ) - > ` if `( j = i -1 , h [ i ] , 0 . ) ) ) ; A : = evalm ( A & + diag ( seq (2 * h [ i - 1] + 2 * h [ i ] , i = 2 ..N - 1) ) ) ; B : = vector ( K -1 , i - > 6 * (( a [ i + 1] - a [ i ]) / h [ i + 1] - ( a [ i ] - a [ i - 1]) / h [ i ]) ) ; m_sol : = linsolve (A , B ) ; m : = vector (N , [0 . , seq ( m_sol [ i ] , i = 1 ..K - 1) , 0 . ]) ; # Obliczamy c c : = vector (K , i - > m [ i + 1] / 2 . ) ; # Obliczamy b b : = vector (K , i - > ( a [ i ] - a [ i - 1]) / h [ i ] + h [ i ] * (2 * m [ i + 1] + m [ i ]) / 6 . ) ; # Obliczamy d d : = vector (K , i - > ( m [ i + 1] - m [ i ]) / (6 . * h [ i ]) ) ; 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 L : = []; for i from 1 to K do L : = [ op ( L ) , Y [ i + 1] + b [ i ] * ( x -X [ i + 1]) + c [ i ] * ( x -X [ i + 1]) ^ 2 + d [ i ] * ( x -X [ i + 1]) ^ 3]; end do ; M : = vector (3 * K + 2) ; for i from 1 to N -1 do M [ i ] : = plot ( L [ i ] , x = X [ i ] ..X [ i + 1]) : end do ; for i from N to 2 * K + 1 do M [ i ] : = plot ([[ x_temp [ i -N ] , 0] ,[ x_temp [ i -N ] , y_temp [ i -N ]]] , color = green ) : end do ; for i from 2 * N to 3 * K + 2 do M [ i ] : = pointplot ([ x_temp [ i -2 * N ] , y_temp [ i -2 * N ]] , color = black , symbol = BOX ) : end do ; # print (L) ; display ({ op ( convert (M , list ) ) }) : # return L ; end proc ; sklejany ([1 ,2 ,3 ,4 ,5 ,6] , [1 ,3 ,4 ,3 ,4 ,2]) ; Zadanie 323. Zaimplementuj algorytm Herona na pierwiastek n-tego stopnia z liczby A. 1 A xk+1 = (n − 1)xk + n−1 n xk 1 2 3 4 5 6 7 8 Nroot : = proc (A ,N , k ) if k = 1 then return 2; else return 1 / N * (( N - 1) * Nroot (A ,N , k - 1) + A / Nroot (A ,N , k - 1) ^ ( N - 1) ) ; fi ; end proc ; Nroot (3 ,4 ,5) ; evalf (%) ; 3 ^ (1 / 4) ; evalf (%) ; Zadanie 324. Zaimplementuj metodę akceleracji zbieżności ciągu Aitkena: pn = xn − xn xn−2 − x2n−1 (xn − xn−1 )2 = . xn−2 − 2xn−1 + xn xn−2 − 2xn−1 + xn Sprawdź ją na „bardzo wolno zbieżnym” ciągu an = 1 2 3 4 5 6 7 8 Pn cos(k) 1 k=1 k k exp(k)+sin(k) . a : = n - > sum ( cos ( i ) / ( i * exp ( i ) + sin ( i ) ) , i = 1 ..n ) ; st : = time () : limit ( a ( n ) , n = infinity ) ; evalf (% ,30) ; print ( " Trwalo " , time () - st ) ; p : = n - > simplify ( a ( n ) - ( a ( n ) - a ( n - 1) ) ^ 2 / ( a ( n - 2) - 2 * a ( n - 1) + a ( n ) ) ) ; st : = time () : limit ( p ( n ) , n = infinity ) ; evalf (% ,30) ; print ( " Trwalo " , time () - st ) ; Zadanie 325. Napisz procedurę, która dla danej funkcji f, liczb rzeczywistych a, b (gdzie a < b) oraz liczby naturalRb nej n wyznaczy przybliżoną wartość całki oznaczonej a f(x) dx przez zastosowanie wzoru Simpsona. Porównaj wynik z otrzymanym przy zastosowaniu polecenia simpson z pakietu student. Kwadratury 68 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zb f(x) dx ≈ a 1 2 3 4 5 6 n/2−1 n/2 X X h f(x0 ) + 2 f(x2j ) + 4 f(x2j−1 ) + f(xn ) 3 j=1 fSimp : = proc (f ,a ,b , n ) # f = f u n k c j a , a= p o c z a t e k , b= k o n i e c , n= l i c z b a local F , h , S , i , x , N ; N : = n * 2; h := (b - a)/N; S := f(a); j=1 przedzialow d l u g o s c i 2h 7 8 9 10 11 for i from 1 to N by 2 do x := a + h*i; S := S + 4*f(x); end do ; 12 13 14 15 16 for i from 2 to N -1 by 2 do x := a + h*i; S := S + 2*f(x); end do ; 17 18 19 S := S + f(b); F : = h * S / 3; 20 21 22 23 24 return F ; end proc ; with ( Student [ Calculus1 ]) : fSimp ( sin ,0 ,5 ,4) , Ap proxim ateInt ( sin ( x ) , x = 0 ..5 , method = simpson ) ; evalf (%) ; Zadanie 326. Zaimplementuj następujące metody prostej kwadratury: Reguła 3/8 Simpsona: b−a (f0 + 3f1 + 3f2 + f3 ) 8 b−a (7f0 + 32f1 + 12f2 + 32f3 + 7f4 ) 90 b−a Reguła Milne’a (krok b−a (2f1 − f2 + 2f3 ) 4 ): 3 b−a (krok b−a (11f1 + f2 + f3 + 11f4 ) 5 ): 24 Reguła Boole’a: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 f : = x - > x ^ 4 + 4 * x ^ 3 - 6 * x ^ 2 - 2; int ( f ( x ) , x = 1 ..5 / 2) ; evalf (%) ; sim38 : = proc (f , a , b ) local x , n , h ; n : = 3; h := (b - a)/n; x : = [ seq ( a + i *h , i = 0 ..n ) ]; return ( b - a ) / 8 * ( f ( x [1]) + 3 * f ( x [2]) + 3 * f ( x [3]) + f ( x [4]) ) ; end proc ; sim38 (f , 1 , 5 / 2) ; evalf (%) ; fBoole : = proc (f , a , b ) local x , n , h ; n : = 4; h := (b - a)/n; x : = [ seq ( a + i *h , i = 0 ..n ) ]; return ( b - a ) / 90 * (7 * f ( x [1]) + 32 * f ( x [2]) + 12 * f ( x [3]) + 32 * f ( x [4]) + 7 * f ( x [5]) ) ; end proc ; fBoole (f , 1 , 5 / 2) ; evalf (%) ; fMilne : = proc (f , a , b ) local x , n , h ; n : = 4; h := (b - a)/n; x : = [ seq ( a + i *h , i = 0 ..n ) ]; return ( b - a ) / 3 * (2 * f ( x [2]) - f ( x [3]) + 2 * f ( x [4]) ) ; end proc ; fMilne (f , 1 , 5 / 2) ; evalf (%) ; fquad : = proc (f , a , b ) local x , n , h ; 69 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 29 30 31 32 33 34 30 stycznia 2013 n : = 5; h := (b - a)/n; x : = [ seq ( a + i *h , i = 0 ..n ) ]; return ( b - a ) / 24 * (11 * f ( x [2]) + f ( x [3]) + f ( x [4]) + 11 * f ( x [5]) ) ; end proc ; fquad (f , 1 , 5 / 2) ; evalf (%) ; Zadanie 327. Napisz własną wersję procedury rightsum. 1 2 3 4 5 prawasuma : = proc (f ,a ,b , n ) return convert ( map (f ,[ seq ( a + ( b -a ) / n *i , i = 1 ..n ) ]) , `+ `) ; end proc ; f : = x - > x ^ k * ln ( x ) ; prawasuma (f ,1 ,3 ,4) ; Zadanie 328. Napisz procedurę na kwadraturę Gaussa i na przykładowych wielomianach sprawdź jego dokładność. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 with ( linalg ) : with ( orthopoly ) : # Kwadratura Gaussa gauss : = proc ( p : : polynom , weight , Poly ) local A ,b ,k ,n ,t , w ; n : = degree ( p ( x ) ) ; if is ( n : : even ) then k : = n / 2 + 1; else k : = ( n + 1) / 2; fi ; t : = [ solve ( Poly (k , x ) = 0 , x ) ]; A : = matrix (k ,k ,( i , j ) - > Poly ( i -1 , t [ j ]) ) ; b : = vector (k ,[ int ( Poly (0 , x ) * Poly (0 , x ) * weight ( x ) , x = -1 ..1 ) , seq (0 , i = 1 ..k - 1) ]) ; w : = linsolve (A , b ) ; return evalf ( sum ( w [ i ] * p ( t [ i ]) , i = 1 ..k ) ) ; end proc ; q : = x - > x + 7 * x ^ 2 - 4 * x ^ 3 - 2 * x ^ 5 + 3 * x ^ 8; w : = x - > 1 / sqrt (1 -x ^ 2) : gauss (q ,w , T ) ; int ( w ( x ) * q ( x ) , x = -1 ..1 ) : evalf (%) ; w : = x - > 1 : gauss (q ,w , P ) ; int ( w ( x ) * q ( x ) , x = -1 ..1 ) : evalf (%) ; w : = x - > exp ( -x ) : gauss (q ,w , L ) ; int ( w ( x ) * q ( x ) , x = 0 ..infinity ) : evalf (%) ; w : = x - > exp ( -x ^ 2) : gauss (q ,w , H ) ; int ( w ( x ) * q ( x ) , x = - i n f i n i t y . . i n f i n i t y ) : evalf (%) ; Zadanie 329. Napisz procedurę na kwadraturę Newtona-Cotesa. 1 2 3 4 5 6 7 8 9 10 11 12 # Newton - C o t e s newcotes : = proc (f ,a ,b , n ) local h ,x ,A ,B , G ; h : = ( b -a ) / n ; x : = seq ( a + k *h , k = 0 ..n ) ; G : = (t ,i , j ) - > ` if `( i < > j , ( t -j ) / ( i -j ) , 1) ; B : = (t , i ) - > convert ([ seq ( G (t ,i , j ) , j = 0 ..n ) ] , `* `) ; A : = i - > h * int ( B (t , i ) , t = 0 ..n ) ; return convert ([ seq ( f ( x [ i + 1]) * A ( i ) , i = 0 ..n ) ] , `+ `) ; end proc ; q : = x - > x + 7 * x ^ 2 - 4 * x ^ 3 - 2 * x ^ 5 + 3 * x ^ 8; newcotes (q , - 1 ,1 ,7) ; evalf (%) ; int ( q ( x ) , x = -1 ..1 ) ; evalf (%) ; Zadanie 330. Napisz procedurę na kwadraturę Eulera-Maclaurina: Zn f(x) dx = 0 1 2 3 4 5 6 7 8 9 10 n−1 X k=1 ∞ X B2k 1 f(2k−1) (n) − f(2k−1) (0) . f(k) + [f(0) + f(n)] − 2 (2k)! k=1 eul ermacl aurin : = proc (f , n , M ) local i , S ; S : = sum ( f ( k ) , k = 1 ..n - 1) ; S : = S + 1 / 2 * ( f (0) + f ( n ) ) ; S : = S - sum ( bernoulli (2 * k ) / (2 * k ) ! * (( D @ @ (2 * k - 1) ) ( f ) ( n ) - ( D @ @ (2 * k - 1) ) ( f ) (0) ) , k = 1 ..M ) ; return S ; end proc ; f : = x - > x ^ 3 -4 * x + 5; int ( f ( x ) , x = 0 ..7 ) ; eul ermacl aurin (f , 7 , 5) ; 70 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 331. Zaimplementować wzór trapezów do przybliżonego liczenia całek. 1 2 3 4 ftrapez : = proc (f ,a ,b , n ) local F , h , S , i , x ; h := (b - a)/n; S : = 0; 5 6 7 8 9 for i from 1 to n -1 do x := a + h*i; S := S + f(x); end do ; 10 11 12 13 14 15 F : = h * S + h * ( f ( a ) + f ( b ) ) / 2; return F ; end proc ; p : = x - > x ^ 2 - 2 * x - 1; int ( p ( x ) , x = -2 ..3 ) ; evalf (%) ; ftrapez (p , -2 , 3 , 500) ; evalf (%) ; Zadanie 332. Zaimplementować wzór trapezów Hermite’a do przybliżonego liczenia całek. 1 2 3 4 fHermite : = proc (f ,a ,b , n ) local F , h , S , i , x ; h := (b - a)/n; S : = f ( a ) / 2; 5 6 7 8 9 for i from 1 to n do x := a + h*i; S := S + f(x); end do ; 10 11 12 13 14 15 16 S : = S + f ( b ) / 2; F : = h * S + h ^ 2 / 12 * ( D ( f ) ( a ) - D ( f ) ( b ) ) ; return F ; end proc ; p : = x - > x ^ 2 - 2 * x - 1; int ( p ( x ) , x = -2 ..3 ) ; evalf (%) ; fHermite (p , -2 , 3 , 500) ; evalf (%) ; Zadanie 333. Zaimplementować metodę Romberga do przybliżonego liczenia całek. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fRomberg : = proc (f ,a ,b , M ) local h , R , S , n , m , x ; h := b - a; R : = array (0 ..M ,0 ..M ) ; R [0 ,0] : = 1 / 2 * h * ( f ( a ) + f ( b ) ) ; for n from 1 to M do h := h/2.; R [n ,0] : = 1 / 2 . * R [ n - 1 ,0] + h * sum ( f ( a + (2 * i - 1) * h ) , i = 1 ..2 ^ ( n - 1) ) ; for m from 1 to n do R [n , m ] : = R [n , m - 1] + ( R [n , m - 1] - R [ n - 1 , m - 1]) / (4 ^ m - 1) ; end do ; end do ; return R [M , M ]; end proc ; p : = x - > x ^ 2 - sqrt (7) * x - 1; int ( p ( x ) , x = -2 ..3 ) ; evalf (%) ; fRomberg (p , -2 , 3 ,100) ; evalf (%) ; Zadanie 334. √Napisać metodę ekstrapolacji Richardsona liczenia pochodnej i zastosuj ją dla funkcji f(x) = arctan(x) w punkcie s = 2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Różniczkowanie numeryczne extRichardson : = proc (f ,s , M ) local D , h , k , n ; h : = 1; D : = array (0 ..M ,0 ..M ) ; for k from 0 to M do D [k , 0] : = ( f ( s + h ) - f ( s -h ) ) / (2 * h ) ; h : = h / 2; end do ; for k from 1 to M do for n from k to M do D [n , k ] : = evalf ( D [n , k - 1] + ( D [n , k - 1] - D [ n - 1 , k - 1]) / (4 ^ k - 1) ) ; end do ; end do ; print ( D ) ; 71 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 15 16 17 18 30 stycznia 2013 return D [M , M ]; end proc ; f : = x - > arctan ( x ) ; s : = sqrt (2) ; M : = 4; extRichardson (f , s , M ) ; D ( f ) ( s ) ; Zadanie 335. Napisz procedury na liczenie przybliżonej wartości pochodnej funkcji f w punkcie x. f 0 (x) ≈ −f(x + 2h) + 8f(x + h) − 8f(x − h) + f(x − 2h) 12h −f(x + 2h) + 16f(x + h) − 30f(x) + 16f(x − h) − f(x − 2h) 12h2 f(x + 2h) − 2f(x + h) + 2f(x − h) − f(x − 2h) f(3) (x) ≈ 2h3 f(x + 2h) − 4f(x + h) + 6f(x) − 4f(x − h) + f(x − 2h) f(4) (x) ≈ h4 f 00 (x) ≈ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 f : = x - > exp ( x ) + x ^ 2 / 2 - sin ( x ) ; d1 : = proc (f , x , h ) local F ; F : = -f ( x + 2 * h ) + 8 * f ( x + h ) - 8 * f ( x -h ) + f ( x -2 * h ) ; return F / (12 * h ) ; end proc ; D ( f ) (0 .5 ) ; d1 (f ,0 .5 ,0 .01 ) ; d2 : = proc (f , x , h ) local F ; F : = -f ( x + 2 * h ) + 16 * f ( x + h ) - 30 * f ( x ) + 16 * f ( x -h ) - f ( x -2 * h ) ; return F / (12 * h ^ 2) ; end proc ; ( D @ @ 2) ( f ) (0 .5 ) ; d2 (f ,0 .5 ,0 .01 ) ; d3 : = proc (f , x , h ) local F ; F : = f ( x + 2 * h ) - 2 * f ( x + h ) + 2 * f ( x -h ) - f ( x -2 * h ) ; return F / (2 * h ^ 3) ; end proc ; ( D @ @ 3) ( f ) (0 .5 ) ; d3 (f ,0 .5 ,0 .1 ) ; d4 : = proc (f , x , h ) local F ; F : = f ( x + 2 * h ) - 4 * f ( x + h ) + 6 * f ( x ) - 4 * f ( x -h ) + f ( x -2 * h ) ; return F / h ^ 4; end proc ; ( D @ @ 4) ( f ) (0 .5 ) ; d4 (f ,0 .5 ,0 .1 ) ; Zadanie 336. Zaimplementuj metodę Eulera do rozwiązywania równania różniczkowego oraz porównaj wynik z prawdziwym rozwiązaniem dla y 0 = y2 − 4xy − 1. Narysuj portret fazowy tego równania. Rozwiązywanie równań różniczkowych yn+1 = yn + hf(tn , yn ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 with ( DEtools ) : eul : = proc (f , y0 ,a ,b , M ) local h , i , x , y ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do y : = [ op ( y ) , evalf ( y [ i ] + h * f ( x [ i ] , y [ i ]) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 200; (X , Y ) : = eul (f ,1 ,0 ,1 , M ) : with ( plots ) : F : = pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) : 72 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 17 18 19 20 21 30 stycznia 2013 ans : = dsolve ({ diff ( g ( x ) ,x ) = g ( x ) ^ 2 - 4 * x * g ( x ) - 1 , g (0) = 1} , numeric , output = operator ) ; G : = odeplot ( ans , x = 0 ..1 ) : display ({ F , G }) ; phaseportrait ( D ( y ) ( x ) = -y ( x ) ^ 2 - 4 * x * y ( x ) - 1 , y ( x ) ,x = -1 ..2.5 ,[[ y (0) = 1]] , colour = grey , linecolor = [ black ]) ; Zadanie 337. Zaimplementuj zmodyfikowaną metodę Eulera numerycznego rozwiązywania równania różniczkowego: 1 1 yn+1 = yn + hf tn + h, yn + hf(tn , yn ) . 2 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 modeuler : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; y : = [ op ( y ) , evalf ( y [ i ] + F2 ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = modeuler (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 338. Zaimplementuj metodę Heuna (Runge-Kutty II rzędu) numerycznego rozwiązywania równania różniczkowego: ỹi+1 = yi + hf(ti , yi ), h yi+1 = yi + f(ti , yi ) + f(ti+1 , ỹi+1 ) . 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 heun : = proc (f , y0 ,a ,b , M ) local h , i , x , y , f_i , F1 , F2 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do f_i : = f ( x [ i ] , y [ i ]) ; F1 : = h * f_i ; F2 : = h * f ( x [ i ] + h , y [ i ] + h * f_i ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 2 * ( F1 + F2 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = heun (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 339. Zaimplementuj algorytm Runge-Kutty III rzędu typu pierwszego numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 1 k2 = hf tn + h, yn + k1 , 2 2 k3 = hf (tn + h, yn − k1 + 2k2 ) , 1 yn+1 = yn + (k1 + 4k2 + k3 ). 6 73 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 30 stycznia 2013 rungekutta31 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + h , y [ i ] - F1 + 2 * F2 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 6 * ( F1 + 4 * F2 + F3 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = rungekutta31 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 340. Zaimplementuj algorytm Runge-Kutty III rzędu typu drugiego numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 k2 = hf tn + h, yn + 3 2 k3 = hf tn + h, yn + 3 1 yn+1 = yn + (k1 + 3k3 ). 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 k1 , 3 2 k2 , 3 rungekutta32 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 3 *h , y [ i ] + 1 / 3 * F1 ) ; F3 : = h * f ( x [ i ] + 2 / 3 *h , y [ i ] + 2 / 3 * F2 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 4 * ( F1 + 3 * F3 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = rungekutta32 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 341. Zaimplementuj algorytm Bogacki’ego-Shampine’a (Runge-Kutty III rzędu) numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 1 k2 = hf tn + h, yn + k1 , 2 2 3 3 k3 = hf tn + h, yn + k2 , 4 4 1 yn+1 = yn + (2k1 + 3k2 + 4k3 ). 9 1 2 3 4 bogacki : = proc (f , y0 ,a ,b , M ) # B o g a c k i – S h a m p i n e method local h , i , x , y , F1 , F2 , F3 ; x : = [ a ]; y : = [ y0 ]; 74 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 30 stycznia 2013 h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + 3 / 4 *h , y [ i ] + 3 / 4 * F2 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 9 * (2 * F1 + 3 * F2 + 4 * F3 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = bogacki (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 342. go. Zaimplementuj algorytm Runge-Kutty IV rzędu numerycznego rozwiązywania równania różniczkowek1 = hf(tn , yn ), 1 k2 = hf tn + h, yn + 2 1 k3 = hf tn + h, yn + 2 1 k1 , 2 1 k2 , 2 k4 = hf(tn + h, yn + k3 ), 1 yn+1 = yn + (k1 + 2k2 + 2k3 + k4 ). 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 rungekutta4 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F2 ) ; F4 : = h * f ( x [ i ] + h , y [ i ] + F3 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 6 * ( F1 + 2 * F2 + 2 * F3 + F4 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = rungekutta4 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 343. Zaimplementuj algorytm Runge-Kutty V rzędu numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 k2 = hf tn + h, yn + 2 1 k3 = hf tn + h, yn + 2 1 k1 , 2 1 1 k1 + k2 , 4 4 k4 = hf(tn + h, yn − k2 + 2k3 ), 2 7 10 1 k5 = hf tn + h, yn + k1 + k2 + k4 , 3 27 27 27 1 28 1 546 54 387 k6 = hf tn + h, yn + k1 − k2 + k3 + k4 − k5 , 5 625 5 625 625 625 1 5 27 125 yn+1 = yn + k1 + k4 + k5 + k6 . 24 48 56 336 75 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 30 stycznia 2013 rungekutta5 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 4 * F1 + 1 / 4 * F2 ) ; F4 : = h * f ( x [ i ] + h , y [ i ] - F2 + 2 * F3 ) ; F5 : = h * f ( x [ i ] + 2 / 3 *h , y [ i ] + 7 / 27 * F1 + 10 / 27 * F2 + 1 / 27 * F4 ) ; F6 : = h * f ( x [ i ] + 1 / 5 *h , y [ i ] + 28 / 625 * F1 - 1 / 5 * F2 + 546 / 625 * F3 + 54 / 625 * F4 - 387 / 625 * F5 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 24 * F1 + 5 / 48 * F4 + 27 / 56 * F5 + 125 / 336 * F6 ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = rungekutta5 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 344. kowego. Zaimplementuj algorytm Runge-Kutty – formuła 3/8 numerycznego rozwiązywania równania różniczk1 = hf(tn , yn ), 1 k2 = hf tn + h, yn + 3 2 k3 = hf tn + h, yn − 3 1 k1 , 3 1 k1 + k2 , 3 k4 = hf(tn + h, yn + k1 − k2 + k3 ), 1 yn+1 = yn + (k1 + 3k2 + 3k3 + k4 ). 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 rungekutta38 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 3 *h , y [ i ] + 1 / 3 * F1 ) ; F3 : = h * f ( x [ i ] + 2 / 3 *h , y [ i ] - 1 / 3 * F1 + F2 ) ; F4 : = h * f ( x [ i ] + h , y [ i ] + F1 - F2 + F3 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 8 * ( F1 + 3 * F2 + 3 * F3 + F4 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = rungekutta38 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 345. Zaimplementuj algorytm England I numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 k2 = hf tn + h, yn + 2 1 k3 = hf tn + h, yn + 2 1 k1 , 2 1 1 k1 + k2 , 4 4 k4 = hf(tn + h, yn − k2 + 2k3 ), 1 yn+1 = yn + (k1 + 4k3 + k4 ). 6 76 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 30 stycznia 2013 englandI : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 4 * F1 + 1 / 4 * F2 ) ; F4 : = h * f ( x [ i ] + h , y [ i ] - F2 + 2 * F3 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 6 * ( F1 + 4 * F3 + F4 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = englandI (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 346. Zaimplementuj algorytm Runge-Kutty-Gilla numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 1 k2 = hf tn + h, yn + k1 , 2 2 ! √ √ 1− 2 2−1 1 k1 + k2 , k3 = hf tn + h, yn + 2 2 2 ! √ √ 2 2+ 2 k4 = hf tn + h, yn − k2 + k3 , 2 2 √ √ 1 yn+1 = yn + k1 + (2 − 2)k2 + (2 + 2)k3 + k4 . 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 run gekutt agill : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * ( sqrt (2) - 1) * F1 + 1 / 2 * (2 - sqrt (2) ) * F2 ) ; F4 : = h * f ( x [ i ] , y [ i ] - 1 / 2 * sqrt (2) * F2 + 1 / 2 * (2 + sqrt (2) ) * F3 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 6 * ( F1 + (2 - sqrt (2) ) * F2 + (2 + sqrt (2) ) * F3 + F4 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = rungek uttagi ll (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; 77 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski Zadanie 347. niczkowego. 30 stycznia 2013 Zaimplementuj algorytm Runge-Kutty-Fehlberga IV rzędu numerycznego rozwiązywania równania różk1 = hf(tn , yn ), 1 1 k2 = hf tn + h, yn + k1 , 4 4 3 3 9 k3 = hf tn + h, yn + k1 + k2 , 8 32 32 12 1932 7200 7296 k4 = hf tn + h, yn + k1 − k2 + k3 , 13 2197 2197 2197 439 3680 845 k4 = hf tn + h, yn + k1 − 8k2 + k3 − k4 , 216 513 4104 1 (2375k1 + 11264k2 + 10985k3 − 4104k4 ) . yn+1 = yn + 20520 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 r un ge k ut ta f eh l4 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 4 *h , y [ i ] + 1 / 4 * F1 ) ; F3 : = h * f ( x [ i ] + 3 / 8 *h , y [ i ] + 3 / 32 * F1 + 9 / 32 * F2 ) ; F4 : = h * f ( x [ i ] + 12 / 13 *h , y [ i ] + 1932 / 2197 * F1 - 7200 / 2197 * F2 + 7296 / 2197 * F3 ) ; F5 : = h * f ( x [ i ] + h , y [ i ] + 439 / 216 * F1 - 8 * F2 + 3680 / 513 * F2 - 845 / 4104 * F4 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 20520 * (2375 * F1 + 11264 * F2 + 10985 * F3 - 4104 * F4 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = r un gek ut ta f eh l4 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 348. Zaimplementuj metodę adaptacyjną Runge-Kutty-Fehlberga numerycznego rozwiązywania równania różniczkowego. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 with ( linalg ) : r u n g e k u t t a f e h l b e r g : = proc (f , y0 ,a ,b ,M , A ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + A [2 ,3] *h , y [ i ] + A [2 ,4] * F1 ) ; F3 : = h * f ( x [ i ] + A [3 ,3] *h , y [ i ] + A [3 ,4] * F1 + A [3 ,5] * F2 ) ; F4 : = h * f ( x [ i ] + A [4 ,3] *h , y [ i ] + A [4 ,4] * F1 + A [4 ,5] * F2 + A [4 ,6] * F3 ) ; F5 : = h * f ( x [ i ] + A [5 ,3] *h , y [ i ] + A [5 ,4] * F1 + A [5 ,5] * F2 + A [5 ,6] * F3 + A [5 ,7] * F4 ) ; F6 : = h * f ( x [ i ] + A [6 ,3] *h , y [ i ] + A [6 ,4] * F1 + A [6 ,5] * F2 + A [6 ,6] * F3 + A [6 ,7] * F4 + A [6 ,8] * F5 ) ; y : = [ op ( y ) , evalf ( y [ i ] + A [1 ,1] * F1 + A [2 ,1] * F2 + A [3 ,1] * F3 + A [4 ,1] * F4 + A [5 ,1] * F5 + A [6 ,1] * F6 ) ]; # y : = [ op ( y ) , e v a l f ( y [ i ] + A [ 1 , 2 ] * F 1 + A [ 2 , 2 ] * F 2 + A [ 3 , 2 ] * F 3 + A [ 4 , 2 ] * F 4 + A [ 5 , 2 ] * F 5 + A [ 6 , 2 ] * F6 ) ] ; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; A : = matrix (6 ,8 ,[16 / 135 ,1 / 360 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 / 4 ,1 / 4 ,0 ,0 ,0 ,0 , 6656 / 12825 , - 128 / 4275 ,3 / 8 ,3 / 32 ,9 / 32 ,0 ,0 ,0 , 28561 / 56430 , - 2197 / 75240 ,12 / 13 ,1932 / 2197 , - 7200 / 2197 ,7296 / 2197 ,0 ,0 , -9 / 50 ,1 / 50 ,1 ,439 / 216 , - 8 ,3680 / 513 , - 845 / 4104 ,0 ,2 / 55 ,2 / 55 ,1 / 2 , -8 / 27 ,2 , - 3544 / 2565 ,1859 / 4104 , - 11 / 40]) : A : = evalm ( mulcol (A , 2 , - 1) ) : A : = evalm ( addcol (A , 1 , 2 , 1) ) : 78 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 26 27 28 29 30 30 stycznia 2013 f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = r u n g ek u t t a f e h l b e r g (f ,1 ,0 ,1 , M , A ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 349. Zaimplementuj algorytm England II numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 k2 = hf tn + h, yn + 2 1 k3 = hf tn + h, yn + 2 1 k1 , 2 1 1 k1 + k2 , 4 4 k4 = hf(tn + h, yn − k2 + 2k3 ), 7 10 1 2 k5 = hf tn + h, yn + k1 + k2 + k4 , 3 27 27 27 1 28 125 546 54 378 k6 = hf tn + h, yn + k1 − k2 + k3 + k4 − k5 , 5 625 625 625 625 625 1 (14k1 + 35k4 + 162k5 + 125k6 ) . yn+1 = yn + 336 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 englandII : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 2 * F1 ) ; F3 : = h * f ( x [ i ] + 1 / 2 *h , y [ i ] + 1 / 4 * F1 + 1 / 4 * F2 ) ; F4 : = h * f ( x [ i ] + h , y [ i ] - F2 + 2 * F3 ) ; F5 : = h * f ( x [ i ] + 2 / 3 *h , y [ i ] + 7 / 27 * F1 + 10 / 27 * F2 + 1 / 27 * F4 ) ; F6 : = h * f ( x [ i ] + 1 / 5 *h , y [ i ] + 28 / 625 * F1 - 125 / 625 * F2 + 546 / 625 * F3 + 54 / 625 * F4 - 378 / 625 * F5 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 336 * (14 * F1 + 35 * F4 + 162 * F5 + 125 * F6 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = englandII (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 350. Zaimplementuj algorytm Kutty-Nyströma numerycznego rozwiązywania równania różniczkowego. k1 = hf(tn , yn ), 1 1 k2 = hf tn + h, yn + k1 , 3 3 2 4 6 k3 = hf tn + h, yn + k1 + k2 , 5 25 25 1 12 15 k4 = hf tn + h, yn + k1 − k2 + k3 , 4 4 4 2 6 90 50 k5 = hf tn + h, yn + k1 + k2 − k3 + 3 81 81 81 6 36 10 4 k6 = hf tn + h, yn + k1 + k2 + k3 + 5 75 75 75 1 (23k1 + 125k3 − 81k5 + 125k6 ) . yn+1 = yn + 192 8 k4 , 81 8 k4 , 75 79 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 30 stycznia 2013 kuttanystrom : = proc (f , y0 ,a ,b , M ) local h , i , x , y , F1 , F2 , F3 , F4 , F5 , F6 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to M do F1 : = h * f ( x [ i ] , y [ i ]) ; F2 : = h * f ( x [ i ] + 1 / 3 *h , y [ i ] + 1 / 3 * F1 ) ; F3 : = h * f ( x [ i ] + 2 / 5 *h , y [ i ] + 4 / 25 * F1 + 6 / 25 * F2 ) ; F4 : = h * f ( x [ i ] + h , y [ i ] + 1 / 4 * F1 - 12 / 4 * F2 + 15 / 4 * F3 ) ; F5 : = h * f ( x [ i ] + 2 / 3 *h , y [ i ] + 6 / 81 * F1 + 90 / 81 * F2 - 50 / 81 * F3 + 8 / 81 * F4 ) ; F6 : = h * f ( x [ i ] + 4 / 5 *h , y [ i ] + 6 / 75 * F1 + 36 / 75 * F2 + 10 / 75 * F3 + 8 / 75 * F4 ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 192 * (23 * F1 + 125 * F3 - 81 * F5 + 125 * F6 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = kuttanystrom (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 351. Zaimplementować metodę Adamsa-Bashfortha 4. rzędu numerycznego rozwiązywania równań różniczkowych zwyczajnych. Uwaga: w metodach wielokrokowych kilka pierwszych kroków trzeba wykonać za pomocą innej metody (np. Eulera). 1387 109 637 251 yn+5 = yn+4 +h 1901 720 f(tn+4 , yn+4 )− 360 f(tn+3 , yn+3 )+ 30 f(tn+2 , yn+2 )− 360 f(tn+1 , yn+1 )+ 720 f(tn , yn ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 a da ms b as hf o rt h4 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , f_i , f_i1 , f_i2 , f_i3 , f_i4 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to 5 do y : = [ op ( y ) , y [ i ] + h * f ( x [ i ] , y [ i ]) ]; x : = [ op ( x ) , a + i * h ]; end do ; for i from 6 to M do f_i : = h * f ( x [ i ] , y [ i ]) ; f_i1 : = h * f ( x [ i - 1] , y [ i - 1]) ; f_i2 : = h * f ( x [ i - 2] , y [ i - 2]) ; f_i3 : = h * f ( x [ i - 3] , y [ i - 3]) ; f_i4 : = h * f ( x [ i - 4] , y [ i - 4]) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 720 * (1901 * f_i - 2774 * f_i1 + 2616 * f_i2 - 1274 * f_i3 + 251 * f_i4 ) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = a da msb as hf o rt h4 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 352. Zaimplementować wzór Adamsa-Bashfortha 2. rzędu numerycznego rozwiązywania równań różniczkowych zwyczajnych. yn+2 = yn+1 + h 23 f(tn+1 , yn+1 ) − 21 f(tn , yn ) 1 2 3 4 5 6 7 8 9 10 11 12 a da ms b as hf o rt h2 : = proc (f , y0 ,a ,b , M ) local h , i , x , y , f_i , f_i1 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; for i from 1 to 2 do y : = [ op ( y ) , evalf ( y [ i ] + h * f ( x [ i ] , y [ i ]) ) ]; x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; for i from 3 to M do f_i : = h * f ( x [ i ] , y [ i ]) ; f_i1 : = h * f ( x [ i - 1] , y [ i - 1]) ; y : = [ op ( y ) , evalf ( y [ i ] + 3 / 2 * f_i - 1 / 2 * f_i1 ) ]; 80 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 13 14 15 16 17 18 19 20 21 x : = [ op ( x ) , evalf ( a + i * h ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 200; (X , Y ) : = a da msb as hf o rt h2 (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M ) }) ; Zadanie 353. zwyczajnych. Zaimplementować metodę Adamsa-Moultona numerycznego rozwiązywania równań różniczkowych yn+4 = yn+3 + h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 646 264 106 19 251 720 f(tn+4 , yn+4 ) + 720 f(tn+3 , yn+3 ) − 720 f(tn+2 , yn+2 ) + 720 f(tn+1 , yn+1 ) − 720 f(tn , yn ) adamsmoulton : = proc (f , y0 ,a ,b , M ) local h , i , x , y , f_ii , f_i , f_i1 , f_i2 , f_i3 , f_i4 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; x : = linalg [ vector ]( M + 1 , i - > evalf ( a + i * h ) ) ; for i from 1 to 4 do y : = [ op ( y ) , evalf ( y [ i ] + h * f ( x [ i ] , y [ i ]) ) ]; end do ; for i from 5 to M do f_i : = h * f ( x [ i ] , y [ i ]) ; f_i1 : = h * f ( x [ i - 1] , y [ i - 1]) ; f_i2 : = h * f ( x [ i - 2] , y [ i - 2]) ; f_i3 : = h * f ( x [ i - 3] , y [ i - 3]) ; f_i4 : = h * f ( x [ i - 4] , y [ i - 4]) ; # predyktor -korektor f_ii : = h * f ( x [ i + 1] , evalf ( y [ i ] + 1 / 720 * (1901 * f_i - 2774 * f_i1 + 2616 * f_i2 - 1274 * f_i3 + 251 * f_i4 ) ) ) ; y : = [ op ( y ) , evalf ( y [ i ] + 1 / 720 * (251 * f_ii + 646 * f_i - 264 * f_i1 + 106 * f_i2 - 19 * f_i3 ) ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = adamsmoulton (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M - 2) }) ; Zadanie 354. 1 30 stycznia 2013 Zaimplementować metodę Milne’a numerycznego rozwiązywania równań różniczkowych zwyczajnych. ỹn+1 = yn−3 + 4h 3 (2f(tn , yn ) − f(tn−1 , yn−1 ) + 2f(tn−2 , yn−2 )) , h yn+1 = yn + 3 (f(tn+1 , ỹn+1 ) + 4f(tn , yn ) + f(tn−1 , yn−1 )) . milne : = proc (f , y0 ,a ,b , M ) local h , i , x , y , f_i , f_i1 , f_i2 ; x : = [ a ]; y : = [ y0 ]; h : = ( b -a ) / M ; x : = linalg [ vector ]( M + 1 , i - > evalf ( a + i * h ) ) ; for i from 1 to 3 do y : = [ op ( y ) , evalf ( y [ i ] + h * f ( x [ i ] , y [ i ]) ) ]; end do ; for i from 4 to M do f_i : = h * f ( x [ i ] , y [ i ]) ; f_i1 : = h * f ( x [ i - 1] , y [ i - 1]) ; f_i2 : = h * f ( x [ i - 2] , y [ i - 2]) ; f_i3 : = h * f ( x [ i - 3] , y [ i - 3]) ; ffi : = f_i3 + 4 * h / 3 * (2 * f_i - f_i1 + 2 * f_i2 ) ; y : = [ op ( y ) , evalf ( y [ i - 2] + 1 / 3 * ( ffi + 4 * f_i1 + f_i2 ) ) ]; end do ; return x , y ; end proc ; f : = (t , x ) - > x ^ 2 - 4 * t * x - 1; M : = 100; (X , Y ) : = milne (f ,1 ,0 ,1 , M ) : with ( plots ) : pointplot ({ seq ([ X [ i ] , Y [ i ]] , i = 1 ..M - 2) }) ; 81 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 355. Za pomocą algorytmu Verleta zasymulować rzut ciała w polu grawitacyjnym: 1 ~ (t)∆t2 , a 2 ~ (t) + a ~ (t + ∆t) a ~v(t + ∆t) = ~v(t) + ∆t. 2 ~x(t + ∆t) = ~x(t) + ~v(t) ∆t + 1 2 3 4 5 6 7 8 9 10 11 with ( linalg ) : with ( plots ) : x0 : = vector (2 ,[0 . ,1 . ]) ; v0 : = vector (2 ,[1 .0 ,0 .3 ]) ; x : = [ x0 ]; v : = [ v0 ]; dt : = 0 .001 ; m : = 0 .1 ; G : = 0 .01 ; M : = 500 .0 ; force : = r - > - scalarmul (r , G * M * m ) / linalg [ norm ]( r ) ^ 3; for i from 1 to 100 do x : = [ op ( x ) , evalm ( x [ i ] & + scalarmul ( v [ i ] , dt ) & + scalarmul ( force ( x [ i ]) , dt ^ 2 / m ) ) ]; v : = [ op ( v ) , evalm ( v [ i ] & + scalarmul ( force ( x [ i + 1]) & + force ( x [ i ]) , dt / m ) ) ]; end do : pointplot ({ op ( x ) } , color = blue , connect = false ) ; Zadanie 356. Zaimplementuj następującą wersję algorytmu Verleta (algorytm Beemana): 1 4a(t) − a(t − ∆t) ∆t2 + O(∆t4 ), x(t + ∆t) = x(t) + v(t)∆t + 6 1 2a(t + ∆t) + 5a(t) − a(t − ∆t) ∆t + O(∆t3 ). v(t + ∆t) = v(t) + 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 with ( linalg ) : with ( plots ) : x0 : = vector (2 ,[0 . ,1 . ]) ; v0 : = vector (2 ,[1 ,0 .3 ]) ; x : = [ x0 ]; v : = [ v0 ]; dt : = 0 .001 ; m : = 0 .1 ; G : = 0 .01 ; M : = 500 .0 ; force : = r - > - scalarmul (r , G * M * m ) / norm ( r ) ^ 2; x : = [ op ( x ) , evalm ( x [1] & + scalarmul ( v [1] , dt ) & + scalarmul ( force ( x [1]) , dt ^ 2 / m ) ) ] : v : = [ op ( v ) , evalm ( v [1] & + scalarmul ( force ( x [2]) & + force ( x [1]) , dt / m ) ) ] : for i from 2 to 200 do x : = [ op ( x ) , evalm ( x [ i ] & + scalarmul ( v [ i ] , dt ) & + scalarmul ( scalarmul ( force ( x [ i ]) ,4 . ) & + scalarmul ( force ( x [ i - 1]) , -1 . ) , dt ^ 2 / (6 . * m ) ) ) ]; v : = [ op ( v ) , evalm ( v [ i ] & + scalarmul ( scalarmul ( force ( x [ i + 1]) ,2 . ) & + scalarmul ( force ( x [ i ]) ,5 . ) & + scalarmul ( force ( x [ i - 1]) , -1 . ) , dt / (6 . * m ) ) ) ]; end do : pointplot ({ op ( x ) } , color = blue , connect = false ) ; Zadanie 357. Rozwiązać numerycznie równanie Newtona ruchu dwóch ciał m 1 2 3 4 5 6 7 d2~r GMm ~r. =− dt2 k~rk3 with ( DEtools ) : with ( plots ) : G : = 0 .1 : M : = 1000 : eqn1 : = diff ( x ( t ) , t$2 ) = -G * M * x ( t ) / sqrt ( x ( t ) ^ 2 + y ( t ) ^ 2) ^ 3; eqn2 : = diff ( y ( t ) , t$2 ) = -G * M * y ( t ) / sqrt ( x ( t ) ^ 2 + y ( t ) ^ 2) ^ 3; ic : = x (0) = 0 , y (0) = 10 , D ( x ) (0) = .1 , D ( y ) (0) = 1 : p : = dsolve ({ eqn1 , eqn2 , ic } , numeric ) ; odeplot (p , [ x ( t ) , y ( t ) , color = orange , style = POINT ] , numpoints = 1000) ; 9 Zadania na dzień Π Zadanie 358. Różne wzory na obliczanie π. (a) wzór Newtona ∞ X k=0 ∞ X k! 2k k!2 π = = ; (2k + 1)!! (2k + 1)! 2 k=0 82 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 evalf ( Pi ,60) ; 2 * sum (2 ^ k * k ! ^ 2 / (2 * k + 1) ! , k = 0 ..infinity ) ; (b) wzór Wallisa ∞ Y n=1 1 30 stycznia 2013 4n2 2 2 4 4 6 6 8 8 4 16 36 64 π = · · · · · · · ··· = · · · ··· = ; 2 4n − 1 1 3 3 5 5 7 7 9 3 15 35 63 2 product (4 * n ^ 2 / (4 * n ^ 2 - 1) , n = 1 ..infinity ) ; (c) wzór Vieta 1 2 3 q p p √ √ 2+ 2+ 2 2 2+ 2 2 · · · ··· = ; 2 2 2 π √ G : = n - > sqrt (2 + ` if `( n >1 , G ( n - 1) , 0) ) ; V : = n - > product ( G ( k ) / 2 , k = 1 ..n ) ; V (100) : evalf (2 / % ,40) ; (d) algorytm Chudnovsky’ego 12 1 ∞ X (−1)k (6k)!(13591409 + 545140134k) 1 = ; 3 3k+3/2 π (3k)!(k!) 640320 k=0 Z : = 12 * sum (( - 1) ^ k * (6 * k ) ! * (13591409 + 545140134 * k ) / ((3 * k ) ! * ( k ! ^ 3) * (640320 ^ ((3 * k + 3) / 2) ) ) , k = 0 ..infinity ) : 1 / Z ; evalf (% ,10) ; (e) wzór Ramanujana √ ∞ 2 2 X (4k)!(1103 + 26390k) 1 = ; 9801 (k!)4 3964k π k=0 1 Z : = 2 * sqrt (2) / 9801 * sum ((4 * k ) ! * (1103 + 26390 * k ) / (( k ! ^ 4) * 396 ^ (4 * k ) ) , k = 0 ..infinity ) : 1 / Z ; evalf (% ,30) ; (f) Cetin Hakimoglu-Brown √ ∞ 3 X ((4k)!)2 (6k)! 127169 1070 131 2 − − + = π; 65 9k+1 (12k)!(2k)! 12k + 1 12k + 5 12k + 7 12k + 11 k=0 1 sqrt (3) / 6 ^ 5 * sum ((((4 * k ) ! ) ^ 2 * (6 * k ) ! / (9 ^ ( k + 1) * (12 * k ) ! * (2 * k ) ! ) ) * (127169 / (12 * k + 1) - 1070 / (12 * k + 5) - 131 / (12 * k + 7) + 2 / (12 * k + 11) ) , k = 0 ..infinity ) : evalf (% ,30) ; (g) wzór Bailey’a-Borweina-Plouffe’a ∞ X 4 2 1 1 1 − − − = π; 16k 8k + 1 8k + 4 8k + 5 8k + 6 k=0 1 sum (1 / 16 ^ k * (4 / (8 * k + 1) - 2 / (8 * k + 4) - 1 / (8 * k + 5) - 1 / (8 * k + 6) ) , k = 0 ..infinity ) : evalf (% , 30) ; (h) wzór Bellarda ∞ n 1 X (−1) 25 1 28 26 22 22 1 − − + − − − + = π. 26 210n 4n + 1 4n + 3 10n + 1 10n + 3 10n + 5 10n + 7 10n + 9 n=0 1 1 / 2 ^ 6 * sum (( - 1) ^ k / 2 ^ (10 * k ) * ( -2 ^ 5 / (4 * k + 1) - 1 / (4 * k + 3) + 2 ^ 8 / (10 * k + 1) - 2 ^ 6 / (10 * k + 3) - 2 ^ 2 / (10 * k + 5) - 2 ^ 2 / (10 * k + 7) + 1 / (10 * k + 9) ) , k = 0 ..infinity ) : evalf (% , 60) ; 83 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 359. Sprawdź wzory Machina: 1 1 1 1 π = 44 arctan + 7 arctan − 12 arctan + 24 arctan 4 57 239 682 12943 (Kikuo Takano, 1982) π 1 1 1 1 = 12 arctan + 32 arctan − 5 arctan + 12 arctan (Fredrik Carl Mülertz Størmer, 1896) 4 49 57 239 110443 π 1 1 1 = 8 arctan − 4 arctan − arctan (Ernst Meissel) 4 10 515 239 1 1 1 π = 12 arctan + 8 arctan − 5 arctan (Carl Friedrich Gauss) 4 18 57 239 π 1 1 = 4 arctan − arctan (John Machin, 1706) 4 5 239 1 2 3 4 5 4 * (44 * arctan (1 / 57) + 7 * arctan (1 / 239) - 12 * arctan (1 / 682) + 24 * arctan (1 / 12943) ) ; combine (%) ; 4 * (12 * arctan (1 / 49) + 32 * arctan (1 / 57) - 5 * arctan (1 / 239) + 12 * arctan (1 / 110443) ) ; combine (%) ; 4 * (8 * arctan (1 / 10) - 4 * arctan (1 / 515) - arctan (1 / 239) ) ; combine (%) ; # M e i s s e l 4 * (12 * arctan (1 / 18) + 8 * arctan (1 / 57) - 5 * arctan (1 / 239) ) ; combine (%) ; 4 * (4 * arctan (1 / 5) - arctan (1 / 239) ) ; combine (%) ; Zadanie 360. Sprawdź, że: π 1 1 1 = 12 arctan + 4 arctan + 4 arctan 4 4 20 1985 π 1 1 1 = 4 arctan + 4 arctan + 4 arctan 4 4 5 8 1 2 (S. Loney, 1893) (L. von Strassnitzky) 4 * (12 * arctan (1 / 4) + 4 * arctan (1 / 20) + 4 * arctan (1 / 1985) ) ; combine (%) ; 4 * (4 * arctan (1 / 2) + 4 * arctan (1 / 5) + 4 * arctan (1 / 8) ) ; combine (%) ; Zadanie 361. Zaimplementuj znane algorytmy iteracyjne na π. (a) algorytm Borchardta-Pfaffa √ a0 = 2 3, b0 = 3, n bn an+1 = a2a , √n +bn bn+1 = an bn , an → π. 1 2 3 4 5 6 7 Borc hardtP faff : = proc (a , b ) local A , B ; A : = n - > piecewise ( n >= 1 , 2 * A ( n - 1) * B ( n - 1) / ( A ( n - 1) + B ( n - 1) ) , a ) ; B : = n - > piecewise ( n >= 1 , sqrt ( A ( n ) * B ( n - 1) ) , b ) ; print ( seq ( evalf ( A ( k ) ,60) , k = 0 ..7 ) ) ; end proc ; Borc hardtP faff (2 * sqrt (3) ,3) ; (b) algorytm Brenta-Salamina 1 1 a0 = 1, b0 = √ , t0 = , p0 = 1, 4 2 an +bn an+1 = , √ 2 b = an bn , n+1 tn+1 = tn − pn (an − an+1 )2 , pn+1 = 2pn , π≈ (an + bn )2 . 4tn 84 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 30 stycznia 2013 BrentSalamin : = proc (a ,b ,c , d ) local A ,B ,C , D ; A : = n - > piecewise ( n >= 1 , ( A ( n - 1) + B ( n - 1) ) / 2 , a ) ; B : = n - > piecewise ( n >= 1 , sqrt ( A ( n - 1) * B ( n - 1) ) , b ) ; C : = n - > piecewise ( n >= 1 , 2 * C ( n - 1) , c ) ; D : = n - > piecewise ( n >= 1 , D ( n - 1) - C ( n - 1) * ( A ( n - 1) - A ( n ) ) ^ 2 , d ) ; print ( seq ( evalf (( A ( k ) + B ( k ) ) ^ 2 / (4 * D ( k ) ) ,60) , k = 0 ..6 ) ) ; end proc ; BrentSalamin (1 ,1 / sqrt (2) ,1 ,1 / 4) ; (c) algorytm Borweina-Borweina √ √ 1 x0 = 2, y1 = 2 4 , π0 = 2 + 2, xn = 1 (x1/2 + x−1/2 ), n−1 2 n−1 yn 1/2 = πn = πn−1 1 2 3 4 5 6 7 8 10 −1/2 yn−1 xn−1 +xn−1 yn−1 +1 , xn + 1 . yn + 1 Borw einBor wein : = proc (a ,b , c ) local A ,B , C ; A : = n - > piecewise ( n >= 1 , ( sqrt ( A ( n - 1) ) + 1 / sqrt ( A ( n - 1) ) ) / 2 , a ) ; B : = n - > piecewise ( n >= 2 , ( B ( n - 1) * sqrt ( A ( n - 1) ) + 1 / sqrt ( A ( n - 1) ) ) / (1 + B ( n - 1) ) , b ) ; C : = n - > piecewise ( n >= 1 , C ( n - 1) * ( A ( n ) + 1) / ( B ( n ) + 1) , c ) ; print ( seq ( evalf ( C ( k ) ,100) , k = 0 ..6 ) ) ; end proc ; Borw einBor wein ( sqrt (2) , 2 ^ (1 / 4) , 2 + sqrt (2) ) ; Równania różniczkowe Almost everything that distinguishes the modern world from earlier centuries is attibutable to science, which achieved its most spectacular triumphs in the seventeenth century. — Bertrand Russell, History of Western Philosophy Równania różniczkowe zwyczajne Zadanie 362. Rozwiąż równania różniczkowe zwyczajne (a) 1 2 df dx (x) 2 = f(x) + 4x − 3 , (b) y 0 − sin(x) 3 y = −3 sin(x)y4 . ax : = diff ( f ( x ) ,x ) = ( f ( x ) + 4 * x - 3) ^ 2; dsolve ( ax ) ; bx : = diff ( y ( x ) ,x ) - sin ( x ) / 3 * y ( x ) = -3 * sin ( x ) * y ( x ) ^ 4; dsolve ( bx ) ; Zadanie 363. Użyj Maple do rozwiązania równań różniczkowych: (a) (b) (c) 1 2 3 d dx f(x) d dx f(x) d dx f(x) = f(x) z warunkiem początkowym f(0) = 5; = exp f(x) z warunkami początkowymi f(0) = 0 oraz f 0 (0) = 1; = ln f(x) . ode1 : = diff ( f ( x ) ,x ) = f ( x ) ; ans1 : = dsolve ({ ode1 , f (0) = 5}) ; ode2 : = diff ( f ( x ) ,x ) = E ^ ( f ( x ) ) ; ans2 : = dsolve ({ ode2 , f (0) = 0 , D ( f ) (0) = 1}) ; ode3 : = diff ( f ( x ) ,x ) = ln ( f ( x ) ) ; ans3 : = dsolve ( ode3 ) ; Zadanie 364. Rozwiąż równanie różniczkowe ẏ(t) = y(t) − 2 oraz narysuj rozwiązania dla trzech warunków początkowych: y(0) = 1, y(0) = 2, y(0) = 3. 1 2 3 4 5 6 with ( DEtools ) ; DE : = diff ( y ( t ) ,t ) = y ( t ) - 2; dsolve ( DE , y ( t ) ) ; dsolve ({ DE , y (0) = 1} , y ( t ) ) ; ICs : = [[ y (0) = 1] ,[ y (0) = 2] ,[ y (0) = 3]]; DEplot ( DE , y ( t ) ,t = -1 ..9 , ICs , y = -5 ..5 , linecolor = blue , stepsize = .05 ) ; 85 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 365. Zdefiniuj w Maple funkcję znaku sgn : R → R daną wzorem x > 0, 1, sgn(x) = 0, x = 0, −1, x < 0, a następnie rozwiąż następujące równanie różniczkowe d f(x) = f(x) + x sgn(x). dx Wynik przedstaw w jak najprostszej formie. 1 dsolve ( diff ( f ( x ) ,x ) = ( f ( x ) + x ) * sgn ( x ) ) ; simplify (%) ; Zadanie 366. rozwiązanie. 1 2 3 4 5 Rozwiąż równanie różniczkowe x dy dx − y = dy dx √ 1 + x2 − p 1 + y2 , a następnie sprawdź, że jest to with ( DEtools , odeadvisor ) ; implicit_ode : = x * diff ( y ( x ) ,x ) - y ( x ) = diff ( y ( x ) , x ) * sqrt (1 + x ^ 2) - sqrt (1 + y ( x ) ^ 2) : odeadvisor ( implicit_ode ) ; ans : = dsolve ( implicit_ode ) ; odetest ( ans , implicit_ode ) ; Zadanie 367. Rozwiąż układ równań różniczkowych: 0 x (t) = 5x(t) + y(t), y 0 (t) = −2x(t) + 3y(t), x(0) = −1, y(0) = 1. Wyznacz x(1), y(10). 1 2 ans : = dsolve ({ diff ( x ( t ) ,t ) = 5 * x ( t ) + y ( t ) , diff ( y ( t ) ,t ) = -2 * x ( t ) + 3 * y ( t ) , x (0) = -1 , y (0) = 1} , t ) ; evalf ( subs ( t = 1 , ans ) ) ; evalf ( subs ( t = 10 , ans ) ) ; Zadanie 368. Rozwiąż numerycznie równanie różniczkowe x 0 (t) = 5x2 (t) + t x(0) = −1. Wyznacz x(0.1), x(0.2), x(0.3), . . . , x(1). Narysuj wykres pola generowanego przez równanie oraz wykres krzywej x(t) na przedziale [0, 1]. 1 2 3 4 5 ans : = dsolve ({ diff ( x ( t ) ,t ) = 5 * ( x ( t ) ) ^ 2 + t , x (0) = -1} , numeric ) ; seq ( ans ( s / 10) [2] , s = 1 ..10 ) ; with ( plots ) : odeplot ( ans , t = 0 ..1 ) ; gradplot (5 * x ^ 2 + t , t = -2 ..2 , x = -2 ..2 ) ; Zadanie 369. Policz wronskian dla równania y(4) (x) − y(x) = 94 e−2x . 1 2 3 4 5 rownanie : = diff ( y ( x ) , x$4 ) - y ( x ) = (9 / 4) * exp ( -2 * x ) ; dsolve ( rownanie ) ; baza : = dsolve ( rownanie , output = basis ) ; with ( linalg ) : wronskian ( baza [1] , x ) ; det (%) ; simplify (%) ; Zadanie 370. Narysuj rozwiązania następujących warunków początkowych: (a) x 0 (t) = t − x(t), x(−4) = 4, x(−1) = 2, x(2) = 3, x(1) = 0, x(−2) = −3, x(0) = −3, x(3) = 1, x(4) = 1; (b) y 0 (x) = sin(x − y(x)), y(−4) = 4, y(−1) = 2, y(2) = 3, y(1) = 0, y(−2) = −3; (c) y 0 (x) = −6xy(x), y(0) = −2, y(0) = −1, y(0) = 1, y(0) = 2, y(0.7) = 4; 86 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 (d) y 0 (x) = x2 − y(x) − 2, y(−2.5) = 2, y(−2.5) = −2, y(−1.5) = 2, y(−1.5) = −2, y(0) = 2, y(0) = −2, y(1.5) = 2, y(1.5) = −2, y(2.5) = 2, y(2.5) = −2. 1 2 3 4 5 6 7 8 9 with ( DEtools ) : DEplot ( diff ( x ( t ) ,t ) = t -x ( t ) , x ( t ) , t = -5 ..5 , [[ - 4 ,4] , [ - 1 ,2] , [2 ,3] , [1 ,0] , [ -2 , -3] , [0 , -3] , [3 ,1] , [4 ,1]] , x = -5 ..5 , linecolor = tan ) ; DEplot ( diff ( y ( x ) ,x ) = sin ( x -y ( x ) ) , y ( x ) , x = -5 ..5 , [[ - 4 ,4] , [ - 1 ,2] , [2 ,3] , [1 ,0] , [ -2 , -3] , [0 , - 3] ,[3 ,1] , [4 ,1]] , y = -5 ..5 , linecolor = blue ) ; DEplot ( diff ( y ( x ) ,x ) = -6 * x * y ( x ) , y ( x ) , x = -2 ..2 , [[0 , -2] , [0 , -1] , [ 0 ,1] , [0 ,2] , [0 .7 ,4] , [0 .7 , -4] , [1 .4 ,4] , [1 .4 , -4] , [ -0 .7 ,4] , [ -0 .7 , -4] , [ -1 .4 ,4] , [ -1 .4 , - 4]] , y = -8 ..8 , linecolor = blue ) ; DEplot ( diff ( y ( x ) ,x ) = x ^ 2 -y ( x ) -2 , y ( x ) , x = -3 ..3 , [[ -2 .5 ,2] , [ -2 .5 , -2] , [ -1 .5 ,2] , [ -1 .5 , -2] , [0 ,2] , [0 , -2] , [1 .5 ,2] , [1 .5 , -2] , [2 .5 ,2] , [2 .5 , - 2]] , y = -6 ..6 , linecolor = blue ) ; Zadanie 371. Rozwiąż równanie logistyczne x 0 (t) = x(t) 1 − x(t) , x(0) = α, i sprawdź, że jest ono rozwiązaniem. 1 2 3 4 5 6 logistic : = diff ( x ( t ) ,t ) = x ( t ) * (1 -x ( t ) ) ; initial_cond : = x (0) = alpha ; ans : = dsolve ({ logistic , initial_cond } , x ( t ) ) ; subs ( ans , logistic ) ; normal (%) ; subs ( t = 0 , ans ) ; normal (%) ; Zadanie 372. Rozwiąż problemy: 2 df d f dx2 (x) + 5 dx (x) + 6f(x) = 3x, df (a) dx (0) = −2, f(0) = 1. 1 2 d2 f f(x) dx2 (x) − df (b) dx (0) = 1, f(0) = 1. 1 2 2 df dx (x) + 1 2 f(x) 2 = 0, dsolve ({ diff ( f ( x ) , x$2 ) + 5 * diff ( f ( x ) ,x ) + 6 * f ( x ) = 3} , f (0) = 1 , D ( f ) (0) = - 2) ; dsolve ({ f ( x ) * diff ( f ( x ) , x$2 ) + 1 / 2 * diff ( f ( x ) ,x ) ^ 2 + 1 / 2 * f ( x ) ^ 2 = 0} , f (0) = 1 , D ( f ) (0) = 1) ; Zadanie 373. Znajdź rozwiązanie równania macierzowego X 0 (t) = A(t)X(t), gdzie 1 t2 . A(t) = t 1 Wylicz exp(At). 1 2 with ( DEtools ) : A : = matrix (2 ,2 ,[1 , t ^ 2 ,t ,1]) ; sol : = matrixDE (A , t ) ; with ( linalg ) : exponential (A , t ) ; Zadanie 374. Narysuj portret fazowy równania Van der Pola ẍ − (1 − x2 )ẋ + x = 0. 1 2 3 4 with ( DEtools ) : epsilon : = 1 : phaseportrait ([ D ( x ) ( t ) = y ( t ) , D ( y ) ( t ) = epsilon * (1 -x ( t ) ^ 2) * y ( t ) -x ( t ) ] , [x , y ] , t = - 10 ..40 , {[0 ,2 . ,0]} , x = -3 ..3 , y = -3 ..3 , stepsize = 0 .05 ) ; Zadanie 375. Sprawdź stabilność punktu równowagi (0, 0) dla układu x 0 = x − 3y, y 0 = 3x − y. 1 2 3 4 5 6 7 8 9 10 11 12 Stabilność w sensie Lapunowa f1 : = (x , y ) - > x - 3 * y ; f2 : = (x , y ) - > 3 * x + y ; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[1 , - 3] ,[3 ,1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = x ( t ) - 3 * y ( t ) , diff ( y ( t ) ,t ) = 3 * x ( t ) + y ( t ) } ,{ y ( t ) ,x ( t ) } , t = 2 * Pi..5.25 * Pi , [[ y (0) = 0 , x (0) = -0 .2 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = 0 .2 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; 87 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 376. Sprawdź stabilność punktu równowagi (0, 0) dla układu 0 x = x − 2y − z, y 0 = y − x + z, 0 z = x − z. 1 2 3 4 5 6 7 8 9 10 11 12 13 f1 : = (x , y , z ) - > x - 2 * y - z ; f2 : = (x , y , z ) - > y - x + z ; f3 : = (x , y , z ) - > x - z ; solve ({ f1 (x ,y , z ) = 0 , f2 (x ,y , z ) = 0 , f3 (x ,y , z ) = 0} , {x ,y , z }) ; with ( linalg ) : F : = vector ( [ f1 (x ,y , z ) , f2 (x ,y , z ) , f3 (x ,y , z ) ] ) ; jacobian (F , [x ,y , z ]) ; A : = matrix (3 ,3 ,[[1 , -2 , - 1] ,[ - 1 ,1 ,1] ,[1 ,0 , - 1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = x ( t ) - 2 * y ( t ) - z ( t ) , diff ( y ( t ) ,t ) = y ( t ) - x ( t ) + z ( t ) , diff ( z ( t ) ,t ) = x ( t ) - z ( t ) } ,{ y ( t ) ,x ( t ) ,z ( t ) } , t = 2 * Pi..5.25 * Pi , [[ y (0) = -0 .1 , x (0) = -0 .1 , z (0) = -0 .1 ]] , scene = [t , x ( t ) ,z ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 377. Dla danego równania znajdź wszystkie punkty równowagi oraz sprawdź czy są one stabilne. x 0 = y, y 0 = sin(x + y). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 f1 : = (x , y ) - > y ; f2 : = (x , y ) - > sin ( x + y ) ; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : A : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (A , [x , y ]) ; A : = matrix (2 ,2 ,[[0 ,1] ,[ -1 , - 1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = y ( t ) , diff ( y ( t ) ,t ) = sin ( x ( t ) + y ( t ) ) } ,{ y ( t ) ,x ( t ) } , t = 0 ..4 * Pi , [[ y (0) = 0 , x (0) = 0] ,[ y (0) = 0 , x (0) = 0 .5 ] ,[ y (0) = 0 , x (0) = -0 .2 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; DEplot3d ({ diff ( x ( t ) ,t ) = y ( t ) , diff ( y ( t ) ,t ) = sin ( x ( t ) + y ( t ) ) } ,{ y ( t ) ,x ( t ) } , t = 0 ..4 * Pi , [[ y (0) = 0 , x (0) = 3 .0 ] ,[ y (0) = 0 , x (0) = 3 .5 ] ,[ y (0) = 0 , x (0) = 4 .0 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 378. Dla danego układu równań znajdź wszystkie punkty równowagi oraz sprawdź czy są one stabilne. x 0 = ln(y2 − x), y 0 = x − y − 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 f1 : = (x , y ) - > ln ( y ^ 2 - x ) ; f2 : = (x , y ) - > x - y - 1; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[ - 1 ,4] ,[1 , - 1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = ln ( y ( t ) ^ 2 - x ( t ) ) , diff ( y ( t ) ,t ) = x ( t ) - y ( t ) - 1} , { y ( t ) ,x ( t ) } , t = 0 ..3 * Pi , [[ y (0) = -1 , x (0) = -0 .5 ] ,[ y (0) = -1 , x (0) = -1 .0 ] ,[ y (0) = -1 , x (0) = -1 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; DEplot3d ({ diff ( x ( t ) ,t ) = ln ( y ( t ) ^ 2 - x ( t ) ) , diff ( y ( t ) ,t ) = x ( t ) - y ( t ) - 1} , { y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 2 , x (0) = 3 .5 ] ,[ y (0) = 2 , x (0) = 3 .0 ] ,[ y (0) = 2 , x (0) = 3 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; 88 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 379. Narysuj zachowanie układu dynamicznego generowanego przez poniższe równanie oraz sprawdź stabilność punktu (0, 0). x 0 = −y, y 0 = 2x3 . 1 2 3 4 5 6 7 8 9 10 11 12 f1 : = (x , y ) - > -y ; f2 : = (x , y ) - > 2 * x ^ 3; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[0 , - 1] ,[0 ,0]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = -y ( t ) , diff ( y ( t ) ,t ) = 2 * x ( t ) ^ 3} ,{ y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 0 , x (0) = 0 .5 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = -0 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 380. Narysuj zachowanie układu dynamicznego generowanego przez poniższe równanie oraz sprawdź stabilność punktu (0, 0). x 0 = y, y 0 = − sin(x). 1 2 3 4 5 6 7 8 9 10 11 12 f1 : = (x , y ) - > y ; f2 : = (x , y ) - > - sin ( x ) ; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[0 ,1] ,[ - 1 ,0]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = y ( t ) , diff ( y ( t ) ,t ) = - sin ( x ( t ) ) } ,{ y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 0 , x (0) = -0 .5 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = 0 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 381. Sprawdź stabilność równania wokół punktu stacjonarnego (0, 0). x 0 = y + sin(x), y 0 = x + y. 1 2 3 4 5 6 7 8 9 10 11 12 13 f1 : = (x , y ) - > y + sin ( x ) ; f2 : = (x , y ) - > x + y ; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[1 ,1] ,[1 ,1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = y ( t ) + sin ( x ( t ) ) , diff ( y ( t ) ,t ) = x ( t ) + y ( t ) } , { y ( t ) ,x ( t ) } , t = 3 * Pi..5 * Pi , [[ y (0) = 0 , x (0) = -0 .5 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = 0 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 382. Dla danego układu równań znajdź wszystkie punkty równowagi oraz sprawdź czy są one stabilne. x 0 = y − x2 − x, y 0 = 3x − x2 − y. 1 2 3 4 f1 : = (x , y ) - > y - x ^ 2 - x ; f2 : = (x , y ) - > 3 * x - x ^ 2 - y ; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : 89 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 30 stycznia 2013 F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[ - 1 ,1] ,[3 , - 1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = y ( t ) - x ( t ) ^ 2 - x ( t ) , diff ( y ( t ) ,t ) = 3 * x ( t ) - x ( t ) ^ 2 - y ( t ) } , { y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 0 , x (0) = 0 .5 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = -0 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; A : = matrix (2 ,2 ,[[ - 3 ,1] ,[1 , - 1]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = y ( t ) - x ( t ) ^ 2 - x ( t ) , diff ( y ( t ) ,t ) = 3 * x ( t ) - x ( t ) ^ 2 - y ( t ) } , { y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 2 , x (0) = 0 .5 ] ,[ y (0) = 2 , x (0) = 1 .0 ] ,[ y (0) = 2 , x (0) = 1 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 383. Pokaż stabilność punktu (0, 0) korzystając z funkcji Lapunowa. x 0 = x3 − y, y 0 = x + y3 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 f1 : = (x , y ) - > x ^ 3 - y ; f2 : = (x , y ) - > x + y ^ 3; V : = (x , y ) - > x ^ 2 + y ^ 2; diff ( V (x , y ) ,x ) * f1 (x , y ) + diff ( V (x , y ) ,y ) * f2 (x , y ) ; expand (%) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[0 , - 1] ,[1 ,0]]) ; eigenvalues ( A ) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = x ( t ) ^ 3 - y ( t ) , diff ( y ( t ) ,t ) = x ( t ) + y ( t ) ^ 3} , { y ( t ) ,x ( t ) } , t = 2 * Pi..5.25 * Pi , [[ y (0) = 0 , x (0) = -0 .2 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = 0 .2 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 384. Sprawdź stabilność rozwiązania x(t) = cos(t), y(t) = 2 sin(t) dla układu 2 y x 0 = ln x + 2 sin 2t − 2, y 0 = (4 − x2 ) cos(t) − 2x sin(t)2 − cos(t)3 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 f1 : = (x , y , t ) - > ln ( x + 2 * sin ( t / 2) ^ 2) - y / 2; f2 : = (x , y , t ) - > (4 - x ^ 2) * cos ( t ) - 2 * x * sin ( t ) ^ 2 - cos ( t ) ^ 3; X : = t - > cos ( t ) ; Y : = t - > 2 * sin ( t ) ; diff ( X ( t ) , t ) ; subs ( x = X ( t ) ,y = Y ( t ) , f1 (x ,y , t ) ) ; simplify (%) ; diff ( Y ( t ) , t ) ; subs ( x = X ( t ) ,y = Y ( t ) , f2 (x ,y , t ) ) ; combine (% , trig ) ; # Robimy z a m i a n e z m i e n n y c h i badamy s t a b i l n o s c r o z w i a z a n i a ( 0 , 0 ) X1 : = t - > x ( t ) - cos ( t ) ; Y1 : = t - > y ( t ) - 2 * sin ( t ) ; F1 : = (X , Y ) - > ln (1 + X ) - Y / 2; F2 : = (X , Y ) - > -X ^ 2 * cos ( t ) - 2 * X ; with ( linalg ) : F : = vector ( [ F1 (x , y ) , F2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[1 , -1 / 2] ,[ - 2 ,0]]) ; eigenvalues ( A ) ; x : = 'x ': y : = 'y ': with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = subs ( x = x ( t ) ,y = y ( t ) , f1 (x ,y , t ) ) , diff ( y ( t ) ,t ) = subs ( x = x ( t ) ,y = y ( t ) , f2 (x ,y , t ) ) } ,{ y ( t ) ,x ( t ) } , t = - Pi..5 * Pi ,[[ y ( - Pi ) = 0 , x ( - Pi ) = - 1] ,[ y ( Pi ) = 0 , x ( Pi ) = 1] , [ y ( Pi / 2) = sqrt (2) / 2 , x ( Pi / 2) = sqrt (2) ]] , scene = [t , x ( t ) ,y ( t ) ] , view = [ -5 ..5 , -6 ..6 , - 10 ..10 ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 385. Sprawdź stabilność rozwiązania x(t) = −t2 , y(t) = t w układzie x 0 = y2 − 2ty − 2y − x, y 0 = 2x + 2t2 + exp(2t − 2y). 90 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 30 stycznia 2013 f1 : = (x , y , t ) - > y ^ 2 - 2 * t * y - 2 * y - x ; f2 : = (x , y , t ) - > 2 * x + 2 * t ^ 2 + exp (2 * t - 2 * y ) ; X : = t - > -t ^ 2; Y : = t - > t ; diff ( X ( t ) , t ) ; subs ( x = X ( t ) ,y = Y ( t ) , f1 (x ,y , t ) ) ; diff ( Y ( t ) , t ) ; subs ( x = X ( t ) ,y = Y ( t ) , f2 (x ,y , t ) ) ; X1 : = t - > x + t ^ 2; Y1 : = t - > y - t ; F1 : = (X , Y ) - > Y ^ 2 - X - 2 * Y ; F2 : = (X , Y ) - > 2 * X + exp ( -2 * Y ) - 1; with ( linalg ) : F : = vector ( [ F1 (x , y ) , F2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[ -1 , - 2] ,[2 , - 2]]) ; eigenvalues ( A ) ; x : = 'x ': y : = 'y ': with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = subs ( x = x ( t ) ,y = y ( t ) , f1 (x ,y , t ) ) , diff ( y ( t ) ,t ) = subs ( x = x ( t ) ,y = y ( t ) , f2 (x ,y , t ) ) } ,{ y ( t ) ,x ( t ) } , t = 0 ..4 , [[ y (0) = 0 , x (0) = 0] ,[ y (0 .1 ) = 0 , x (0 .1 ) = 2] ,[ y (0 .1 ) = 0 , x (0 .1 ) = - 2] ,[ y (0 .2 ) = 2 , x (0 .2 ) = 0]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 386. Podaj zakres parametru a ∈ R, dla którego dane układ jest stabilny w punkcie (0, 0). Pokaż przykładową wizualizację rozwiązania. x 0 = ax − 2y + x2 , y 0 = x + y + xy. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 f1 : = (x , y ) - > a * x - 2 * y + x ^ 2; f2 : = (x , y ) - > x + y + x * y ; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[ a , - 2] ,[1 ,1]]) ; eigenvalues ( A ) ; solve (1 / 2 * a + 1 / 2 - 1 / 2 * sqrt ( -2 * a - 7 + a ^ 2) < 0 , a ) ; solve (1 / 2 * a + 1 / 2 + 1 / 2 * sqrt ( -2 * a - 7 + a ^ 2) < 0 , a ) ; solve ( -2 * a - 7 + a ^ 2 > 0 , a ) ; solve ( -2 * a - 7 + a ^ 2 < 0 , a ) ; a : = -1 .5 ; 1 -2 * sqrt (2) ; evalf (%) ; with ( DEtools ) : DEplot3d ({ diff ( x ( t ) ,t ) = a * x ( t ) - 2 * y ( t ) + x ( t ) ^ 2 , diff ( y ( t ) ,t ) = x ( t ) + y ( t ) + x ( t ) * y ( t ) } , { y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 2 , x (0) = 0 .5 ] ,[ y (0) = 2 , x (0) = 1 .0 ] ,[ y (0) = 2 , x (0) = 1 .5 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; Zadanie 387. Podaj zakres parametru a ∈ R, dla którego układ jest stabilny w punkcie (0, 0). x 0 = x + ay + y2 , y 0 = x − 3y − x2 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 f1 : = (x , y ) - > x + a * y + y ^ 2; f2 : = (x , y ) - > x - 3 * y - x ^ 2; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[1 , a ] ,[1 , - 3]]) ; eigenvalues ( A ) ; solve ({ a + 4 > 0 , -1 + sqrt ( a + 4) < 0} , a ) ; solve ({ a + 4 < 0} , a ) ; with ( DEtools ) : a : = -5 : DEplot3d ({ diff ( x ( t ) ,t ) = x ( t ) + a * y ( t ) + y ( t ) ^ 2 , diff ( y ( t ) ,t ) = x ( t ) - 3 * y ( t ) - x ( t ) ^ 2} , { y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 0 , x (0) = -0 .9 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = -0 .4 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; 91 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 388. Podaj zakres parametru a ∈ R, dla którego układ jest stabilny w punkcie (0, 0). Sporządź animację w zależności od parametru a. x 0 = ax + y + x2 , y 0 = x + ay + y2 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 f1 : = (x , y ) - > a * x + y + x ^ 2; f2 : = (x , y ) - > x + a * y + y ^ 2; solve ({ f1 (x , y ) = 0 , f2 (x , y ) = 0} , {x , y }) ; with ( linalg ) : F : = vector ( [ f1 (x , y ) , f2 (x , y ) ] ) ; jacobian (F , [x , y ]) ; A : = matrix (2 ,2 ,[[ a ,1] ,[1 , a ]]) ; eigenvalues ( A ) ; solve ({ a + 1 < 0 , a - 1 < 0} , a ) ; with ( DEtools ) : a : = -2 : DEplot3d ({ diff ( x ( t ) ,t ) = a * x ( t ) + y ( t ) + x ( t ) ^ 2 , diff ( y ( t ) ,t ) = x ( t ) + a * y ( t ) + y ( t ) ^ 2} , { y ( t ) ,x ( t ) } , t = 0 ..5 * Pi , [[ y (0) = 0 , x (0) = -0 .9 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = -0 .4 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) ; with ( plots ) : Lapunow : = proc ( a ) return DEplot3d ({ diff ( x ( t ) ,t ) = a * x ( t ) + y ( t ) + x ( t ) ^ 2 , diff ( y ( t ) ,t ) = x ( t ) + a * y ( t ) + y ( t ) ^ 2} ,{ y ( t ) ,x ( t ) } , t = 0 ..6 , [[ y (0) = 0 , x (0) = -0 .9 ] ,[ y (0) = 0 , x (0) = 0 .0 ] ,[ y (0) = 0 , x (0) = -0 .4 ]] , scene = [t , x ( t ) ,y ( t ) ] , stepsize = 0 .1 , linecolor = cos ( t ) ) end : animate ( Lapunow , [ theta ] , theta = - 10 .. -1 , axes = boxed ) ; Zadanie 389. Wykaż, że funkcja określona wzorem √ 2 2 f(x, y) = e x +y Równania różniczkowe cząstkowe spełnia poniższe równanie różniczkowe cząstkowe ∂u ∂x 2 + ∂u ∂y 2 = u2 . Narysuj wykres tej funkcji na zbiorze [−4, 4] × [−4, 4]. 1 2 3 f : = (x , y ) - > E ^ sqrt ( x ^ 2 + y ^ 2) ; is ( diff ( f (x , y ) , x ) ^ 2 + diff ( f (x , y ) , y ) ^ 2 = f (x , y ) ^ 2) ; plot3d ( f (x , y ) , x = -4 ..4 , y = -4 ..4 ) ; Zadanie 390. Pokazać, że z(x, y) = xα f( yx ) jest rozwiązaniem cząstkowego równania różniczkowego x 1 ∂z ∂z +y = αz. ∂x ∂y z : = (x , y ) - > x ^ ( alpha ) * f ( y / x ) ; x * diff ( z (x , y ) , x ) + y * diff ( z (x , y ) , y ) ; simplify (%) ; Zadanie 391. Rozwiąż następujące równanie ciepła ut = uxx , dla 0 ¬ x ¬ 1, 0 < t, u(0, t) = u(1, t) = 0, u(x, 0) = x2 (1 − x2 ). Rozwiązanie ma postać u(x, t) = ∞ X 2 ck e−k π2 t sin(kπx), k=1 gdzie R1 ck = f(x) sin(kπx) dx . R1 2 sin (kπx) dx 0 0 92 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 30 stycznia 2013 fsin : = proc ( f ) local k ; global x , ck ; ck : = 2 * int ( f * sin ( k * Pi * x ) , x = 0 ..1 ) ; if has ( ck , int ) then ERROR ( ' Blad ! ') ; else ck : = subs ( sin ( k * Pi ) = 0 , cos ( k * Pi ) = ( - 1) ^k , ck ) ; ck : = unapply ( collect ( ck , k , factor ) , k ) ; n - > convert ([ seq ( ck ( k ) * sin ( k * Pi * x ) , k = 1 ..n ) ] , `+ `) ; fi ; end proc ; fsin ( x ^ 2 * (1 -x ^ 2) ) ; g := %: g (5) ; plot ( g (5) , x = 0 ..1 ) ; # fenomen Gibbsa c : = fsin ( cos ( x ) ) ; c (5) ; plot (% - cos ( x ) , x = 0 ..1 ) ; Zadanie 392. Kawa w filiżance po trzech minutach od momentu zalania wrzątkiem ma temperaturę 90◦ C. Wyznaczyć czas, po którym kawa osiągnie temperaturę 36.8◦ C, jeśli temperatura otoczenia wynosi 22◦ C. Zastosowania równań różniczkowych Wskazówka: Szybkość stygnięcia jest wprost proporcjonalna do różnicy temperatur ciała i otoczenia. 1 2 3 4 5 6 7 8 t0 : = 22; ans : = dsolve ({ diff ( T ( t ) ,t ) = lambda * ( T ( t ) - t0 ) }) ; assign ( ans ) ; T : = unapply ( T ( t ) , t ) ; ann : = solve ({ T (0) = 100 , T (3) = 90} , { _C1 , lambda }) ; assign ( ann ) ; solve ( T ( t ) = 36 .8 , t ) ; plot ( T ( t ) , t = 0 ..50 ) ; Graficzna reprezentacja rozwiązań Zadanie 393. Narysuj portret fazowy równania y 0 (x) = −y(x) − x2 oraz rozwiąż graficznie trzy problemy początkowe: y(0) = 0, y(0) = 1, y(0) = −1. 1 2 3 with ( DEtools ) : phaseportrait ( D ( y ) ( x ) = -y ( x ) -x ^ 2 , y ( x ) ,x = -1 ..2.5 ,[[ y (0) = 0] ,[ y (0) = 1] ,[ y (0) = - 1]] , title = ` Asymptotic solution ` , colour = grey , linecolor = [ gold , yellow , black ]) ; Zadanie 394. Naszkicować warunek początkowy: u(x, y) = 2 + cos(x), −4 < x < 4 dla równania y 1 2 3 4 ∂u(x, y) ∂u(x, y) − = 0. ∂x ∂y with ( PDEtools ) : rownanie : = y * diff ( u (x , y ) ,x ) - diff ( u (x , y ) ,y ) = 0; rozw : = pdsolve ( rownanie ) ; PDEplot ( rownanie , [t ,0 ,2 + cos ( t ) ] , t = -4 ..4 , numchar = 15 , basechar = true , orientation = [75 ,55] , numsteps = [30 ,30] , stepsize = .1 ) ; Zadanie 395. Narysuj pole wektorowe generowane przez równanie Lotki-Volterry. x 0 (t) = x(t) 1 − y(t) , y 0 (t) = 0.3 · y(t) x(t) − 1 . 1 2 3 dfieldplot ([ diff ( x ( t ) ,t ) = x ( t ) * (1 -y ( t ) ) , diff ( y ( t ) ,t ) = .3 * y ( t ) * ( x ( t ) - 1) ] , [ x ( t ) ,y ( t ) ] , t = -2 ..2 , x = -1 ..2 , y = -1 ..2 , arrows = LARGE , title = ` Lotka - Volterra model ` , color = [ .3 * y ( t ) * ( x ( t ) - 1) ,x ( t ) * (1 -y ( t ) ) , .01 * y ( t ) ]) ; 93 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 396. Narysuj rozwiązanie układu równań Lorentza 0 x (t) = 10 y(t) − x(t) , y 0 (t) = x(t) 28 − z(t) − y(t), 0 z (t) = − 83 z(t) + x(t)y(t). 1 2 3 DEtools [ DEplot3d ]({ diff ( x ( t ) ,t ) = 10 * ( y ( t ) -x ( t ) ) , diff ( y ( t ) ,t ) = x ( t ) * (28 -z ( t ) ) - y ( t ) , diff ( z ( t ) ,t ) = -8 / 3 * z ( t ) + x ( t ) * y ( t ) } , { x ( t ) , y ( t ) , z ( t ) } , t = 0 ..100 , stepsize = .01 , scene = [ x ( t ) ,y ( t ) ,z ( t ) ] , [[ x (0) = 0 , y (0) = 1 , z (0) = 0]] , linecolor = orange , thickness = 1) ; 11 Grafika w Maple I keep the subject constantly before me and wait till the first dawnings open little by little into the full light. — Isaac Newton Zadanie 397. Wyrysuj krzywą daną w postaci parametrycznej: x(t) = 16 sin(t)3 , 1 Proste wykresy y(t) = 13 cos(t) − 5 cos(2t) − 2 cos(3t) − cos(4t). plot ([16 * sin ( t ) ^ 3 , 13 * cos ( t ) - 5 * cos (2 * t ) - 2 * cos (3 * t ) - cos (4 * t ) , t = -2 * Pi..2 * Pi ]) ; Zadanie 398. Narysuj krzywe zadane w postaci parametrycznej: (a) x(θ) = 1 − cos(θ) cos(θ), y(θ) = 1 − cos(θ) sin(θ), 0 ¬ θ ¬ 2π; (b) x(θ) = 2 sin(3θ) cos(θ), y(θ) = 2 sin(3θ) sin(θ), 0 ¬ θ ¬ π. 1 2 plot ([(1 - cos ( theta ) ) * cos ( theta ) ,(1 - cos ( theta ) ) * sin ( theta ) , theta = 0 ..2 * Pi ]) ; plot ([2 * sin (3 * theta ) * cos ( theta ) ,2 * sin (3 * theta ) * sin ( theta ) , theta = 0 ..Pi ]) ; Zadanie 399. Wyrysuj krzywą daną w postaci uwikłanej: (x2 + y2 − 1)3 − x2 y3 = 0. 1 2 with ( plots ) : implicitplot (( x ^ 2 + y ^ 2 - 1) ^ 3 - x ^ 2 * y ^ 3 = 0 , x = -2 ..2 , y = -2 ..2 , numpoints = 100000) ; Zadanie 400. Narysuj następujący zbiór: {(x, y) ∈ R2 | x4 + y4 = 34 }. 1 2 with ( plots ) : implicitplot ( x ^ 4 + y ^ 4 = 3 / 4 , x = -1 ..1 , y = -1 ..1 ) ; Zadanie 401. Narysuj elipsę jako wykres funkcji: (a) danej parametrycznie, (b) uwikłanej, (c) zadanej we współrzędnych biegunowych, (d) jako wykres dwóch funkcji y(x). 1 2 3 4 5 6 7 with ( plots ) : a : = 2 : b : = 1 : plot ([ a * cos ( t ) , b * sin ( t ) , t = 0 ..2 * Pi ]) ; implicitplot (( x / a ) ^ 2 + ( y / b ) ^ 2 = 1 , x = -2 ..2 , y = -1 ..1 ) ; plot ([1 / (1 + 1 / 2 * cos ( x ) ) ,x , x = 0 ..2 * Pi ] , coords = polar , thickness = 3) ; plot ([2 * cos ( t ) , sin ( t ) ,t = 0 ..2 * Pi ]) ; F : = plot ( sqrt (1 -( x / 2) ^ 2) , x = -2 ..2 ) : G : = plot ( - sqrt (1 -( x / 2) ^ 2) , x = -2 ..2 ) : display ({ F , G }) ; 94 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 402. Narysuj wykresy krzywych: (a) x2 + y2 = 5, (b) r2 (t) sin(t), r(t) cos(t) , t ∈ [0, π2 ], r(t) = et , (c) t, u cos(t), u sin(t) , t ∈ [0, 2π], u ∈ [0, 1]. 1 2 3 4 with ( plots ) : implicitplot ( x ^ 2 + y ^ 2 = 5 , x = -3 ..3 , y = -3 ..3 ) ; r : = t - > exp ( t ) ; plot ([ r ( t ) ^ 2 * sin ( t ) , r ( t ) * cos ( t ) , t = 0 ..Pi / 2]) ; plot3d ([ t , u * cos ( t ) , u * sin ( t ) ] , u = 0 ..1 , t = 0 ..2 * Pi ) ; Zadanie 403. Narysuj motyle Faya dane w postaci biegunowej: r(θ) = exp cos(θ) − 2 cos(4θ) + sin5 (θ/12). 1 2 3 4 cos(3θ) + cos(13θ) / cos(θ), r(θ) = with ( plots ) : polarplot ((4 * cos (3 * theta ) + cos (13 * theta ) ) / cos ( theta ) , theta = 0 ..2 * Pi ) ; polarplot ( exp ( cos ( theta ) ) - 2 * cos (4 * theta ) + sin ( theta / 12) ^ 5 , theta = 0 ..2 * Pi ) ; 2 2 2 Zadanie 404. Narysuj kontury pół wektorowych: f1 = sin(y − x − 1) + cos(2y − x), f2 = y + sin(x y − 1/x), 2 f3 = sin y + sin(x y − 1/x) . 1 2 3 4 5 6 7 with ( plots ) : f1 : = sin ( y -x ^ 2 - 1) + cos (2 * y ^ 2 - x ) ; contourplot ( f1 , x = -2 ..2 , y = -2 ..2 , grid = [100 , 100] , colour = black ) ; f2 : = y + sin ( x ^ 2 * y - 1 / x ) ; contourplot ( f2 , x = - Pi..Pi , y = - Pi..Pi , grid = [100 , 100] , colour = black ) ; f3 : = sin ( y + sin ( x ^ 2 * y - 1 / x ) ) ; contourplot ( f3 , x = - Pi..Pi , y = - Pi..Pi , grid = [100 , 100] , colour = black ) ; Zadanie 405. Narysuj krzywą zadaną parametrycznie x(t) = cos(3t) cos(t), y(t) = cos(3t) sin(t), 0 ¬ t ¬ π, oraz policz prędkość punktu poruszającego się wzdłuż parametryzacji. Oblicz długość krzywej. 1 2 3 4 5 6 7 8 9 10 11 12 with ( plots ) : xt : = cos (3 * t ) * cos ( t ) ; yt : = cos (3 * t ) * sin ( t ) ; tees : = t = 0 ..Pi ; curve : = plot ([ xt , yt , tees ] , thickness = 3 , color = blue , tickmarks = [3 ,3] , view = [ -1 .2..1.2 , -1 .2..1.2 ]) : curve ; # Predkosc vx : = diff ( xt , t ) ; vy : = diff ( yt , t ) ; sp : = sqrt ( vx ^ 2 + vy ^ 2) ; simplify (%) ; plot ( sp , tees , view = [0 ..Pi ,0 ..3 ] , labels = [ `t ` , ` predkosc ` ]) ; # Dlugosc int ( sp , tees ) ; Zadanie 406. Narysuj krzywą zadaną parametrycznie: x(t) = cos(3t), y(t) = sin(2t), 0 ¬ t ¬ 2π; policz prędkość i przyspieszenie punktu poruszającego się wzdłuż krzywej po parametryzacji. 1 2 3 4 5 6 7 8 9 with ( plots ) : xt : = cos (3 * t ) ; yt : = sin (2 * t ) ; tees : = t = 0 ..2 * Pi ; curve : = plot ([ xt , yt , tees ] , thickness = 3 , color = blue , tickmarks = [3 ,3] , view = [ -1 .2..1.2 , -1 .2..1.2 ]) : curve ; # Predkosc i p r z y s p i e s z e n i e vx : = diff ( xt , t ) ; vy : = diff ( yt , t ) ; sp : = sqrt ( vx ^ 2 + vy ^ 2) ; ax : = diff ( vx , t ) ; ay : = diff ( vy , t ) ; Zadanie 407. Narysuj powierzchnię daną parametrycznie x(s, t) = 7 + (2 + t/3) cos(s) cos(t), y(s, t) = 7 + (2 + t/3) cos(s) sin(t), z(s, t) = (2 + t/3) sin(s), 0 ¬ s ¬ 2π, 0 ¬ t ¬ 5/2π. 1 2 3 4 5 6 7 snake1 : = plot3d ([(7 + (2 + t / 3) * cos ( s ) ) * cos ( t ) , (7 + (2 + t / 3) * cos ( s ) ) * sin ( t ) , (2 + t / 3) * sin ( s ) ] , s = 0 ..2 * Pi , t = 0 ..5 / 2 * Pi , style = patchnogrid , axes = none , color = COLOR ( RGB ,0 , t / 8 ,1 -t / 8) , orientation = [151 ,35] , lightmodel = light2 ) : display ( snake1 ) ; 95 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 408. Sprawdź czy podane płaszczyzny są prostopadłe x − 3y + 3z − 4 = 0, 1 2 3 Geometria analityczna 3x + y − z − 3 = 0. with ( linalg ) : v : = vector (3 ,[1 , - 3 ,3]) : w : = vector (3 ,[3 ,1 , - 1]) : innerprod (v , w ) ; Zadanie 409. Znaleźć równanie płaszczyzny przechodzącej przez punkty [1, 3, 4], [5, 1, 3], [−1, 1, 2]. 1 2 3 with ( geom3d ) : point (a ,1 ,3 ,4) : point (b ,5 ,1 ,3) : point (c , - 1 ,1 ,2) : plane (p , [a ,b , c ]) : geom3d [ Equation ]( p , [x ,y , z ]) ; Zadanie 410. Znajdź pole trójkąta o bokach: A = (1, 3, −2), B = (2, 4, 0), C = (−2, 1, 1). Następnie znajdź równanie płaszczyzny przechodzącej przez A, B, C. 1 2 3 4 5 AB : = B - A ; AC : = C - A ; N : = linalg [ crossprod ]( AB , AC ) ; area : = sqrt ( dotprod (N , N ) ) / 2; dotprod (N ,[ x ,y , z ]) = dotprod (N , A ) ; z : = solve (% , z ) ; Zadanie 411. Znajdź pole powierzchni i kąty wewnętrzne trójkąta wyznaczonego przez punkty A = (8.9, 1.2, 0.0), B = (1.2, 8.9, 0.0), C = (0.0, 1.2, 6.7). Następnie podaj równanie powierzchni przechodzącej przez te punkty. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 A : = [8 .9 ,1 .2 ,0 .0 ]; B : = [1 .2 ,8 .9 ,0 .0 ]; C : = [0 .0 ,1 .2 ,6 .7 ]; with ( plots ) : polygonplot3d ([ A ,B , C ] , axes = normal , labels = [ 'x ' , 'y ' , 'z '] , style = patch , color = red , scaling = constrained ) ; AB : = B - A ; AC : = C - A ; BC : = C - B ; with ( linalg ) : c : = sqrt ( dotprod ( AB , AB ) ) ; b : = sqrt ( dotprod ( AC , AC ) ) ; a : = sqrt ( dotprod ( BC , BC ) ) ; alpha : = arccos ( dotprod ( AB , AC ) / b / c ) ; beta : = arccos ( - dotprod ( AB , BC ) / c / a ) ; delta : = arccos ( dotprod ( AC , BC ) / a / b ) ; NN : = crossprod ( AB , AC ) ; area : = 1 / 2 * sqrt ( dotprod ( NN , NN , orthogonal ) ) ; N : = evalm ((1 / 2 / area ) * NN ) ; dotprod (N ,[ 'x ' , 'y ' , 'z '] , orthogonal ) = dotprod (N ,A , orthogonal ) ; Zadanie 412. Napisz wzór na obliczanie objętości czworościanu. Zakładamy, że wierzchołki są etykietowane liczbami 1, 2, 3 oraz 4, a ai,j oznacza długość krawędzi łączącej wierzchołek i oraz j. r ∆ V= , 288 gdzie 0 1 ∆ = 1 1 1 1 2 3 4 1 0 a21,2 a21,3 a21,4 1 1 a21,2 0 a22,3 a22,4 a21,3 a22,3 0 a23,4 1 a21,4 a22,4 . a23,4 0 with ( linalg ) : A : = matrix (5 ,5 , [[0 , 1 , 1 , 1 , 1] , [1 , 0 , a [1 ,2] ^ 2 , a [1 ,3] ^ 2 , a [1 ,4] ^ 2] , [1 , a [1 ,2] ^ 2 , 0 , a [2 ,3] ^ 2 , a [2 ,4] ^ 2] , [1 , a [1 ,3] ^ 2 , a [2 ,3] ^ 2 , 0 , a [3 ,4] ^ 2] , [1 , a [1 ,4] ^ 2 , a [2 ,4] ^ 2 , a [3 ,4] ^ 2 , 0]]) ; ( a [1 ,2] , a [1 ,3] , a [1 ,4] , a [2 ,3] , a [2 ,4] , a [3 ,4]) : = (1 , 1 , 1 , 1 , 1 , 1) ; Vol : = sqrt ( det ( A ) / 288) ; 96 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 413. Policz pole trójkąta na płaszczyźnie o wierzchołkach: (1, 2), (2, 3), (−1, 2). x y1 1 1 1 S = x2 y2 1 . 2 x3 y3 1 1 2 3 4 5 6 7 with ( linalg ) : S : = matrix (3 ,3 ,[[ x [1] , y [1] , 1] ,[ x [2] , y [2] , 1] ,[ x [3] , y [3] , 1]]) ; Pole : = 1 / 2 * det ( S ) ; ( x [1] , y [1] , x [2] , y [2] , x [3] , y [3]) : = (1 , 2 , 2 , 3 , -1 , 2) ; Pole ; with ( plots ) : polygonplot ([[1 ,2] ,[2 ,3] ,[ - 1 ,2]] , color = red , axes = boxed ) ; Zadanie 414. Policz pole trójkąta w R3 o wierzchołkach: (1, 0, 1), (2, 4, 2), (0, −1, 3). x1 y1 12 y1 z1 12 z1 x1 12 1 S2 = x2 y2 1 + y2 z2 1 + z2 x2 1 . 4 z3 x3 1 y3 z3 1 x3 y3 1 1 2 3 4 5 6 7 8 9 10 11 12 with ( linalg ) : polepow : = proc (x , y , z ) local S1 , S2 , S3 , Pole ; S1 : = matrix (3 ,3 ,[[ x [1] , y [1] , 1] ,[ x [2] , y [2] , 1] ,[ x [3] , y [3] , 1]]) ; S2 : = matrix (3 ,3 ,[[ y [1] , z [1] , 1] ,[ y [2] , z [2] , 1] ,[ y [3] , z [3] , 1]]) ; S3 : = matrix (3 ,3 ,[[ z [1] , x [1] , 1] ,[ z [2] , x [2] , 1] ,[ z [3] , x [3] , 1]]) ; Pole : = 1 / 2 * sqrt ( det ( S1 ) ^ 2 + det ( S2 ) ^ 2 + det ( S3 ) ^ 2) ; return Pole ; end proc ; polepow ([1 ,0 ,1] ,[2 ,4 ,2] ,[0 , - 1 ,3]) ; with ( plots ) : polygonplot3d ([[1 ,0 ,1] ,[2 ,4 ,2] ,[0 , - 1 ,3]] , color = red , axes = boxed ) ; Zadanie 415. Narysuj bryłę powstałą przez obrót wykresu funkcji f : [2, 5] → R dookoła osi OX, gdzie f(x) = x3 + 3x2 − 5x + 1. 1 2 3 Przegląd różnych pakietów with ( Student [ Calculus1 ]) : f : = x - > x ^ 3 + 3 * x ^ 2 - 5 * x + 1; V o l u m e O f R e v o l u t i o n ( f ( x ) , x = 0 ..35 , output = plot , axis = horizontal ) ; Zadanie 416. Narysuj styczną do wykresu funkcji f : [0, 5] → R danej wzorem: f(x) = x3 + x2 − 3x − 5 w punkcie x = 2 (użyj pakietu student). 1 2 with ( student ) : showtangent ( x ^ 3 + x ^ 2 - 3 * x - 5 , x = 2) ; Zadanie 417. Narysuj wszystkie krzywe stożkowe na jednym układzie współrzędnych – każda krzywa ma być narysowana innym kolorem (użyj pakietu plottools). 1 2 3 4 5 6 with ( plottools ) : with ( plots ) : a : = 2 : b : = 3 : x0 : = 0 : y0 : = 0 : elli : = ellipse ([ x0 , y0 ] , 1 , 1 , filled = true , color = gold ) : hiper : = hyperbola ([ x0 , y0 ] , 1 , 1 , -1 ..1 , color = red ) : parabola : = plot ( x ^ 2 , x = -1 .5..1.5 ) : plots [ display ]({ elli , hiper , parabola } , scaling = constrained ) ; Zadanie 418. Napisz procedurę, która dla podanych 3 punktów (na płaszczyźnie) rysuje na ekranie te punkty oraz okrąg, na którym leżą. 1 2 3 4 5 6 7 8 with ( plottools ) : rysuj : = proc ( L ) local l , f ; geometry [ point ]( a , L [1]) : geometry [ point ]( b , L [2]) : geometry [ point ]( c , L [3]) : geometry [ circle ]( C , [a , b , c ]) : f : = geometry [ draw ]( C ) : l : = seq ( point ( L [ i ] , color = green , symbol = CIRCLE ) , i = 1 ..nops ( L ) ) : plots [ display ]({ f , l } , axes = boxed ) ; 97 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 9 10 11 30 stycznia 2013 end proc ; L : = [[1 ,2] , [4 ,5] , [1 .5 ,7]] : rysuj ( L ) ; Zadanie 419. Narysuj trójkąt równoramienny oraz trapez o dowolnych bokach (użyj polecenie polygonplot). 1 2 3 4 with ( plots ) : display ([ polygonplot ([[0 ,0] ,[0 .3 ,1] ,[0 .7 ,1] ,[1 ,0]]) ] , color = RED ) ; ngon : = n - > [ seq ([ cos (2 * Pi * i / n ) , sin (2 * Pi * i / n ) ] , i = 1 ..n ) ] : display ([ polygonplot ( ngon (3) ) ] , color = BLUE ) ; Zadanie 420. Narysuj wszystkie wielościany foremne (użyj polecenie polyhedraplot). 1 2 3 4 5 6 7 8 9 10 11 12 13 with ( plots ) : L : = [ tetrahedron , octahedron , dodecahedron , icosahedron ]; for pol in L do polyhedraplot ([0 ,0 ,0] , polytype = pol , scaling = CONSTRAINED ) ; end do ; Cube : = proc ( verts ) local a ,b ,c ,d ,e ,f ,g , h ; a : = verts [1]; b : = verts [2]; c : = verts [3]; d : = verts [4]; e : = verts [5]; f : = verts [6]; g : = verts [7]; h : = verts [8]; return ([[ a ,b ,c , d ] ,[a ,b ,f , e ] ,[b ,c ,g , f ] ,[c ,g ,h , d ] ,[d ,a ,e , h ] ,[e ,f ,g , h ]]) ; end : FirstC : = [[ -1 , -1 , -1] , [1 , -1 , -1] , [1 ,1 , -1] , [ -1 ,1 , -1] , [ -1 , - 1 ,1] , [1 , - 1 ,1] , [1 ,1 ,1] , [ - 1 ,1 ,1]] : polygonplot3d ( Cube ( FirstC ) ) ; Zadanie 421. Narysuj symulację ruchu trzech punktów po orbitach kołowych wokół początku układu współrzędnych. 1 2 3 4 5 6 Animacje okrag1 : = plot ([ cos ( t ) , sin ( t ) , t = 0 ..2 * Pi ]) : okrag2 : = plot ([2 * cos ( t ) ,2 * sin ( t ) , t = 0 ..2 * Pi ]) : okrag3 : = plot ([3 * cos ( t ) ,3 * sin ( t ) , t = 0 ..2 * Pi ]) : back : = display ({ okrag1 , okrag2 , okrag3 }) : animate ( pointplot ,[[[ cos ( t ) , sin ( t ) ] ,[2 * cos ( t ) , 2 * sin ( t ) ] ,[3 * cos ( t ) , 3 * sin ( t ) ]] , symbol = circle , symbolsize = 10] , t = 0 ..2 * Pi , frames = 60 , background = back ) ; Zadanie 422. Narysuj animację punktu poruszającego się po sinusoidzie. 1 2 sinewave : = plot ( sin ( x ) , x = 0 ..20 ) : animate ( pointplot ,[[[ t , sin ( t ) ]] , symbol = circle , symbolsize = 10] , t = 0 ..20 , frames = 60 , background = sinewave ) ; Zadanie 423. Stwórz animacje względem parametru a = 0, 1, . . . , 10. (a) f(x) = tan(ax), x ∈ [−0.2π, 0.2π], y ∈ [−50, 50], (b) f(x, y) = 1 2 3 ex , x2 −ya uwzględnij wykres w otoczeniu punktu (1, 1), np. x ∈ [0.9, 0.99], y ∈ [1.01, 1.1]. with ( plots ) : animate ( plot , [ tan ( A * x ) ,x = -0 .2 * Pi..0.2 * Pi , y = - 50 ..50 ] , A = 0 ..10 , frames = 11) ; animate ( plot3d , [ exp ( x ) / ( x ^ 2 - y ^ A ) , x = 0 .9..0.99 , y = 1 .01..1.1 ] , A = 0 ..10 , frames = 11) ; Zadanie 424. Pokazać na rysunku pierwsze przybliżenia w szereg Taylora funkcji sin(x), exp(x), 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 . 1+x2 f : = sin ; a : = Pi / 6; array ([ seq ([ convert ( taylor ( f ( x ) ,x =a , n ) , polynom ) ] , n = 1 ..8 ) ]) ; with ( plots ) : G : = display ([ plot ( f ( x ) , x = - 10 ..10 , y = -2 ..2 ) ]) : H : = display ([ seq ( plot ( convert ( taylor ( f ( x ) ,x =a , n ) , polynom ) , x = - 10 ..10 , -2 ..2 , thickness = 2 , color = [ COLOR ( RGB , n / 20 ,0 .5 ,1 -n / 20) ]) , n = 1 ..20 ) ] , insequence = true ) : display ({ G , H }) ; f : = exp ( x ) ; display ( [ seq ( plot ( [ convert ( taylor (f , x = 0 , k ) , polynom ) ,f ] , x = -6 ..4 , - 20 ..20 , color = [ red , blue , brown , orange ] , numpoints = 300) , k = 1 ..8 ) ] , insequence = true ) ; f : = 1 / (1 + x ^ 2) ; 98 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 15 16 17 18 19 20 30 stycznia 2013 display ( [ seq ( plot ( [ convert ( taylor (f , x = 0 , k ) , polynom ) ,f ] , x = -2 ..2 , -2 ..2 , color = [ red , blue , brown , orange ] , numpoints = 300) , k = [ seq (j , j = 1 ..30 ) ,40 ,50 ,80 ,100]) ] , insequence = true ) ; Zadanie 425. Narysuj przecięcia wzdłuż płaszczyzny równoległej do płaszczyzny zOy powierzchni danej jako q 2 2 s(θ, φ) = 3 cos(φ) + 5 + 4 cos(θ) + 3 sin(φ) + 4 sin(θ) . 1 2 3 4 5 6 7 8 9 10 11 12 OP : = [5 + 4 * cos ( theta ) ,4 * sin ( theta ) ]; OQ : = [ -3 * cos ( phi ) , -3 * sin ( phi ) ]; PQ : = OP - OQ ; s : = sqrt ( PQ [1] ^ 2 + PQ [2] ^ 2) ; plot3d (s , theta = - Pi..Pi , phi = - Pi..Pi , axes = box , style = patchcontour ) ; f : = unapply (s , theta , phi ) ; with ( plots ) : movie : = display ([ seq ( plot ( f ( Pi * k / 30 , phi ) , phi = 0 ..2 * Pi , color = COLOR ( RGB , evalf ( sin ( Pi * k / 60) ) ,0 , evalf (1 - sin ( Pi * k / 60) ) ) , thickness = 3 , view = 0 ..12 ) , k = 0 ..59 ) ] , insequence = true , title = ` Animacja `) : movie ; Zadanie 426. Dana jest elipsa E o ogniskach w punktach (1, 1), (−1, −1) i przechodząca przez punkt (2, −2). Znaleźć prostokąt P o największym polu spełniający następujące warunki: Bardziej wymagające zadanie (a) P ⊆ E, (b) jeden bok prostokąta P leży na prostej y = −x, (c) dwa pozostałe wierzchołki prostokąta leżą na elipsie oraz ich współrzędne (x, y) spełniają warunek y > −x. Rozwiązanie przedstawić graficznie. 1 2 3 4 5 6 7 restart ; with ( geometry ) : _EnvHorizontalName := x: _EnvVerticalName := y: point ( f1 ,[1 ,1]) : point ( f2 ,[ -1 , - 1]) : point (w ,[2 , - 2]) : ellipse ( ell , [ ' foci '= [ f1 , f2 ] , ' distance '= distance ( f1 , w ) + distance (w , f2 ) ] ,[x , y ]) : Eqell : = Equation ( ell ) ; # S y m e t r y c z n e z e w z g l e d u na ' x ' i ' y ' . 8 9 10 11 12 midpoint (O , f1 , f2 ) : row_s : = x - > -x : line ( l1 , y = row_s ( x ) ,[x , y ]) : line ( l2 ,[ O , f1 ]) : A r e P e r p e n d i c u l a r ( l1 , l2 ) ; 13 14 15 16 proboptym : = proc ( a ) global O , f1 , Eqell , row_s ; local b , dsg ,f ,k ,m ,p ,q ,r ,s ,t , row_p ; 17 18 19 20 21 22 23 24 25 26 27 28 29 point (q , [ -a , row_s ( -a ) ]) : dsegment ( dsg ,O , f1 ) : translation (t ,q , dsg ) : line (p ,[ q , t ]) : Equation ( p ) ; k : = simplify (%) ; row_p : = unapply ( solve (k , y ) , x ) ; f : = unapply ( lhs ( Eqell ) ,[x , y ]) ; m : = solve ( f (x , row_p ( x ) ) = 0 , x ) ; # b : = ` i f ` (m[ 1 ] >m [ 2 ] , m [ 1 ] , m [ 2 ] ) ; b : = m [1]; point (r , [b , row_p ( b ) ]) : projection (s , r , l2 ) : return q ,r , s ; end proc ; 30 31 32 33 34 35 assume ( a > 0) : (q ,r , s ) : = proboptym ( a ) ; pol : = unapply ( distance (q , O ) * distance (s , O ) , a ) ; ans : = solve ( diff ( pol ( a ) ,a ) = 0 , a ) ; a : = ans [1]; 99 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 36 37 38 39 40 41 42 43 44 45 46 with ( plots ) : E : = implicitplot ( Eqell , x = -3 ..3 , y = -3 ..3 ) : W : = geometry [ draw ]( w , color = black ) : F1 : = geometry [ draw ]( f1 , color = yellow ) : F2 : = geometry [ draw ]( f2 , color = yellow ) : L1 : = geometry [ draw ]( l1 , color = green ) : L2 : = geometry [ draw ]( l2 , color = blue ) : (q ,r , s ) : = proboptym ( a ) ; ( q2 , r2 , s2 ) : = proboptym ( -a ) ; with ( plottools ) : L : = [ coordinates ( q ) , coordinates ( r ) , coordinates ( r2 ) , coordinates ( q2 ) ]; P : = polygon (L , color = sienna , linestyle = 3 , thickness = 2 , transparency = 0 .5 ) : plots [ display ]({ E ,W , F1 , F2 , L1 , L2 , P } , axes = normal ) ; Zadanie 427. Zrób wykres funkcji Tomae’a danej formułą 1/k, gdy x = kl oraz k i l są względnie pierwsze, f(x) = 0, w p.p. 1 2 3 4 5 6 7 8 9 10 11 12 with ( plots ) : tomae : = proc ( M ) local k ,l , L ; L : = []; for k from 2 to M do for l from 0 to k do if igcd (k , l ) = 1 then L : = [ op ( L ) , [ evalf ( l / k ) , 1 . / k ]]; end if ; end do ; end do ; pointplot ({ op ( L ) }) ; end proc ; tomae (100) ; Zadanie 428. Wyplotuj odwzorowanie Gaussa t 7→ G̃ : S1 → S1 , G̃ exp(2πit) = exp(2πi/t). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 t mod 1 na prostej i na torusie dane za pomocą formuły y : = [ seq ( k / 10 . , k = 0 ..10 ) ]; pieces : = array (1 ..100 ) : ys : = [ seq ( y [ j ] , j = 1 ..11 ) ] : for i to 100 do pieces [ i ] : = zip (( i , j ) - >[i , j ] , [ seq (1 . / ( i + y [ j ]) , j = 1 ..11 ) ] , ys ) ; end do : plot ({ seq ( pieces [ k ] , k = 1 ..100 ) } , 0 ..1 , 0 ..1 , colour = black ) ; sp : = [ rho * cos (2 * Pi * t ) , rho * sin (2 * Pi * t ) , 0 , radius = b ] : pc : = n - > [( rho - r * cos (2 * Pi * t ) ) * cos (2 * Pi / ( n + t ) ) , ( rho - r * cos (2 * Pi * t ) ) * sin (2 * Pi / ( n + t ) ) , -r * sin (2 * Pi * t ) ] : rho : = 3 : r : = 1 .1 : b : = 1 : with ( plots ) : s : = spacecurve ({ seq ( pc ( k ) , k = 1 ..50 ) } , t = 0 ..1 , thickness = 2 , colour = blue , view = [ -4 .4..4.4 , -4 .4..4.4 , -4 .4..4.4 ]) : s2 : = tubeplot ( sp , t = 0 ..1 , tubepoints = 20 , view = [ -4 .4..4.4 , -4 .4..4.4 , -4 .4..4.4 ]) : display ({ s , s2 }) ; 100 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 429. Zaimplementuj algorytm (Grahama) na najmniejszą otoczkę wypukłą. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 ccw : = proc ( p1 , p2 , p3 ) return evalf (( p2 [1] - p1 [1]) * ( p3 [2] - p1 [2]) - ( p2 [2] - p1 [2]) * ( p3 [1] - p1 [1]) ) ; end proc ; norma : = proc ( v ) return evalf ( sqrt ( v [1] ^ 2 + v [2] ^ 2) ) ; end proc ; swap : = proc (i , j , L ) local G , temp ; G := L; temp : = G [ i ]; G [ i ] : = G [ j ]; G [ j ] : = temp ; return G ; end proc ; otoczka : = proc ( pts ) local i , j , P , CP , D , E , k , kat , N , M , v1 , v2 ; P : = pts ; N : = nops ( P ) ; for i from 2 to nops ( P ) do if P [ i ][2] < P [1][2] then P : = swap (1 , i , P ) ; end if ; end do ; D : = []; for i from 1 to nops ( P ) do CP : = ccw ([0 ,0] , P [ i ] , P [1]) / ( norma ( P [ i ]) * norma ( P [1]) ) ; kat : = arcsin ( CP ) ; D : = [ op ( D ) , [ evalf ( kat ) , norma ( P [ i ]) , P [ i ]]]; end do ; for j from 1 to N do for i from j + 1 to N do if ( D [ i ][1] < D [ j ][1]) or (( D [ i ][1] = D [ j ][1]) and ( D [ i ][2] < D [ j ][2]) ) then D : = swap (i , j , D ) ; end if ; end do ; end do ; D : = [ op ( D ) , D [1]]; M : = 2; for i from 3 to N + 1 do while ( ccw ( D [ M - 1][3] , D [ M ][3] , D [ i ][3]) >= 0) do if ( M > 2) then M : = M - 1; elif ( i = N + 1) then break ; else i : = i + 1; end if ; end do ; if ( i = N + 1) then k : = 1 else k : = i ; end if ; M : = M + 1; D : = swap (M , k , D ) ; end do ; E : = []; for i from 2 to M do E : = [ op ( E ) , D [ i ][3]]; end do ; return E ; end proc ; with ( plots ) : punkty : = [[ -1 , -4] , [3 ,3] , [2 , -5] , [ -3 , -2] , [3 , -2] , [1 , -2] , [0 , - 1]]; pointplot ( punkty , color = red ) ; H : = otoczka ( punkty ) ; pointplot (H , color = blue ) ; Zadanie 430. Zilustrować graficznie twierdzenie Gaussa-Lucasa: Miejsca zerowe pochodnej wielomianu leżą w otoczce wypukłej zbioru zer wyjściowego wielomianu. 1 2 with ( plots ) : f : = x - > ( x - 3 + 2 * I ) * ( x - (4 + 3 * I ) ) * ( x - 2 + 4 * I ) * ( x + 3 + 2 * I ) * ( x + 1 + 4 * I ) : 101 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 30 stycznia 2013 col : = [ RED , GREEN , YELLOW , BLUE , GREY ] : F : = [] : N : = degree ( f ( x ) ) : for j from 1 to N do A : = [] : pierw : = fsolve ( f ( x ) = 0 , x ) ; if j < N then for i in pierw do A : = [ op ( A ) , [ Re ( i ) , Im ( i ) ]]; end do : G : = display ([ polygonplot ( A ) ] , color = col [ j ] , transparency = 0 .1 ) : else A : = [ Re ( pierw ) , Im ( pierw ) ]; G : = display ([ pointplot ( A ) ] , color = col [ j ]) : end if ; F : = [G , op ( F ) ] : f := D(f); end do : display ( F ) ; 12 Rachunek prawdopodobieństwa i kombinatoryka Light thinks it travels faster than anything but it is wrong. No matter how fast light travels it finds the darkness has always got there first, and is waiting for it. — Terry Pratchett, Reaper Man Zadanie 431. Uczestnicy turnieju tenisowego zostali podzieleni na dwie grupy, z których pierwsza liczy dwa razy więcej graczy niż druga. W obu grupach każdy gracz rozegrał z każdym po dwa mecze, przy czym w grupie pierwszej rozegrano 5 razy więcej meczy niż w grupie drugiej. Ilu było graczy w tym turnieju i ile rozegrano w sumie na nim meczy? 1 Kombinatoryka isolve (2 * n * (2 * n - 1) / 2 = 5 * n * ( n - 1) / 2 , n ) ; Zadanie 432. Korzystając z poleceń z pakietu combinat określ, na ile sposobów można: (a) Zapisać liczbę 10 w postaci sumy składników nieujemnych. Podaj jeden z przykładów takiego rozkładu; (b) Zapisać w różnej kolejności 10-elementową listę; (c) Wybrać podzbiór 3-elementowy zbioru 10-elementowego. 1 2 3 4 5 with ( combinat ) : partition (10) ; L : = [ seq (i , i = 1 ..10 ) ]; randperm ( L ) ; randperm ( L ) ; choose (L ,3) ; Zadanie 433. Wśród n losów loterii jest 6 wygrywających. Dla jakich n prawdopodobieństwo tego, że zakupione 2 losy będą wygrywające jest większe od 13 ? 1 Prawdopodobieństwo klasyczne isolve (6 / n * 5 / ( n - 1) > 1 / 3 , n ) ; 102 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 434. Dwa losowo wybrane wierzchołki n-kąta wypukłego traktujemy jako końce odcinka. Dla jakich wartości n prawdopodobieństwo, że odcinek ten nie jest bokiem tego wielokąta jest większe od 0.99? 1 solve (1 - 2 / n > 0 .99 , n ) ; Zadanie 435. Student umie odpowiedzieć na 20 spośród 25 pytań egzaminacyjnych. Jakie jest prawdopodobieństwo, że student odpowie na co najmniej trzy pytania z czterech wybranych losowo? 1 ( binomial (20 ,3) * binomial (5 ,4) + binomial (5 ,4) ) / binomial (25 ,20) ; Rachunek prawdopodobieństwa Zadanie 436. Dana jest funkcja f : R → R f(x) = 0, C · x4 e−2x , x ∈ (−∞, 0), x ∈ [0, +∞). (a) Wyznacz wartość C, tak aby funkcja f była gęstością pewnej zmiennej losowej X, (b) Wyznacz EX oraz D2 X, (c) Oblicz P(1 < X ¬ 5), (d) Wyznacz dystrybuantę zmiennej losowej X, narysuj jej wykres i na jej podstawie oblicz P(1 < X ¬ 5). Porównaj wyniki. 1 2 3 4 5 6 7 8 9 assume ( C > 0) ; f : = x - > piecewise ( x <0 , 0 , C * x ^ 4 * E ^ ( -2 * x ) ) ; int ( f ( x ) , x = - i n f i n i t y . . i n f i n i t y ) ; C : = 4 / 3; mu : = int ( x * f ( x ) , x = - i n f i n i t y . . i n f i n i t y ) ; int (( x - mu ) ^ 2 * f ( x ) , x = - i n f i n i t y . . i n f i n i t y ) ; int ( f ( x ) , x = 1 ..5 ) ; evalf (%) ; dyst : = t - > int ( f ( x ) , x = - infinity..t ) ; plot ( dyst ( t ) , t = 1 ..5 ) ; Zadanie 437. Dystrybuantą dwuwymiarowej zmiennej losowej (X, Y) jest 1 − e−x − e−y − e−x−y , x > 0, y > 0, F(x, y) = 0, w pozostałych przypadkach. Znajdź gęstość prawdopodobieństwa f(x, y). 1 diff ( F (x , y ) , x , y ) ; Zadanie 438. Gęstością prawdopodobieństwa dwuwymiarowej zmiennej losowej (X, Y) jest f(x, y) = 1 − x2 +y2 2 e . 2π (a) Oblicz P(X > 1). (b) Oblicz prawdopodobieństwo tego, że zmienna (X, Y) przyjmie wartość z wnętrza okręgu x2 + y2 = 1. 1 2 3 f : = (x , y ) - > 1 / (2 * Pi ) * E ^ ( -( x ^ 2 + y ^ 2) / 2) ; int ( int ( f (x , y ) , x = 1 ..infinity ) , y = - i n f i n i t y . . i n f i n i t y ) ; int ( int ( f ( r * cos ( alpha ) ,r * sin ( alpha ) ) *r , r = 0 ..1 ) , alpha = 0 ..2 * Pi ) ; Zadanie 439. Napisać procedurę znajdowania wartości dystrybuanty zmiennej losowej X ∼ U(a, b) w punkcie t ∈ R. 1 F : = (x , y ) - > piecewise ( x <= a , 0 , x > a and x <= b , ( x -a ) / ( b -a ) , 1) ; Zadanie 440. Napisać procedurę znajdowania wartości dystrybuanty zmiennej losowej X ∼ E(λ) w punkcie t ∈ R. 1 F : = (x , lambda ) - > (1 -E ^ ( - lambda * x ) ) * Heaviside ( x ) ; 103 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 441. Napisać procedurę znajdowania wartości dystrybuanty zmiennej losowej X ∼ B(n, p), w punkcie t ∈ R. n k P(X = k) = p (1 − p)n−k . k 1 F : = (n ,p , t ) - > sum ( binomial (n , k ) * p ^ k * (1 -p ) ^ ( n -k ) , k = 0 ..floor ( t ) ) ; Zadanie 442. Wygeneruj listę długości 50 złożoną z liczb całkowitych losowych ze zbioru 1, 2, . . . , 30. Dla tak otrzymanej próbki wyznacz (a) średnią z próby, tj. x= Statystyka n 1 X xi , n i =1 (b) odchylenie standardowe z próby, tj. v u u σ=t 1 X (xi − x)2 , n−1 n i=1 (c) skośność z próby, tj. µ3 = 1 2 3 4 5 roll K := x := s := m := 13 1 n−1 Pn − x)3 3 . Pn 1 2 2 x) (x − i i=1 n−1 i=1 (xi : = rand (1 ..30 ) : [ seq ( roll () , i = 1 ..50 ) ]; n : = nops ( K ) : 1 / n * sum ( K [ i ] , i = 1 ..n ) ; sqrt (1 / ( n - 1) * sum (( K [ i ] - x ) ^ 2 , i = 1 ..n ) ) ; (1 / ( n - 1) * sum (( K [ i ] - x ) ^ 3 , i = 1 ..n ) ) / (1 / ( n - 1) * sum (( K [ i ] - x ) ^ 2 , i = 1 ..n ) ) ^ (3 / 2) ; Zadania inne Science is the great antidote to the poison of enthusiasm and superstition. — Adam Smith, The Wealth of Nations Zadanie 443. Wczytaj dane z pliku zawierającego: 1 1 1 1 2 2 2 2 2 3 3 3 3 3 1.5 2.0 2.5 3.0 1.0 1.5 2.0 2.5 3.0 1.0 1.5 2.0 2.5 3.0 Praca z plikami 2.5 3.0 3.5 4.0 5.0 5.5 6.0 6.5 7.0 10.0 10.5 11.0 11.5 12.0 Następnie zamień je na macierz, wyświetl je i zapisz do pliku wynik.txt. 1 2 3 4 readlib ( readdata ) : datalist : = readdata ( ` sample.dat ` , float ,3) ; A : = convert ( datalist , matrix ) ; fd : = fopen ( " wynik.txt " , WRITE , TEXT ) : 104 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 5 6 7 8 30 stycznia 2013 writedata ( fd , A ) ; fclose ( fd ) ; with ( plots ) : pointplot3d ( datalist , style = LINE , axes = BOXED ) ; Zadanie 444. Zdebugguj następujące dwie procedury: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mork : = proc ( a : : integer ) local k ; k : = a ^ 2; mindy ( k + a ) ; end proc : mindy : = proc ( b : : integer ) local m ; m : = b / 2; if m > 10 then 1 else 1 + mork ( b ) ; fi end proc : Debug: 1 2 3 4 5 6 7 debug ( mork ) ; mork (1) ; undebug ( mork ) ; printlevel : = 1000; mork (1) ; printlevel : = 0; mork (1) ; Zadanie 445. Zapisz w kodzie LATEX-a wyrażenie 1 R −1 x2 + 1 dx i jego wynik. latex ( Int (1 / ( x ^ 2 + 1) , x ) = int (1 / ( x ^ 2 + 1) , x ) ) ; 1 Zadanie 446. Podaj przybliżenie szeregiem Puiseux funkcji sin x 2 . 1 2 3 series ( sin ( x ^ (1 / 2) ) , x ) ; subs ( O = 0 , %) ; %; Zadanie 447. Napisz procedurę, która wyznacza równanie parametryczne krzywej mając dane jej równanie w układzie kartezjańskim. 1 2 3 4 5 6 7 8 9 10 11 parsolve : = proc (f , xy : : { list ( name ) , set ( name ) } , t : : name ) local p ,x , y ; x : = xy [1]; y : = xy [2]; p : = { solve ( subs ( y = t *x , f ) , x ) } minus {0}; map (( xi , u , xx , yy ) - > { xx = xi , yy = u * xi } , p , t , x , y ) ; end proc ; parsolve ( u ^ 2 + v ^ 2 = a ^ 2 , [u , v ] , t ) ; parsolve ( x ^ 3 - 3 * x * y + y ^ 3 = 0 , [x , y ] , t ) ; parsolve ( x ^ 5 - 5 * x * y ^ 3 + y ^ 5 = 0 , [x , y ] , t ) ; parsolve ( y ^ 2 = x ^ 3 / (2 * a -x ) , [x , y ] , t ) ; Zadanie 448. Znajdź wielomian W(X) taki, że Interpolacja wielomianami oraz aproksymacja W(−1) = −1, W(0) = 4, W(1) = 2, W(2) = 3. W tym celu użyj pakietu CurveFitting. 1 2 3 with ( CurveFitting ) : Interactive ([[ -1 , -1] , [0 , 4] , [1 , 2] , [2 , 3]] , x ) ; Interactive () 105 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 449. Napisz procedurę, która pobiera listę złożoną z par (również będących listami) [x1 , y1 ], [x2 , y2 ], . . . , [xn , yn ] na wejściu, zaś na wyjściu zwraca wielomian W(X) o tej własności, że W(xk ) = yk dla każdego k = 1, . . . , n. 1 2 3 4 5 with ( CurveFitting ) : interpol : = proc ( L ) local f ; return P o l y n o m i a l I n t e r p o l a t i o n (L , z ) ; end proc ; Zadanie 450. Znajdź wielomian y = ax4 + bx3 + cx2 + dx + e, którego wykres zawiera punkty (−10, 16883), (−5, 843), (2, 59), (3, 243), (8, 9683). 1 2 with ( CurveFitting ) : P o l y n o m i a l I n t e r p o l a t i o n ([[ - 10 ,16883] , [ - 5 ,843] , [2 ,59] , [3 ,243] , [8 ,9683]] , x ) ; Zadanie 451. Przybliż dane [2, 0, −2, 2, 5, 12, 19, 22, 3, −5, −5, −3, −1, 1, 3, 4, 5, 5, 3, 1.5, 1, 1.5] szeregiem Fouriera. 1 2 3 4 5 6 7 8 9 10 with ( linalg ) : Y : = [2 ,0 , - 2 ,2 ,5 ,12 ,19 ,22 ,3 , -5 , -5 , -3 , - 1 ,1 ,3 ,4 ,5 ,5 ,3 ,1 .5 ,1 ,1 .5 ]; f : = t - > evalf ( a [0] + sum ( a [ k ] * cos ( k * Pi * t / 11) + b [ k ] * sin ( k * Pi * t / 11) , k = 1 ..6 ) ) ; T : = [ seq (k , k = 0 ..21 ) ]; tt : = vector ( T ) ; A : = matrix ([ seq ([1 , seq ( evalf ( cos ( Pi * j / 11 * T [ k ]) ,4) ,j = 1 ..6 ) , seq ( evalf ( sin ( Pi * j / 11 * T [ k ]) ,4) ,j = 1 ..6 ) ] , k = 1 ..nops ( T ) ) ]) : # Pseudoodwrotnosc ! X : = multiply ( inverse ( multiply ( transpose ( A ) ,A ) ) , multiply ( transpose ( A ) , vector ( Y ) ) ) ; fit : = X [1] + convert ([ seq ( X [ `i `+ 1] * cos ( Pi * `i `/ 11 * t ) , `i `= 1 ..6 ) , seq ( X [ `i `+ 7] * sin ( Pi * `i `/ 11 * t ) , `i `= 1 ..6 ) ] , `+ `) ; with ( plots ) : display ([ plot ( fit , t = 0 ..22 ) , plot ( zip (( a , b ) - >[a , b ] , T , Y ) , style = point ) ]) ; Zadanie 452. Wielomiany Bernsteina definiuje się następująco: n k x (1 − x)n−k , bk,n (x) := k Wielomiany specjalne k = 0, . . . , n. Wykonaj następujące polecenia: (a) narysuj wykresy wielomianów Bernsteina dla przykładowych wartości n, k ∈ N, (b) wykaż, że ma miejsce równość bk,n−1 (x) = 1 2 3 4 5 n−k k+1 bk,n (x) + bk+1,n (x). n n b : = (x , n , k ) - > binomial (n , k ) * x ^ k * (1 -x ) ^ ( n -k ) ; plot ( b (x ,3 ,2) , x = -1 ..2 ) ; plot ( b (x ,5 ,3) , x = -1 ..2 ) ; is ( b (x , n -1 , k ) = ( n -k ) / n * b (x ,n , k ) + ( k + 1) / n * b (x ,n , k + 1) ) ; assume ( k >= 0 and k < n , n : : integer ) ; assume (x , real ) ; b (x , n -1 , k ) - (( n -k ) / n * b (x ,n , k ) + ( k + 1) / n * b (x ,n , k + 1) ) ; expand (%) ; simplify (%) ; is (% = 0) ; Zadanie 453. Wygeneruj funkcję ciągłą f : [0, 1] → R. Dla tej funkcji, na jednym układzie współrzędnych narysuj wykresy funkcji f oraz n X k Bn (f)(x) := f bk,n (x) n k=0 dla n = 4, 5, 6, 7. Co możesz powiedzieć o „zbliżaniu się” wykresów funkcji Bn (f) do wykresu funkcji f? 1 2 3 f : = 5 * x ^ 4 - 3 * x ^ 3 - 4 * x ^ 2 - 6 * x - 2; B : = (g ,x , n ) - > sum ( subs ( x = k /n , g ( x ) ) * b (x ,n , k ) , k = 0 ..n ) ; plot ([ f ( x ) , seq ( B (f ,x , i ) , i = 4 ..7 ) ] , x = -1 ..2 ) ; 106 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 454. Wielomiany Legendre’a dane są wzorami Pn (x) = 1 dn (x2 − 1)n . n n 2 n! dx (a) Dla n = 50 oraz n = 200 sprawdź, czy wielomian Pn spełnia równanie różniczkowe dPn d (1 − x2 ) (x) + n(n + 1)Pn (x) = 0, dx dx (b) Sprawdź, czy dla n ¬ 30 wielomiany Pn należą do przestrzeni L2 [−1, 1] z normą określoną wzorem s Z1 f2 (x) dx. kfk := −1 Wyniki zapisz w postaci listy o nazwie norm_P_n. (c) Wyznacz macierz kwadratową wymiaru k = 15, która na przecięciu i-tego wiersza i j-tej kolumny będzie miała iloczyn skalarny wielomianów Pi oraz Pj (z przestrzeni L2 [−1, 1]). 1 2 3 4 5 6 7 P : = (x , n ) - > 1 / (2 ^ n * n ! ) * diff (( x ^ 2 - 1) ^n , x$n ) ; n : = 20; diff ((1 -x ^ 2) * diff ( P (x , n ) ,x ) , x ) + n * ( n + 1) * P (x , n ) ; simplify (%) ; seq ( sqrt ( int ( P (x , n ) ^ 2 , x = -1 ..1 ) ) , n = 1 ..30 ) ; with ( linalg ) : mat : = k - > matrix (k ,k ,[ seq ( seq ( sqrt ( int ( P (x , i ) * P (x , j ) , x = -1 ..1 ) ) , j = 1 ..k ) , i = 1 ..k ) ]) ; mat (15) ; Zadanie 455. Wielomiany Czebyszewa pierwszego rodzaju spełniają następującą zależność rekurencyjną: T0 (x) = 1, T1 (x) = x, Tk (x) = 2xTk−1 (x) − Tk−2 (x), dla n > 1. Napisz procedurę wyznaczającą wielomiany Czebyszewa pierwszego rodzaju i wyznacz T10 (x). Sprawdź wynik działania procedury za pomocą polecenia orthopoly[T]. 1 2 3 4 5 6 7 8 9 10 czebyszew : = proc (n , x ) if n = 0 then return 1; elif n = 1 then return x ; else return simplify (2 * x * czebyszew ( n -1 , x ) - czebyszew ( n -2 , x ) ) ; end if ; end proc ; czebyszew (10 , x ) ; orthopoly [ T ](10 , x ) ; Zadanie 456. Wielomiany Laguerre’a spełniają następującą zależność rekurencyjną: W0 (x) = 1, W1 (x) = −x + 1, Wn (x) = 2n−1−x Wn−1 (x) − n−1 n n Wn−2 (x), dla n > 1. Zaprojektuj procedurę wyznaczającą wielomiany Laguerre’a i wyznacz W5 (x). Sprawdzenie wykonaj za pomocą orthopoly[L]. Czy możesz obliczyć W35 (x)? 1 2 3 4 5 6 7 8 9 10 laguerre : = proc (n , x ) if n = 0 then return 1; elif n = 1 then return -x + 1; else return simplify ((2 * n -1 -x ) / n * laguerre ( n -1 , x ) - ( n - 1) / n * laguerre ( n -2 , x ) ) ; end if ; end proc ; laguerre (5 , x ) ; orthopoly [ L ](5 , x ) ; 107 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Zadanie 457. Wielomiany Hermite’a spełniają następującą zależność rekurencyjną: H0 (x) = 1, H1 (x) = 2x, 0 Hn (x) = 2xHn−1 (x) − Hn−1 (x), dla n > 1. Zaprojektuj procedurę wyznaczającą wielomiany Hermite’a i wyznacz H10 (x). Sprawdzenie wykonaj za pomocą orthopoly[H]. 1 2 3 4 5 6 7 8 9 10 hermit : = proc (n , x ) if n = 0 then return 1; elif n = 1 then return 2 * x ; else return simplify (2 * x * hermit ( n -1 , x ) - diff ( hermit ( n -1 , x ) ,x ) ) ; end if ; end proc : hermit (10 , x ) ; orthopoly [ H ](10 , x ) ; Zadanie 458. W teorii ergodycznej najważniejszym twierdzeniem jest twierdzenie ergodyczne Birkhoffa, które brzmi: Niech T : X → X będzie przekształceniem zachowującym miarę na przestrzeni (X, Σ, µ) i niech f ∈ L1 (µ). Wtedy lim n→∞ Z n−1 1 X 1 f T kx = f dµ n µ(X) Teoria ergodyczna. dla p.w. x ∈ X. k=0 √ Zilustruj to twierdzenie dla f(x) = 2 x − 12 oraz Tx = (x + α mod 1), gdzie α = 2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 f : = x - > 2 * abs ( x - 1 / 2) ; plot ( f ( x ) , x = 0 ..1 ) ; int ( f ( x ) , x = 0 ..1 ) ; s := 0: val : = [] : alpha : = sqrt (2) ; modone : = t - > t - floor ( t ) ; T : = t - > modone ( alpha + t ) ; x : = 1; for n from 1 to 1000 do s := s + f(x): val : = [ op ( val ) , [x , s / n ]] : x := T(x); end do : with ( plots ) : pointplot ( val , symbol = POINT , color = COLOR ( RGB , rand () / 10 ^ 12 , rand () / 10 ^ 12 , rand () / 10 ^ 12) ) ; Zadanie 459. Dla funkcji f(x) = 2 x − 12 − Pn−1 k wykres funkcji g(x) = limn→∞ k=0 f T x . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 i odwzorowania T jak w poprzednim zadaniu zrobić przybliżony f : = x - > 2 * abs ( x - 1 / 2) - 1 / 2; s := 0: val : = [] : alpha : = sqrt (2) ; modeone : = t - > t - floor ( t ) ; T : = t - > modeone ( alpha + t ) ; x : = 1; for n from 1 to 1000 do s := s + f(x): val : = [ op ( val ) , [x , s ]] : x := T(x); end do : with ( plots ) : pointplot ( val , symbol = POINT ) ; 108 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 14 30 stycznia 2013 Zadania domowe I have had my results for a long time: but I do not yet know how I am to arrive at them. — Carl Friedrich Gauss Zadanie 460. Napisz inne niż te w skrypcie znane Ci algorytmy sortowania. Zadanie 461. Zaimplementować algorytm Meissela-Lehmera na znajdowanie wartości π(x). Zadanie 462. Napisz algorytm Baistrowa, algorytm Laguerre’a, metodę Bernoullego, metodę Müllera i algorytm Jenkinsa-Trauba znajdowania pierwiastków zespolonych wielomianu. Zadanie 463. Zaimplementować algorytm Cholesky’ego na rozkład macierzy. Zadanie 464. Zaimplementować metodę Jacobiego, metodę Gaussa-Siedela, metodę Czebyszewa oraz metodę Richardsona rozwiązywania równań macierzowych. Zadanie 465. Napisać iteracyjną metodę Aitkena znajdowania wartości własnych. Zadanie 466. kowanej. Eliminacja Gaussa-Jordana – sprowadzanie macierzy do postaci górnoschodkowej całkowicie zredu- Zadanie 467. Rozwiązywanie układów równań liniowych metodą eliminacji Gaussa-Jordana. Zadanie 468. sa-Jordana. Znajdowanie macierzy odwrotnej do nieosobliwej macierzy kwadratowej w oparciu o eliminację Gaus- Zadanie 469. Napisać program dla algorytmu Grama-Schmidta (tzw. ortogonalizacja Grama-Schmidta). Zadanie 470. Zaimplementuj algorytm Fibonacciego rozwijania ułamka w ułamki egipskie. Zadanie 471. Zaimplementuj twierdzenie Sturma, twierdzenie Fouriera i twierdzenie Descartesa mówiące o ilości pierwiastków równania wielomianowego w danym przedziale. Zadanie 472. Napisz procedurę ilustrującą twierdzenie Gerszgorina. Uwaga. Pliki z rozwiązaniem należy zapisywać jako Maple Classic Worksheet, aby zachować kompatybilność między różnymi wersjami Maple (powinien się utworzyć plik z rozszerzeniem .mws). 15 Bibliografia • Antoni C. Mituś, Rafał Orlik oraz Grzegorz Pawlik, Wstęp do pakietu algebry komputerowej Maple. • André Heck, Introduction to Maple. • Filip Piękniewski, Fraktale w Maple. • David Kincaid i Ward Cheney, Analiza numeryczna, WNT, Warszawa 2002. • Louis Melville Milne-Thomson, The Calculus of Finite Differences, American Mathematical Society, 2000. • Robert M. Corless, Essential Maple: An Introduction for Scientific Programmers, Springer-Verlag: New York, 1995. • Wacław Sierpiński, Liczby trójkątne, Seria: Biblioteczka Matematyczna, PZWS, Warszawa 1962. • Jaan Kiusalaas, Numerical Methods in Engineering with Python, Cambridge University Press, New York, 2005. $ Fëdoroviq Filippov, Sbornik zadaq po differencial~nym uravnenim, 2000. • Aleksei • Euler Math Toolbox. • Differential Geometry Library. 109 Matematyka komputerowa, lato 2011/2012 mgr Krzysztof Rykaczewski 30 stycznia 2013 Koniec 110