MPZI_vj01_s_izradom September 23, 2020 [1]: % display typeset Aritmetičke operacije i matematičke funkcije Aritmetičke operacije Zbrajanje: + Oduzimanje : – Množenje: * Dijeljenje: / Potenciranje: ^ ili ** 1. zadatak Izračunajte 2 100 2 , 4 − 5 , 1 0 , 45 [2]: 2^100 [2]: 1267650600228229401496703205376 ili [3]: 2**100 [3]: 1267650600228229401496703205376 [4]: 2.4 - 5.1/0.45 [4]: -8.93333333333333 2. zadatak Izračunajte 1 3 , 4 5 2 91 , 75 + 2 , 4 − 5 , 1 0 , 45 [5]: 3.4^(5/2) [5]: 21.3155867852612 [6]: 91.75 + (2.4 - 5.1)/0.45 [6]: 85.7500000000000 Za promjenu prioriteta aritmetičkih operacija upotrebljavaju se, isključivo, okrugle zagrade (). Uglate [] i vitičaste {} zagrade imaju potpuno druga značenja. 3. zadatak Izračunajte { [(2 , 3 − 1 , 2 2 ) 3/2 − 3 , 2] 4 + 1 } 3 [7]: (((2.3 - 1.2^2)^(3/2) - 3.2)^4 + 1)^3 [7]: 40404.1915640218 1. zadaci za vježbu Izračunajte 8 , 3 · 2 3 , 6 − 5 , 7 2 , 4 12 , 5 − 2 , 7 1 , 8 5 , 2 + 1 , 4 · (3 , 2 − 2 , 8 + 9 , 2) 5 , 3 4 , 5 + 1 , 2 2 2 , 9 (Rješenja možete naći pri dnu radnog lista.) [ ]: Prikaz broja u decimalnom obliku s različitim brojem značajnih znamenaka Značajnim znamenkama broja x ̸ = 0 u decimalnom zapisu nazivaju se prva znamenka slijeva ra- zličita od nule i sve znamenke desno od nje do kraja zapisa; primjerice, 12 , 340 i 0 , 001 234 0 imaju jednaki broj značajnih znamenaka: 5. (Za x = 0 sve su znamenke u zapisu značajne, pa je u 0 i 0 , 000 njihov broj različit.) 4. zadatak 2 Prikažite broj 13 7 u decimalnom obliku pomoću 50 značajnih znamenaka, a zatim pomoću 5 zna- menaka. [8]: N (13/7, digits = 50) [8]: 1.8571428571428571428571428571428571428571428571429 [9]: N (13/7, digits = 5) [9]: 1.8571 ili, na drugi način: [10]: n (13/7, digits = 5) [10]: 1.8571 ili, na još jedan način (tzv. objektno orijentirani): [11]: (13/7).n (digits = 5) [11]: 1.8571 5. zadatak Prikažite broj 13 , 0 7 u decimalnom obliku pomoću 50 značajnih znamenaka. [12]: N (13./7, digits = 50) ␣ ↪ → --------------------------------------------------------------------------- TypeError Traceback (most recent call␣ ↪ → last) <ipython-input-12-95d984736cfe> in <module>() ----> 1 N (RealNumber('13.')/Integer(7), digits = Integer(50)) /opt/SageMath/local/lib/python2.7/site-packages/sage/misc/functional.py␣ ↪ → in numerical_approx(x, prec, digits, algorithm) 1417 return numerical_approx_generic(x, prec) 1418 else: -> 1419 return n(prec, algorithm=algorithm) 1420 1421 n = numerical_approx 3 /opt/SageMath/local/lib/python2.7/site-packages/sage/structure/element. ↪ → pyx in sage.structure.element.Element.numerical_approx (build/cythonized/sage/ ↪ → structure/element.c:7829)() 848 if prec is None: 849 prec = digits_to_bits(digits) --> 850 return numerical_approx_generic(self, prec) 851 852 def n(self, prec=None, digits=None, algorithm=None): /opt/SageMath/local/lib/python2.7/site-packages/sage/arith/ ↪ → numerical_approx.pyx in sage.arith.numerical_approx.numerical_approx_generic␣ ↪ → (build/cythonized/sage/arith/numerical_approx.c:2666)() 63 64 if prec > inprec: ---> 65 raise TypeError("cannot approximate to a precision of %s␣ ↪ → bits, use at most %s bits" % (prec, inprec)) 66 67 # The issue is not precision, try conversion instead TypeError: cannot approximate to a precision of 170 bits, use at most 53␣ ↪ → bits Dobiveni ispis traži objašnjenje: Većina se realnih brojeva u računalu ne može prikazati točno, jer njihov zapis ima bezbrojno mnogo znamenaka. Moguć je samo približan prikaz, s konačnim brojem značajnih znamenaka, pa ćemo umjesto o realnima govoriti o „realnim” ili o pseudorealnim brojevima. Standardan je prikaz sa 15 značajnih dekadskih znamenaka koje se zapisuju pomoću 53 binarne zna- menke (53 bita). Razlomak 13 7 ima u decimalnom zapisu bezbrojno mnogo znamenaka. Napišemo li 13./7, računalo će od bezbrojno mnogo binarnih znamenaka upamtiti samo prve 53, pa neće moći ispisati broj s točnošću od 50 značajnih dekadskih znamenaka, za što bi trebao znati 170 binarnih. (Ako pak, kao u zadatku 4., napišemo 13/7, računalo će razlomak upamtiti kao par brojeva, 13 i 7, te pri pozivu funkcije N() približnu vrijednost izračunati s onoliko bitova koliko je potrebno za ispis traženoga broja značajnih dekadskih znamenaka.) Ugrađene konstante Osnovne konstante: e, E — konstanta e pi — konstanta π i, I — imaginarna jedinica 6. zadatak 4 Izračunajte e 2 3 pa rezultat prikažite pomoću 20 značajnih dekadskih znamenaka. (Znak _ (podvlaka, underline) označava zadnji dobiveni rezultat.) [13]: e^2/3 [13]: 1/3*e^2 [14]: N (_, digits = 20) [14]: 2.4630186996435500757 7. zadatak Izračunajte π − e π + e pa rezultat prikažite u decimalnom obliku, pomoću 39 značajnih znamenaka. [15]: (pi - e)/(pi + e) [15]: (pi - e)/(pi + e) [16]: N (_, digits = 39) [16]: 0.0722388894894455464530934693075551720627 Obratite pozornost na prioritet operacija: [17]: N (pi - e/pi + e) != N ((pi - e)/(pi + e)) [17]: True Osnovne matematičke funkcije sqrt(x) — drugi korijen: √ x , exp(x), e^x, e**x — eksponencijalna funkcija s bazom e : e x , log(x), ln(x) — logaritam s bazom e : ln x log(x, b) — logaritam s bazom b : log b x , sin(x), cos(x), tan(x), cot(x) — trigonometrijske funkcije s argumentom u radijanima, arcsin(x), arccos(x), arctan(x), arccot(x) ili asin(x), acos(x), atan(x), acot(x) — inverzne funkcije trigonometrijskim funkcijama (rezultat u radijanima), sinh(x), cosh(x), tanh(x), coth(x) — hiperbolne funkcije, asinh(x), acosh(x), atanh(x), acoth(x) — inverzne funkcije hiperbolnim funkcijama, abs(x) — apsolutna vrijednost: | x | , factorial(n) — faktorijela prirodnog broja n : n ! ( 0! = 1 ), 5 binomial(m, n) — binomni koeficijent ( m n ) 8. zadatak Izračunajte √− 4 sve druge korijene iz 3 , 7 3 √ 8 sin π 3 tg π 2 sin 2 2 , 5 + cos 2 2 , 5 arcsin 0 , 5 ; pomnožite rezultat sa 180 π da dobijete rezultat u stupnjevima i upotrijebite funkciju N() da dobijete decimalnu vrijednost √− 4 [18]: sqrt (-4) [18]: 2*I svi drugi korijeni iz 3 , 7 [19]: sqrt (3.7, all = True) [19]: [1.92353840616713, -1.92353840616713] 3 √ 8 [20]: (8)^(1/3) [20]: 2 sin π 3 [21]: sin (pi/3) [21]: 1/2*sqrt(3) [22]: N (_) [22]: 0.866025403784439 tg π 2 6 [23]: tan (pi/2) [23]: Infinity [24]: show (_) Infinity sin 2 2 , 5 + cos 2 2 , 5 [25]: sin (2.5)^2 + cos (2.5)^2 [25]: 1.00000000000000 arcsin 0 , 5 [26]: n (arcsin (0.5) * 180/pi) [26]: 30.0000000000000 ili [27]: n (asin (0.5) * 180/pi) [27]: 30.0000000000000 2. zadaci za vježbu Izračunajte približnu vrijednost izraza e 3 sin π 4 ln 5 na 9 značajnih dekadskih znamenaka. Izračunajte udaljenost točaka A (2 , 5; 3 , 8) i B (4 , 24; − 1 , 53) Ako ste zaboravili: d ( A, B ) = √ ( x A − x B ) 2 + ( y A − y B ) 2 Izračunajte arcsin 0 , 56 + log 10 12 , 5 e 1 , 7 + √ 4 , 9 Izračunajte 5 √ 125 , 9 + tg (6!) na 12 značajnih znamenaka. [ ]: Izrada zadataka za vježbu 1. zadaci za vježbu 8 , 3 × 2 3 , 6 − 5 , 7 2 , 4 [28]: 8.3*2^3.6 - 5.7/2.4 [28]: 98.2685800162904 7 12 , 5 − 2 , 7 1 , 8 5 , 2 + 1 , 4 × (3 , 2 − 2 , 8 + 9 , 2) [29]: (12.5 - 2.7^1.8) / (5.2 + 1.4*(3.2^(-2.8) + 9.2)) [29]: 0.359734344015730 5 , 3 4 , 5 + 1 , 2 2 2 , 9 [30]: 5.3^((4.5 + 1.2^2)/2.9) [30]: 30.4450562775234 2. zadaci za vježbu izračunajte približnu vrijednost izraza e 3 sin π 4 ln 5 na 9 značajnih dekadskih znamenaka [31]: N( exp(3)*sin(pi/4)/log(5), digits=9 ) [31]: 8.82458357 ili [32]: N( e^3*sin(pi/4)/ln(5), digits=9 ) [32]: 8.82458357 — napominjemo da je pisanje razmaka između pojedinih jedinica u izrazima pitanje „stila” i čitljivosti: [33]: N (e^3 * sin (pi/4) / ln (5), digits = 9) [33]: 8.82458357 izračunajte udaljenost točaka A (2 , 5; 3 , 8) i B (4 , 24; − 1 , 53) [34]: sqrt ((2.5 - 4.23)^2 + (3.8 + 1.53)^2) [34]: 5.60373090003437 izračunajte arcsin 0 , 56 + log 10 12 , 5 e 1 , 7 + √ 4 , 9 [35]: ( arcsin(0.56) + log(12.5, 10) ) / ( e^1.7 + sqrt(4.9) ) [35]: 0.220004764483157 izračunajte 5 √ 125 , 9 + tg (6!) na 12 značajnih znamenaka 8 [36]: N( 125.9^(1/5) + tan(factorial(6)), digits=12 ) [36]: 3.27874562171 9 MPZI_vj02_s_izradom September 23, 2020 („Lijepi” ispis svih rezultata, bez poziva funkcije show(), možete dobiti tako da u prvu ́ celiju radnog lista upišete naredbu %display typeset.) [1]: %display typeset 1 Izrazi, funkcije, polinomi i njihovi grafovi 1.1 Simboliˇ cki izrazi 1. zadatak Definirajte simboliˇ cki izraz ex1 = 3 x 3 + 18 x 2 + 9 x − 30 pa zatim 1. izraˇ cunajte vrijednost ex1 za x=2, 2. rastavite ex1 na faktore, 3. dobivene faktore pomnožite (razvijte izraz dobiven faktorizacijom) i provjerite jeste li ponovo dobili ex1 , 4. zamijenite u ex1 varijablu x sa x 2 + 1, 5. novodobiveni izraz razvijte pa rastavite na faktore. Definicija i raˇ cun za x = 2: [2]: ex1 = 3*x^3 + 18*x^2 + 9*x - 30 ex1 [2]: 3*xˆ3 + 18*xˆ2 + 9*x - 30 [3]: ex1 (x=2) [3]: 84 [4]: ex1.subs (x=2) [4]: 84 Faktorizacija i razvoj: [5]: ex2 = ex1.factor() ex2 1 [5]: 3*(x + 5)*(x + 2)*(x - 1) [6]: ex2.expand() [6]: 3*xˆ3 + 18*xˆ2 + 9*x - 30 [7]: ex2.expand() == ex1 [7]: 3*xˆ3 + 18*xˆ2 + 9*x - 30 == 3*xˆ3 + 18*xˆ2 + 9*x - 30 [8]: bool (ex2.expand() == ex1) [8]: True Zamjena x sa x 2 + 1, razvoj i faktorizacija: [9]: ex1.subs (x = x^2+1) [9]: 3*(xˆ2 + 1)ˆ3 + 18*(xˆ2 + 1)ˆ2 + 9*xˆ2 - 21 [10]: _.expand() [10]: 3*xˆ6 + 27*xˆ4 + 54*xˆ2 [11]: _.factor() [11]: 3*(xˆ2 + 6)*(xˆ2 + 3)*xˆ2 2. zadatak Sage ne rastavlja svaki simboliˇ cki izraz koji je polinom na faktore. Pokušajte, na primjer, izraz ex = 3 x 5 − 4 x 3 + 3 rastaviti na faktore. U dijelu posve ́ cenom polinomima, u ovom radnom listu, bit ́ ce prikazano kako se ovakav izraz ipak može rastaviti. [12]: ex = 3*x^5 - 4*x^3 + 3 ex.factor() [12]: 3*xˆ5 - 4*xˆ3 + 3 3. zadatak Definirajte simboliˇ cki izraz ex = sin ( x + n π 2 ) pa zatim 1. pojednostavnite ex primjenom funkcije expand_trig() , 2. u dobivenom izrazu provedite zamjenu x = 0 i rezultat oznaˇ cite s ex1 , 3. izraz ex1 izraˇ cunajte za parne i za neparne vrijednosti broja n Definiranje izraza: 2 [13]: var ( ' n ' ) ex = sin (x+(n*pi)/2) ex [13]: sin(1/2*pi*n + x) Pojednostavnjenje pomo ́ cu .expand_trig() i zamjena x s 0: [14]: ex1 = ex.expand_trig() ex1 [14]: cos(x)*sin(1/2*pi*n) + cos(1/2*pi*n)*sin(x) [15]: ex1 = ex1.subs(x=0) ex1 [15]: sin(1/2*pi*n) Raˇ cun za parne n : [16]: assume (n, ' even ' ) ex1 [16]: sin(1/2*pi*n) [17]: ex1.simplify_full() [17]: 0 Za neparni n izraz sin n π 2 je jednak + 1 ili − 1 i to prema sljede ́ cem pravilu: neka je n = 2 k + 1; tada je $sin ( 2 k + 1 ) π 2 = { 1 za k paran ili 0 − 1 za k neparan $ Takav rezultat Sage ne zna zapisati: [18]: forget (n, ' even ' ) assume (n, ' odd ' ) ex1.expand_trig() [18]: sin(1/2*pi*n) Pojedinaˇ cne vrijednosti za n daju ispravan rezultat: 3 [19]: sin ((2*2+1)*pi/2) [19]: 1 ili: [20]: ex1.subs (n = 2*2+1) [20]: 1 [21]: sin ((2*3+1)*pi/2) [21]: -1 ili: [22]: ex1.subs (n = 2*3+1) [22]: -1 Naravno, zadatak možemo riješiti i tako da sin n π 2 napišemo u obliku sin ( 2 k + 1 ) π 2 , pa taj izraz pojednostavnimo uz odgovaraju ́ ce pretpostavke o k : [23]: var ( ' k ' ) ex1n = ex1.subs (n = 2*k+1) ex1n [23]: sin(1/2*pi + pi*k) [24]: forget() assume (k, ' odd ' ) ex1n.simplify_full () [24]: -1 [25]: forget() assume (k, ' even ' ) ex1n.simplify_full () [25]: 1 1. zadatak za zada ́ cu Neka je ex = 2 x 5 − 4 x 4 − 2 x + 4. 1. Izraˇ cunajte ex za x=1,5. 2. Rastavite ex na faktore. 3. Razvijte izraz dobiven faktorizacijom (pomnožite dobivene faktore). 4. U ex zamijenite x s 2 x 2 + 3 pa novodobiveni izraz rastavite na faktore. 4 Rješenja su pri kraju radnog lista. 2. zadatak za zada ́ cu Neka je ex = ln ( e · x ) + tg ( x − 1 + n · π · x ) 1. Pojednostavnite izraz ex naredbom simplify_full() 2. Izraˇ cunajte ex za x=1. Potom pretpostavite da je broj n cijeli pa ponovo izraˇ cunajte ex za x = 1. 1.2 Definicija funkcije i graf funkcije 1.2.1 Funkcija plot() Eksplicitno zadana krivulja je krivulja zadana izrazom oblika y = f ( x ) Crtanje eksplicitno zadanih krivulja u ravnini izvodi se funkcijom plot() . Oblik poziva je plot (funkcija, (varijabla, donja_granica, gornja_granica), opcije...) ili plot (funkcija, donja_granica_varijable, gornja_granica_varijable, opcije...) Najvažnije su opcije: - plot_points — (podrazumijeva se: 200) broj toˇ caka koje ́ ce se upotrebiti za crtanje grafa, - ymin — poˇ cetna vrijednost varijable y u slici, - ymax — završna vrijednost varijable y u slici, - linestyle — naˇ cin crtanja linije: - ' - ' ili solid — puna linija (podrazumijeva se), - ' : ' ili dotted — toˇ ckasto, - ' -- ' ili dashed — crtano, - ' -. ' ili dashdot — crta–toˇ cka, - ' ' (razmak) ili None — ništa, - color — tekstom (nizom znakova) zadano ime boje, npr. cyan , ili trojka brojeva koja zadaje boju RGB podacima, - detect_poles — (podrazumijeva se: False ) ako se postavi na True , polovi ́ ce biti prona ̄ deni, a ako se postavi na show bit ́ ce nacrtane i vertikalne asimptote, - fill — (podrazumijeva se: False ) ako se postavi na True , podruˇ cje izme ̄ du grafa i osi x bit ́ ce osjenˇ ceno, - figsize — (podrazumijeva se: 8) veliˇ cina slike, upola manji broj znaˇ ci, približno, upola manju sliku, - axes — (podrazumijeva se: True) ako se postavi na False , osi koordinatnog sustava ne ́ ce biti nacrtane, - axes_labels — nazivi osi, zadaje se u obliku [naziv_x_osi, naziv_y-osi] ili (naziv_x_osi, naziv_y-osi) , - frame — (podrazumijeva se: False ) ako se postavi na True , oko slike ́ ce biti nacrtan okvir, - aspect_ratio — omjer duljina jediniˇ cnih dužina na osima y i x (omjer visine i širine pravokutnika koji ́ ce biti prikazan kao kvadrat), - legend_label — oznaka krivulje na slici; zadaje se kao tekst (niz znakova), - thickness — (podrazumijeva se: 1) debljina linije. 4. zadatak Definirajte funkciju f ( x ) = x x 2 − 1 . Izraˇ cunajte vrijednost i približnu vrijednost funkcije f u toˇ cki x = √ 3 ln 5 . Nacrtajte graf funkcije f nad intervalom [ − 6, 6 ] , a zatim, upotrebom opcija ymin i ymax, ograniˇ cite y tako da vrijedi − 1,5 < y < 1,5. Opcijom thickness postavite debljinu linije na 4. [26]: var ( ' x ' ); f(x) = x / (x^2-1) 5 [27]: y = f (sqrt(3)/log(5)) y [27]: sqrt(3)/((3/log(5)ˆ2 - 1)*log(5)) [28]: N (y) [28]: 6.80391231986142 [29]: plot ( f(x), (x, -6, 6) ) [29]: [30]: plot ( f(x), (x, -6, 6), detect_poles = True ) [30]: 6 [31]: plot ( f(x), (x, -6, 6), ymin = -1.5, ymax = 1.5, thickness = 4, detect_poles =␣ ↪ → ' show ' ) [31]: 7 3. zadatak za zadaću 1. Definirajte funkciju g ( x ) = x + sin x 2. Odredite je li | g ( 1, 2 ) | veće od | g ( − 2, 1 ) | 3. Nacrtajte graf funkcije g nad intervalom [ − 8, 8 ] pomoću naredbe plot(). Neka veličina slike bude 5. 4. Primjenom odgovarajućih opcija uredite sliku tako da je omjer jedinica na osima y i x jednak 1/6, imenujte osi x i y , a graf neka bude crvene boje, nacrtan točkasto. 5. zadatak Na istoj slici nacrtajte grafove funkcija sin x , sin x 2 i sin 2 x nad intervalom [ 0, 2 π ] Obojite ih redom crveno, plavo i zeleno. Nacrtajte iste grafove na novoj slici tako da se osi ne prikazuju. [32]: p1 = plot (sin(x), (x, 0, 2*pi), color = "red") p2 = plot (sin(x/2), (x, 0, 2*pi), color = "blue") p3 = plot (sin(2*x), (x, 0, 2*pi), color = "green") [33]: p1 + p2 + p3 [33]: [34]: (p1 + p2 + p3).show (axes = false) 8 ili [35]: show (p1+p2+p3, axes = false) 9 1.3 Polinomi 6. zadatak Simbolički izraz ex = 3 x 5 − 4 x 3 + 3 (iz zadatka br. 2) transformirajte tako da Sage zna da je to polinom nad skupom realnih brojeva. Polinom potom rastavite na faktore. Nakon toga konvertirajte ex u polinom nad skupom kompleksnih brojeva te ga rastavite na faktore. [36]: ex = 3*x^5 - 4*x^3 + 3 ex [36]: 3*xˆ5 - 4*xˆ3 + 3 [37]: poli = ex.polynomial (RR) poli [37]: 3.00000000000000*xˆ5 - 4.00000000000000*xˆ3 + 3.00000000000000 [38]: poli.factor() [38]: (3.00000000000000) * (x + 1.32709626560972) * (xˆ2 - 2.00876050035395*x + 1.13076828743849) * (xˆ2 + 0.681664234744229*x + 0.666383066681653) [39]: poli1 = ex.polynomial (CC) poli1 [39]: 3.00000000000000*xˆ5 - 4.00000000000000*xˆ3 + 3.00000000000000 [40]: poli1.factor() [40]: (3.00000000000000) * (x - 1.00438025017697 - 0.349268665203344*I) * (x - 1.00438025017697 + 0.349268665203344*I) * (x + 0.340832117372114 - 0.741765821839544*I) * (x + 0.340832117372114 + 0.741765821839544*I) * (x + 1.32709626560972) Napomena : Polinom p ( x ) = 3 x 5 − 4 x 3 + 3 ima jednu realnu nul-točku ( x 0 ' − 1,327 096 ) i dva para konjugiranokompleksnih nul-točaka: [41]: plot (poli, -2, 2) [41]: 10 7. zadatak Definirajte dva simbolička izraza: - ex1 = t 3 − t 2 − t − 2 - ex2 = t 4 + t 3 − 4 t − 16 pa ih pretvorite u polinome pol1 i pol2 nad skupom realnih brojeva. Zatim: 1. izračunajte vrijednost polinoma pol1 u točki t = 2, 5 , 2. odredite zbroj i umnožak polinoma pol1 i pol2, 3. izračunajte kvocijent i ostatak dijeljena polinoma pol2 polinomom pol1, 4. rastavite polinom pol2 na faktore (nad skupom realnih brojeva) pa dobivene faktore pomnožite (razvijte izraz dobiven faktorizacijom), 5. nacrtajte graf polinoma pol2 za t ∈ [ − 2,1; 2,1 ] • definiranje simboličkih izraza 11