-
Notifications
You must be signed in to change notification settings - Fork 0
cviceni02
Řešení všech úkolů ze cvičení 2 je ve složce cviceni02.
Napište program, který načte celé číslo udávající časový interval ve vteřinách a výpíše kolik je to dní, hodin, minut a vteřin.
- Tedy pokud bude vstup 100000 pak vypíše: den 1 hodin 3 minut 46 vterin 40
Napište program, který načte číslo n a najde jeho nejmenšího dělitele většího než 1.
- Je vhodné použít konstrukci break, cyklus můžete použít while i for.
- Otestujte svůj program na čísle 999962000357
Napište program, který vytiskne čtvercovou šachovnici ze znaků 'O' a '*' o velikosti zadané uživatelem, jako vstup Vašeho programu.
Pro tisk znaku bez konce řádky použijte následující konstrukci (end definuje zakončení řetězce a je standardně nastaveno na nový řádek):
print('.', end="")
Zkopírujte si následující kód do souboru, v programu odstraňte syntaktické chyby. Program spusťte a zjistěte co dělá
step = 0.1
sum = 0
for is in range(1,11):
sum += step
if (suma == is/10):
print("Plati",sum,"rovno", is/10)
else:
print("Neplati",sum,"nerovno", is/10)
Vypočtěte třetí odmocninu kladného čísla y, zadaného jako vstup Vašeho programu následujícím postupem:
- Přičítejte k proměnné value číslo 1 dokud je třetí mocnina této proměnné menší než y
- Přičítejte k proměnné value číslo 0.1 dokud je třetí mocnina této proměnné menší než y
- Přičítejte k proměnné value číslo 0.01 dokud je třetí mocnina této proměnné menší než y
- Proměnná value obsahuje odmocninu čísla y s přesností na dvě desetinná čísla
Upravte program z úkolu 5, aby pracoval se zadanou přesností
Program načte číslo y a n a nalezne třetí odmocninu z čísla y na n desetinných míst
Upravte algoritmus, aby uměl spočítat i třetí odmocniny ze záporných čísel
Metoda půlení intervalu hledá řešení obecné rovnice f(x)=0, kdy známe dva body x1 a x2 takové, že f(x1)<0 a f(x2)>0.
Algoritmus rozpůlí interval mezi body x1 a x2, tedy nalezne bod x′=(x1+x2)/2 a pokud je f(x′)<0 pak nahradí bod x1 bodem x′, jinak nahradí bod x2 bodem x′. Výše uvedený krok se opakuje dokud není |x1−x2|<presnost.
V případě hledání třetí odmocniny z čísla y je f(x)=x^3−y, pokud f(x)=0, tak to znamená, že x^3−y=0 což lze zapsat jako x^3=y a tedy x=sqrt(y,3).
Napište program, který nalezne třetí odmocninu zadaného čísla y na 8 desetinných míst (výpočet ukončíte pokud |x1−x2|<0.000000001). Na počátku zvolte x1=0 a x2=y pro kladná y>1 a x1=y a x2=0 pro záporná y←1 a x1=−1 a x2=1 v ostatních případech.
Newtonova (Babylónská) metoda tečen x_(i+1) = f(x_i)/f′(x_i) pro třetí odmocninu z čísla y dostáváme x_(i+1)=1/3(2x_i+y/x_i^2)
Řada x_i konverguje k třetí odmocnině z čísla y
x0 můžete nastavit na libovolnou hodnotu různou od 0, např x0=1, případně na lepší odhad (Čím lepší odhad nalezneme, tím rychleji řada konverguje)
Výpočet lze ukončit podle rozdílu |x_(i+1)−x_i|<presnost ( lze také testovat |x_i^3−n|<presnost )
Program načte kladné reálné číslo (označme ho x) a poté načte další kladné reálné číslo (označme ho y). Program vypočte logaritmus čísla x o základu y metodou půlení intervalu.
Výsledek nalezněte s přesností na 8 desetinných míst (výpočet ukončíte pokud |x1−x2|<0.000000001).
Použití nějaké knihovní funkce (např. math.log) není dovoleno. Program volající cizí funkce nebude hodnocen. Uložte jako log.py.
Pro nastavení krajních mezí platí následující pomůcky:
- pokud je y>1,x>1 pak levá mez může být 0
- pokud je y>e,x>1 pak víme, že y^k>k+1 tedy pravá mez může být x
- pokud je e>y>1,x>1 pak víme, že y^k>k*ln(y)+1 (derivace v bodě 0 je ln(y)), tedy pravá mez může být x/ln(y) a pro e>y>1 můžeme použít ln(y)>(y−1)/(e−1)
- pokud je x<1 pak víme, že 1/x>1 a 1/y^k=y^(−k), tím pádem můžeme použít záporné hodnoty mezí zjištěné pro hodnotu 1/x, tedy pro výše uvedené případy pravá mez rovna 0 a levá mez rovna −1/x, resp. −1/x*( (e−1)/(y−1) )
- pokud je y<1, pak (1/y)^k=y^(−k). Tedy zjistíme meze pro základ 1/y (což jsme uvedli výše) a tyto meze vynásobíme −1.
Vytvořte program base.py, která ze standardního vstupu přečte řádku, která obsahuje desetinné číslo a druhou řádku, která obsahuje základ soustavy čísla z první řádky. Základ soustavy je v rozmezí 2 .. 36 Pro soustavy o základu menším nebo rovno 10, obsahuje desetinné číslo pouze čísla od 0 .. základ soustavy - 1 a znak . Pro soustavy o základu větším než 10, obsahuje desetinné číslo čísla 0,..,9 a písmena 'a', .. , 'z', ale hodnota
ord(znak)−odr(′a′)<zaklad_soustavy−10.
Desetinné binární číslo
101.0101=1∗2^2+0∗2^1+1∗2^0+0∗2^(−1)+1∗2^(−2)+0∗2^(−3)+1∗2^(−4)=5.3125
Výstupem programu je zadané číslo převedené do desítkové soustavy (tedy pro vstup 101.0101 bude výstup 5.3125)
Pokud je na vstupu špatně zadané číslo (obsahuje jiné znaky než povolené cifry a znak '.', případně obsahuje znak '.' vícekrát), pak vytiskne na výstup slovo “ERROR”
Správnost vstupu základu soustavy nemusíte testovat.