Zaimplementować klasę ułamków wykorzystując następujący przykład:
class ulamek:
def __init__(self,a,b):
self.a = a
self.b = b
def __mul__(self,x):
return ulamek(self.a*x.a,self.b*x.b)
def __repr__(self):
return "%d/%d"%(self.a,self.b)
def _repr_latex_(self):
return r"$\frac{%d}{%d}$"%(self.a,self.b)
def __str__(self):
return "ulamek: %d/%d"%(self.a,self.b)
x = ulamek(1,2)
y = ulamek(2,3)
x*y
Zaimplemetntować:
In [ ]:
Leonardo Fibonacci opracował swój słynny ciąg modelując liczebność populacji królików. Zaczynamy od jednej pary królików, która po miesiącu dojrzewa i po następnym miesiącu wydaje parę młodych i natychmiast ponownie zachodzi w ciążę, po następnym miesiącu pierwsza para wydaje kolejne młode a druga dojrzewa i zachodzi w ciążę itd. Wielkość populacji (liczba par) w kolejnych miesiącach wynosi 1, 1, 2, 3, 5, 8... Model ten zakłada, że każdej parze zawsze rodzą się dokładnie jeden samiec i jedna samica, ale głównym problemem w modelu jest to, że króliki są nieśmiertelne!
Urealnijmy trochę ten problem. Napisz funkcję obliczającą liczebność populacji śmiertelnych królików. Funkcja przyjmuje trzy argumenty - miesiąc, dla którego obliczamy liczebność, miot - liczba par, które się rodzą jednorazowo z jednej pary oraz zycie - czas życia królików (w miesiącach). Minimalna długość życia królików to 3 miesiące. Oznacza to, że każda para zdąży się rozmnożyć przynajmniej 2 razy. W ostatnim miesiącu życia nastąpi najpierw poród, a dopiero potem śmierć pary królików.
Jak teraz wyglądać będzie populacja królików po czasie jaki zadajemy w parametrze miesiac?
Specyfikacja
Wejście
Wyjście
In [ ]:
In [ ]:
Zaimplementować algorytm obliczający diagram bifurkacyjny dla równania logistycznego. Ostatni rysunek na stornie: https://pl.wikipedia.org/wiki/Odwzorowanie_logistyczne
In [ ]:
In [10]:
dane = {(1,2):3,(2,3):22}
In [15]:
import numpy as np
Mdense = np.zeros((4,4))
In [17]:
for k,v in dane.items():
Mdense[k] = v
Mdense
Out[17]:
In [ ]:
Napisać program implementujący grafikę żółwia (https://docs.python.org/3/library/turtle.html). Niech "backendem" rysującym będzie matplotlib. Proszę wykorzystać interface "notebook". Można w nim interactwynie zmieniać dane związane z objektem na rysunku np. wpsółrzędne linii (przykład poniżej).
Minimalna funkcjonalność powinna zawierać:
Proszę przemyśleć wewnętrzą reprezentacje danych, tak by była ona w miarę niezależna od sposobu wyświetlania.
In [140]:
%matplotlib notebook
import matplotlib.pyplot as plt
import time
import numpy as np
In [145]:
f,ax = plt.subplots()
#plt.show()
plt.xlim(-10,10)
plt.ylim(-10,10)
path = ax.plot(0,0,'-')[0]
position = ax.plot([-0.5,0.5,0,-0.5],[-0.33,-0.33,0.66,-0.33],'b-')[0]
ax.set_aspect('equal')
In [148]:
x,y = position.get_data()
x,y
Out[148]:
In [149]:
position.set_data(x+5,y+5)
In [150]:
t = np.linspace(0,10,20)
x = 5+2*np.cos(t)
y = 5+2*np.sin(t)
for i in range(t.size):
path.set_data(x[:i],y[:i])
f.canvas.draw()
time.sleep(0.1)
In [ ]:
In [ ]: