Lokalni extremy – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Lokalni extremy – Java – Fórum – Programujte.comLokalni extremy – Java – Fórum – Programujte.com

 

Grav
~ Anonymní uživatel
5 příspěvků
26. 10. 2022   #1
-
0
-

Napište program, který v zadaném uzavřeném intervalu <x1, x2> nalezne všechny
lokální extrémy (minimum nebo maximum) funkce f(x) = cos(x) + a ∙ cos(b ∙ x + c).
o Hodnoty koeficientů a, b, c a uzavřeného intervalu x1, x2 načtěte z klávesnice
jako desetinné číslo (v tomto pořadí).
- Na výstup vypište počet lokálních minim a maxim.
- Program pracuje s americkým národním nastavením (tj. používá desetinnou tečku).
- Předpokládejte disciplinovaného uživatele, který zadá korektní vstupy.
- Tip: Funkci procházejte v cyklu s krokem delta = 1.0 / 1024. Pro extrém platí, že dvě po
sobě jdoucí diference (f(x - delta) - f(x) a f(x) - f(x + delta)) mají opačná znaménka. Pro
kontrolu výsledků je vhodné si funkci nakreslit.
- Pomocí dokumentačních komentářů program řádně okomentujte.
- Úlohu odevzdávejte jako ppa1u04a.jar soubor s odpovídající strukturou.

Vůbec si nevím rady..

Nahlásit jako SPAM
IP: 2a00:1028:83d4:9d1e:e4ef:df6f:94a0:656e...–
JerryM0
Věrný člen
26. 10. 2022   #2
-
0
-

Já teda Javu neumim ale zadání je seriozní. Je to klasika pro začátečníka ve všech klasických programovacích jazycích. Použiješ na to jeden cyklus For.

Tady je jak se kreslí čára

https://stackoverflow.com/questions/5801734/how-to-draw-lines-in-java

a tady jak se kreslí bod

https://zetcode.com/gfx/java2d/basicdrawing/

a tady je příklad jak se dělá cyklus

https://www.javatpoint.com/java-for-loop

možná to zvládne obojí i Java Web Compiler, možná ne - je tam jen okno konzole

https://www.tutorialspoint.com/online_java_compiler.php

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:4cb4:87ba:46e4:f114...–
Grav
~ Anonymní uživatel
5 příspěvků
26. 10. 2022   #3
-
0
-

To chapu, ze to ma byt na for cyklus, ale vubec nevim, co mam delat s tou deltou. Potreboval bych nejaky zaklad kodu, abych videl, jak to ma vypadat.

Zapomnel jsem dodat, ze vstup ma byt: a=0, b=0, c=0, x1=0, x2=1 a výstup: min: 0 max: 1

Nahlásit jako SPAM
IP: 2a00:1028:83d4:9d1e:e4ef:df6f:94a0:656e...–
JerryM0
Věrný člen
26. 10. 2022   #4
-
0
-

no delta je krok ...

for (double i = 1; i <= 100; i = i + delta)  {  ... a tady bude vypočet ...  }

důležité je, aby "i" bylo formátu IEEE754(double) nebo max. single

napiš si to nejprve bez grafiky a pak s grafikou

/* Online Java Compiler and Editor */
public class HelloWorld{

     public static void main(String []args){
         
       double delta = 0;
       //*******************************
       
       delta = 0.9;
       for(double i=1;i<=10;i = i + delta){  
           
          System.out.println(i);  
          
       }// for
       
       System.out.println("Hello, World!");
     }
}

a  zkusil bych to tady

https://www.programiz.com/java-programming/online-compiler/

ten fungujeok

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:4cb4:87ba:46e4:f114...–
Grav
~ Anonymní uživatel
5 příspěvků
26. 10. 2022   #5
-
0
-

Takhle je to sice dobry, ale kdyz tam necham i + delta, tak se ve vypoctu nacte strasne moc vysledku. Pocitam  s cos(i) + a ∙ cos(b ∙ i + c)...  

Nahlásit jako SPAM
IP: 2a00:1028:83d4:9d1e:e4ef:df6f:94a0:656e...–
JerryM0
Věrný člen
26. 10. 2022   #6
-
0
-

no když tam nedáš "i + delta" tak ten cyklus nemá smysl ... :) to je jasný :)

jinak delta má být 1/1024 = 0.000976562

nevim jestli ti na tak malej krok bude webovej Java překladač stačit .. asi budeš potřebovat normální Javu .. si musíš nainstalovat, hlavně nezapomeň, že a,b,c, x1, x2 taky musí být typ double

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:4cb4:87ba:46e4:f114...–
Grav
~ Anonymní uživatel
5 příspěvků
26. 10. 2022   #7
-
0
-

Ale takhle si mi poradil: for(double i=1;i<=10;i = i + delta), tak jsem to vyzkousel a vratil jsem to nazpet na muj:  for(double i=x1;i<=x2;i = i++) a dal proste nevim, co dal... Jinak to delam v eclipsu, takze normalni Java :D 

Nahlásit jako SPAM
IP: 2a00:1028:83d4:9d1e:e4ef:df6f:94a0:656e...–
gna
~ Anonymní uživatel
1874 příspěvků
26. 10. 2022   #8
-
0
-

Máš tam jasně napsané, že krok toho cyklu bude delta. Takže projdeš ten interval a najdeš a ty extrémy.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
4002 příspěvků
27. 10. 2022   #9
-
0
-

Mozna by bylo dobre napsat sem cely kod, ktery uz mas. Editor ma tlacitko pro vkladani kodu  

<?
       for(double i=1;i<=10;i = i + delta){  
           
          System.out.println(i);  
          
       }
Nahlásit jako SPAM
IP: 2001:718:2601:258:4c63:b49:9173:bdd3...–
27. 10. 2022   #10
-
0
-

V zadání je interval od x1 do x2 s krokem delta. Cyklus bych volil takto:

for(double x=x1;x<=x2;x = x + delta){  
           
         //provest vypocet f(x)
         //provest vyhodnoceni, zda se jedna o lokalni extrem (minimum nebo maximum), pokud ano, započítat (minimum nebo maximum).
       }

Možná bys každý nalezený lokální extrém mohl vypsat. Ale to jsem při "rychločtení" zadání nezaregistroval.

Jak poznat lokální extrém máš popsáno v zadání. Jak zjistit znaménko: pokud je číslo větší než 0, znaménko +. Pokud je rozdíl menší než 0, znaménko -.

Podívej se do učebnice matematiky zda v bodech x1 a x2 nastávají lokální extrémy.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
JerryM0
Věrný člen
27. 10. 2022   #11
-
0
-

ty asi čekáš že to celý za tebe někdo napíše :) ale nevim jestli se to stane ... každopádně ne odemě protože nejsem Javař :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:7431:f32:b298:34af...–
JerryM0
Věrný člen
27. 10. 2022   #12
-
0
-

ještě taková drobnost

když nechceš tak nemusíš používat výraz "i = i + delta" jako parametr cyklu for. můžeš použít proměnnou delta jinak:

double delta = 0;

for (int i = 1; i <= 1000; i = i + 1) 

{

  .... vypočet využívající proměnnou delta.....

  delta = delta + (1/1024);

}

a taky to bude fungovat ... chápeš jo ? tu hodnotu 1000 v cyklu for zaměníš za vhodnou jinou podle skutečného počtu požadovaných kroků ... tak jako tak je výpočet ryze diskrétní deterministický proces ...

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:7431:f32:b298:34af...–
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, 2 hosté

Podobná vlákna

Lokalni wiki — založil TuTi_fruTi

Lokalni promenne — založil BigBear

Moderátoři diskuze

 

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