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
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!
4/16 anonim válasza:
> „annyit sejtek, hogy valahogy while ciklussal kéne”
Annyit megsúgok, hogy bármelyikkel lehet.
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.
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.
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
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!