Riešenie polynómu
Kategorie: Informatika (celkem: 338 referátů a seminárek)
Informace o referátu:
- Přidal/a: anonymous
- Datum přidání: 07. dubna 2007
- Zobrazeno: 1902×
Příbuzná témata
Riešenie polynómu
Text zadaniaJe daná rovnica x3 -4x2 +2x +3 = 0. Zistite, či táto rovnica má celočíselné riešenie na intervale . Ak áno, vypíšte ho. V opačnom prípade vypíšte správu o neúspechu.
(Úloha č.: 6)
Formulácia problému
Program by mal zistiť riešenie polynómu x3 -4x2 +2x +3 = 0, ak mu na začiatku zadáme interval, na ktorom má hľadať toto riešenie. Bude vlastne dosadzovať za x celočíselné hodnoty z tohto intervalu a súčasne zisťovaž, či má celočíselné riešenie, alebo nemá. Na konci programu ma vypísať toto riešenie, prípadne správu o neúspechu.
Špecifikácia úlohy
Vstupné premenné: a, b
Vstupné podmienky: a, b Î Z
Výstupné premenné: k
Výstupné podmienky: a <= k <= b
Návrh algoritmu
· Prirodzený jazyk
Program musí na začiatku načítať vstupné premenné a, b. V tomto príklade bude asi najvýhodnejšie použiť cyklus so známym počtom opakovaní for, preto ze poznáme hranice intervalu, ktoré sme na začiatku na začiatku načítali.
V tele cyklu sa bude premenná cyklu dosadzovať za neznáme premenné do polynómu a výsledok po tomto dosadení priradí ďalšej – pomocnej premennej. Táto premenná sa potom ďalej porovnáva s nulou, aby sme zistili, či má polynóm v dosadenej premennej riešenie. Ak áno, tak túto dosadenú premennú výpíše ako správne riešenie. V ďalšom kroku som si zaviedol ešte počítadlo správnych riešení, ktoré využijeme, keď sa cyklus ukončí.
Po ukončení cyklu sa ešte porovnáva premenná, do ktorej sme ukladali počet správnych riešení a ten som porovnal s nulou.
Ak bola podmienka splnená, tak polynóm nemá riešenie na danom intervale.
· Grafická podoba algoritmu
· Pseudo jazyk
Začiatok
vstup(a);
vstup(b);
i:= 0;
pre k od a po b opakuj
Začiatok
c:= k3 –4k2 +2k +3;
ak c = 0 potom
Začiatok
výpis(k);
i = i + 1;
Koniec
Koniec
ak i = 0 potom
výpis(Nemá riešenie);
Koniec
Program v jazyku C
#include
#include
#include
void main()
{
int a,b,k,i,f;
f=0,i=0;
clrscr();
printf("Zadajte dolnu hranicu intervalu:");
scanf("%d",&a);
printf("Zadajte hornu hranicu intervalu:");
scanf("%d",&b);
for(k=a;k<=b;k++)
{
f =(pow(k,3)-4*pow(k,2)+(2*k)+3);
if(f==0) printf("Riesenie je:%dn",k),i=i+1;
}
if (i==0)
{
printf("Rovnica nema na intervale riesenie!");
}
else printf("Koniec.");
getch();
}
Testovanie pomocou tabuľky
1 2 3 4 5
a 1 1 1 1 1 1
b 5 5 5 5 5 5
k - 1 2 3 4 5
c - 2 -1 0 11 38
i 0 0 0 1 1 1
Interval <1,5>.
Zhodnotenie
Tento program je vo svojej podstate veľmi jednoduchý. V plnej miere využíva cyklus so známym počtom opalovaní, preto že na začiatku načítame interval od do. V tele tohto cyklu využívam porovnávanie výsledku polynómu s konštantou 0. Keď sa polynóm rovná nule, to znamená, že má riešenie. Toto správne riešenie hneď vypíšem a následne použiem počítadlo na jeho zaznamenanie. Keď sa cyklus skončí porovnávam toto počítadlo s nulou a ak sa rovná nule, tak program vypíše hlásenie o neúspechu.
Tento program by sa dal ešte na začiatku ošetriť tým, že za vstupné premenné nemôžme dosadiť hodnoty nekonečno. Môhli by sme v tomto programe použiť aj iní typ cyklu, ale ten by už nebol taký efektívný ako tento.