Kezdőoldal » Tudományok » Alkalmazott tudományok » Valaki tud segíteni egy...

Valaki tud segíteni egy hiányos kilencedfokú egyenlet megoldásában C++-ban?

Figyelt kérdés
Elkezdtem csinálni egy while ciklusban, de nem sikerül...

2015. máj. 18. 12:17
1 2
 1/16 Tengor ***** válasza:
Az algoritmus megvan?
2015. máj. 18. 12:27
Hasznos számodra ez a válasz?
 2/16 A kérdező kommentje:
nincs :/ annyit sejtek, hogy valahogy while ciklussal kéne
2015. máj. 18. 12:30
 3/16 Tengor ***** válasza:
Úgy akkor elég nehéz bármit kezdeni. Keress a neten egy algoritmust!
2015. máj. 18. 12:32
Hasznos számodra ez a válasz?
 4/16 anonim ***** válasza:

> „annyit sejtek, hogy valahogy while ciklussal kéne”

Annyit megsúgok, hogy bármelyikkel lehet.

2015. máj. 18. 12:48
Hasznos számodra ez a válasz?
 5/16 anonim ***** válasza:
Ez eddig elég LoL.
2015. máj. 18. 13:06
Hasznos számodra ez a válasz?
 6/16 A kérdező kommentje:
Hát algoritmust nem találtam. Arra gondoltam, hogy x-nek, a keresett változónak adok egy kezdeti értéket? mondjuk x=1.A while feltételében megvizsgálom, hogy az egyenlet(a*x^9+b*x+c=0) bal oldalának abszolút értéke kisebb-e mint 0,01. Így ugye egy közelítő megoldást kapunk, mert ha a megoldás végtelen tizedestört lenne, akkor a ciklusunk is végtelen lenne. Ezután a while ciklusban, ha az egyenlet bal oldala nagyobb mint nulla, akkor x értékét csökkentem x=0,75*x-re, ha az egyenlet bal oldala kisebb mint 0, akkor x értékét növelem x=1,5*x-re, de nem kaptam megoldást.
2015. máj. 18. 13:11
 7/16 A kérdező kommentje:
Ja és c<0 mindig.
2015. máj. 18. 13:13
 8/16 anonim válasza:
Az a baj, hogy ez így nem fog működni. Úgy kellene hiányosnak lennie, hogy nincs benne C. Ebben az esetben nullára redukálsz, szorzattá alakítassz, és onnantól ismerős a helyzet. Ezt csak egy módon tudod megoldani. Egy változó értéke 0.0001 lesz. Ez az X. Az ismert kifejezést (C) átviszed jobb oldalra. Ott csak ez marad. Az X-hez addig adsz hozzá 0.0001-et amíg azonosságot nem kapsz. Beállítassz egy különbözeti értéket, például 0.01. Ha a különbözeti értéknél kissebb az elétés a bal és a jobb oldal között, akkor leállítod a ciklust és megkapod a közelítő eredményt. Ha pontosat akarsz és nem állítassz be ilyet, és mégis végtelen ciklust kapsz, akkor az azt jelenti, hogy 1 tízezrednél kissebb lépésközel kell keresned a megoldást. Eltarhat egy darabig és az is lehet hogy nincs pontos megoldása (végtelen t.tört). Ekkora kell megadni a már említett különbözeti értéket.
2015. máj. 18. 13:42
Hasznos számodra ez a válasz?
 9/16 Wadmalac ***** válasza:
Csinálsz rá egy tipikus iterációs progit. Ötödfokútól felfelé megoldóképlet úgy sincs, szóval más megoldás nem nagyon lesz.
2015. máj. 18. 13:56
Hasznos számodra ez a válasz?
 10/16 A kérdező kommentje:

Ez így kéne működjön?

double a,b,c; (megadom az értékeiket)

x=0,00001;

int leall;

do

{

double bal, jobb;

bal=a*pow(x, 9)+b*x;

jobb=-c;

if(bal-jobb<0,01)

leall=1;

x=x+0,00001;

}while(leall=0);

és kiíratom x-et

2015. máj. 18. 14:20
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!