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
∀x­0 ∀y­0 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