Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
! 04. 11. 2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
17. 01. 2016 (Jel.) Rok 2016 s novými a novějšími krystaly od kolegy Pavla!
17. 01. 2016 (Jel.) Nabídka knih z oborů matematiky, fyziky, chemie
23. 10. 2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 01. 01. 2017 17:01

Georgonnn
Zelenáč
Příspěvky: 16
Škola: Wichterlovo gymnázium
Pozice: student
Reputace:   
 

Rozpoznávání rovnic analytické geometrie v Javě

Dobrý den, chci udělat program, který po zadání rovnice vykreslí daný útvar (přímka, kružnice, ...), ale nevím jak rozpoznat dané rovnice. Mohli byste mě alespoň trochu navést na správnou cestu?
Děkuji za odpovědi
Mojmur

Offline

 

#2 02. 01. 2017 06:46

Honzc
Příspěvky: 3695
Reputace:   208 
 

Re: Rozpoznávání rovnic analytické geometrie v Javě

↑ Georgonnn:
Na to budeš potřebovat parser matematických výrazů.
Buď si ho někde stáhneš (nebo napíšeš sám)
V javě nedělám, ale zkus se podívat Sem

Offline

 

#3 02. 01. 2017 10:10

Georgonnn
Zelenáč
Příspěvky: 16
Škola: Wichterlovo gymnázium
Pozice: student
Reputace:   
 

Re: Rozpoznávání rovnic analytické geometrie v Javě

↑ Honzc: Děkuju ;)

Offline

 

#4 02. 01. 2017 10:19

ViliX
Místo: Praha
Příspěvky: 195
Škola: MFF
Pozice: student
Reputace:   11 
Web
 

Re: Rozpoznávání rovnic analytické geometrie v Javě

Pokud budeš mít zaručeno, že ten výraz bude pouze v nějákých určitých formách, např. $(x-m)^2+(y-n)^2=r^2$ nebo $xm + n = y$, tak to lze vyřešit extrakcí těch parametrů z té rovnice, pokud je však dovoleno mít na vstupu věci jako $1/x^2+1/y^2=36/{x^2y^2}$, pak opravdu budeš muset použít onen parser jak nabízí kolega Honzc.

-
Trochu pod čarou, neboť je to opravdu škaredé řešení: metoda eval(...) vyhodnotí daný stringový výraz, takže např. eval("2+6") bude 8. Umí to taky proměnné, takže pokud dostaneš třeba $x^2-4x+y^2-y = 10$, pak můžeš udělat eval("x^2-4x+y^2-y-10", 0, 0) a dostaneš kolik se to rovná když dosadíš za x a za y 0. Pokud to bude nějáká hodně malá hodnota, pak ten bod pravděpodobně existuje, pak můžeš pokračovat eval("x^2-4x+y^2-y-10", 1, 0), eval("x^2-4x+y^2-y-10", 2, 0), .., eval("x^2-4x+y^2-y-10", 3, 5), atd..
Je to pouze diskrétní řešení a velmi škaredé, neboť časová náročnost toho všeho je mohutná a program musí mít odhad kde zhruba ten objekt bude, píšu to sem jen z žertu. :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson