Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

1.Napisz funkcj� tworz�c� list� wszystkich lat przest�pnych z podanego przedzia�u.

Przypominam, �e rok jest przest�pny, je�eli jest podzielny przez 4, ale nie jest
podzielny przez 100, chyba, �e jest podzielny przez 400. Cia�o funkcji ma si�
sk�ada� z jednej linijki kodu zawieraj�cej list comprehension.
Wywo�aj napisan� funkcj� do wygenerowania listy lat przest�pnych w latach 1900-
2000.

Uzupe�nienie wyk�adu:

W list comprehension mo�e te� wyst�pi� warunek np.:

[x**2 for x in range (10) if x % 2 == 0 or x % 3 == 0]

stworzy list� kwadrat�w tych liczb z przedzia�u 0-9, kt�re s� podzielne przez2 lub
przez 3

def lata_przyst (pocz,koniec):


list= [x for x in range (pocz, (koniec+1)) if x % 4 ==0 and x %100 !=0 or x %
400==0]
return list

list=lata_przyst(1900,2000)
print(list)

2.Napisz funkcj� derivative, kt�ra otrzyma jako parametry funkcj� (f), punkt (x) i
przyrost (h), a zwr�ci przybli�on� warto�� pochodnej funkcji f w punkcie x.
Przybli�on� warto�� pochodnej uzyskuje si� ze wzoru na iloraz r�nicowy:

f(x+h)-f(x) /h

Niech w funkcji derivative h b�dzie parametrem z warto�ci� domy�ln� r�wn� 0.0001

W programie wypisz warto�ci funkcji:

sin(x) w punkcie 1

sin(x) w punkcie 0

x^2 w punkcie 1 z przyrostem 0.00001

Funkcja sin jest dost�pna w module math (nale�y zaimportowa� modu� przez:

import math

- wtedy funkcja sin b�dzie dost�pna jako math.sin

Funkcj� x^2 nale�y zaimplementowa� samemu.

import math

def derivative (f,x,h=0.0001):


poch=(f(x+h)-f(x))/h
return poch

def kwadrat (x):


return x**2
poch= derivative(math.sin, 1)
print("Pochodna sin(1) to ",poch)

poch= derivative(math.sin, 0)
print("Pochodna sin(0) to ",poch)

poch= derivative(kwadrat, 1, 0.00001)


print("Pochodna funkcji x^2 to ",poch)

3.Napisz funkcj� znajduj�c� wsp�lne elementy dw�ch sekwencji (list, krotek lub
napis�w). Znalezione wsp�lne elementy maj� by� zwracane jako lista (ka�dy element w
tej li�cie ma wyst�pi� tylko raz!)

Uzupe�nienie wyk�adu:

W list comprehension mo�e wyst�p� p�tla zagnie�d�ona np.:

[x**y for x in range (1,4) for y in range (2,5) ]

stworzy list� liczb b�d�cych 2, 3 i 4 pot�g� liczb z zakresu 1-3

def wsp_el (sekw1, sekw2):


lista1=[n1 for n1 in sekw1 for n2 in sekw2 if n1==n2 ]
zbior=set(lista1)
return list(zbior)

x=["a", "b",1,2,3,4,5]
y=["c", "a", "a",3,5,7]
lista = wsp_el (x, y)
print (lista)

4. Napisz funkcj� wyznaczaj�c� miejsce zerowe dowolnej funkcji f(x), w zadanym


przedziale, metod� bisekcji. Funkcja powinna otrzymywa� jako parametry funkcj� f,
x1, x2 jako pocz�tek i koniec przedzia�u w kt�rym nale�y szuka� miejsca zerowego
oraz eps - dok�adno�� oblicze�

Za pomoc� napisanej funkcji nale�y wyznaczy� miejsce zerowe:

sinusa w przedziale (-1.5 , 1) oraz

wielomianu (funkcja do samodzielnego napisania):

y=x^3-2x^2+4x-1 w przedziale (-10, 10) - z dok�adno�ci� 0.001

import math

def wielomian (x):


return x**3-2*x**2+4*x+1
def miejsce_zer (f, pocz, koniec, eps):

if f(pocz)*f(koniec)>0:
return ("Funkcja nie ma miejsc zerowych w tym przedziale!")

else:
pierwiastek=pocz

while abs(pocz-koniec)>=eps:
pierwiastek=(pocz+koniec)/2
if f(pocz)*f(pierwiastek)<0:
koniec=pierwiastek
elif f(pierwiastek)*f(koniec)<0:
pocz=pierwiastek

return pierwiastek

pierwiastek=miejsce_zer(math.sin,-1.5,1,0.001)
print ("Miejsce zerowe sinusa w zadanym przedziale to w przybli�eniu ",
pierwiastek)

pierwiastek=miejsce_zer(wielomian,-10,10,0.001)
print ("Miejsce zerowe danego wielomianu w zadanym przedziale to w przybli�eniu ",
pierwiastek)

5.Napisz dekorator w postaci funkcji pozwalaj�cy na policzenie czasu wykonania


podanej funkcji. Nale�y wykorzysta� funkcj� time.clock() z modu�u time (wywo�aj
clock()
przed wywo�aniem funkcji oraz po wywo�aniu funkcji i wypisz r�nic� czas�w).
'Udekoruj' funkcj� z zadania 2. Do moodla wystarczy wklei� kod dekoratora.
def timer(function):
import time
start=time.clock()
wykonanie = function
end=time.clock()
return (end-start)

czas = timer (derivative (math.sin, 1))


print(czas)

You might also like