Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akce až 50 % zdarma při nákupu e-learningu. Více informací:
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
vasatom
Člen
Avatar
vasatom:19.11.2013 2:15

Ahoj, řeším problém, kde má program počítat x z rovnice když zadám pravou stranu. X má být v intervalu <0.1>. A pravá strana se zadává ručně z intervalu <-117,679>. Nefunguje mi to pro -117. Nevíte prosím jak to udělat? výsledné x má být s přesností na 4 desetinná místa.

Scanner sc = new Scanner(System.in);

      System.out.println("Program pro vypocet x z rovnice (x+3)^5 - 15*(x-2)^3 - 30*(x-4)^2 = pravaStrana");
      System.out.println("Zadejte pravou stranu rovnice z intervalu <-117,679>:");
      int pravaStrana = sc.nextInt();
      double x=0;
      double vysledneX = 0;

  for (double i=0.00001; i<1; i+=0.00001)
  {
    if (Math.pow(x + 3, 5) - 15 * Math.pow(x - 2, 3) - 30 * Math.pow(x - 4, 2)<pravaStrana){

        x = i;}}

  vysledneX = x;
   System.out.println("---Vysledky---");
      System.out.println("Resenim rovnice");
      System.out.println("(x+3)^5 - 15*(x-2)^3 - 30*(x-4)^2 =" +pravaStrana);
      System.out.println("je:");
      System.out.printf(Locale.US, "%6.4f%n", vysledneX);
 
Odpovědět
19.11.2013 2:15
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na vasatom
Silvinios:19.11.2013 7:14

Co ti nefunguje? Je-li pravá strana -117, výsledek x = 0 je správný.

Možná Ti ale unikl smysl té úlohy. Funkce

f(x) = (x+3)^5 - 15*(x-2)^3 - 30*(x-4)^2

je na intervalu <0,1> rostoucí a nabývá hodnot z intervalu <-117,679>. Nenapadá Tě lepší algoritmus?

Editováno 19.11.2013 7:14
 
Nahoru Odpovědět
19.11.2013 7:14
Avatar
vasatom
Člen
Avatar
vasatom:19.11.2013 8:56

ani nevím, ale při odevzdání mi učitel řekl, že tam mám něco špatně. Nevím jak jinak to napsat, jestli mě nějak prosím tě navedeš?

 
Nahoru Odpovědět
19.11.2013 8:56
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na vasatom
Silvinios:19.11.2013 17:48

Nejdřív jsi psal, že Ti program nefunguje pro -117 a teď píšeš, že ani nevíš, co ti nefunguje. Je ještě něco co (ne)víš?

Pravá strana musí být celočíselná?

Pokud jde o algoritmus, použil bych půlení intervalů.

 
Nahoru Odpovědět
19.11.2013 17:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.