Riešenie polynómu

Kategorie: Informatika (celkem: 338 referátů a seminárek)



Riešenie polynómu

Text zadania

Je 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.

Nový příspěvek



Ochrana proti spamu. Kolik je 2x4?