Python- půlení intervalů – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python- půlení intervalů – Python – Fórum – Programujte.comPython- půlení intervalů – Python – Fórum – Programujte.com

 

Simon50
Duch
19. 12. 2016   #1
-
0
-

Dobrý den, potřeboval bych poradit, jak naprogramovat hledání kořenů půlením intervalu a metodou tečen? Děkuji za odpovědi.

Nahlásit jako SPAM
IP: 188.120.193.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 12. 2016   #2
-
0
-

No, poznáš, jestli se blížíš správnému výsledku. Takže se mu dokolečka (cyklus) budeš snažit přibližovat, dokud ho nenajdeš. V pseudokódu úplně jednoduše třeba takhle:

vysledek = None

zkusebni_hodnota = vychozi_hodnota
while True:
	vysledek = vypocet(zkusebni_hodnota)
	if vysledek vyhovuje:
		break
	elif vysledek napravo:
	    zkusebni_hodnota = posunout doleva
	else:
	    zkusebni_hodnota = posunout doprava

vypsat vysledek
Nahlásit jako SPAM
IP: 213.211.51.–
Simon50
Duch
20. 12. 2016   #3
-
0
-

#2 gna

Mockrát děkuji. Jen jak by se dal zapsat ten interval ? Jsem úplný začátečník, proto takové primitivní otázky ...

Nahlásit jako SPAM
IP: 178.255.168.–
gna
~ Anonymní uživatel
1891 příspěvků
20. 12. 2016   #4
-
0
-

Jako přímo ten rozsah? Normálně do nějakých proměnných. Třeba a,b. Uprostřed bude c.

def znamenko(x):
	return -1 if x < 0 else 1

def funkce(x):
	return (x*x*x)-x-1

a = 1
b = 2
maxchyba = 0.001

while True:
	c = (a + b) / 2
	chyba = (b - a) / 2

	fa = funkce(a)
	fc = funkce(c)
	fb = funkce(b)

	print('{: .4f} {: .4f} {: .4f} | {: .4f} {: .4f} {: .4f} | {: .4f}'.format(a,c,b, fa,fc,fb, chyba))

	if fc == 0: # koren nalezen
		break
	if chyba < maxchyba: # takova presnost nam staci
		break

	# prejdeme na polovinu, kde se meni znamenko
	if znamenko(fa) != znamenko(fc):
		b = c
	else:
		a = c
 1.0000  1.5000  2.0000 | -1.0000  0.8750  5.0000 |  0.5000
 1.0000  1.2500  1.5000 | -1.0000 -0.2969  0.8750 |  0.2500
 1.2500  1.3750  1.5000 | -0.2969  0.2246  0.8750 |  0.1250
 1.2500  1.3125  1.3750 | -0.2969 -0.0515  0.2246 |  0.0625
 1.3125  1.3438  1.3750 | -0.0515  0.0826  0.2246 |  0.0312
 1.3125  1.3281  1.3438 | -0.0515  0.0146  0.0826 |  0.0156
 1.3125  1.3203  1.3281 | -0.0515 -0.0187  0.0146 |  0.0078
 1.3203  1.3242  1.3281 | -0.0187 -0.0021  0.0146 |  0.0039
 1.3242  1.3262  1.3281 | -0.0021  0.0062  0.0146 |  0.0020
 1.3242  1.3252  1.3262 | -0.0021  0.0020  0.0062 |  0.0010
 
Nahlásit jako SPAM
IP: 213.211.51.–
Simon50
Duch
21. 12. 2016   #5
-
0
-

#4 gna
je to ono. Děkuji!

Nahlásit jako SPAM
IP: 178.255.168.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Pomoc-puleni intervalu — založil huck

Opakované půlení pole — založil john22

Prvocisla v intervalu — založil zemlra

Horni, dolni mez intervalu — založil vitamin

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý