Úloha č. 4


Název úlohy: Určitý integrál
Datum: 27.10.1997
Obtížnost: Z
Předpokládané znalosti: cyklus while, matematická funkce sin(x), příkaz přiřazení


Zadání
Učitel na střední škole dal studentům úlohu, aby vyřešili výpočet určitého integrálu funkce sin(x) v intervalu daného dolní a horní mezí <D;H>. Tento problém měli vyřešit tzv. obdélníkovou metodou. Studenti chvíli přemýšleli a příklad zdárně spočítali. Dokážete to také? Vy však nebudete tento příklad počítat na papír, ale napíšete na to program.

Bližší popis

  1. Numerické integrování spočívá ve zjišování plochy ohraničené křivkou a osou x pomocí ploch obdélníků, které jsou umísovány tak, aby co nejvíce pokrývaly skutečnou plochu.

Diskuse k řešení
  1. Obdélníková metoda - obdélníky umísujeme počínaje dolní mezí integrace D, jejich šířka je dána hodnotou L a jejich výška funkční hodnotou v levém bodě.
  2. Čím bude číslo L nižší, tím přesnější bude výpočet urč. integrálu.
  3. Když si rozdělím interval např. na 8 dílů (tj. L=(H-D)/8), získám obdélníky o plochách P1 až P8 a jejich součet: P1+P2+P3+P4+P5+P6+P7+P8 dává výsledek výpočtu určitého integrálu v intervalu <D;H>.
  4. Plocha jednoho obdélníka je dána jednoduchým vztahem: Px=sin(x)*L, kde sin(x) je funkční hodnota fce sinus v bodě x.
  5. Součet lze tedy napsat jako: sin(x1)*L+sin(x2)*L+sin(x3)*L+...+sin(x8)*L
  6. Řešení programu spočívá v cyklu, kde se bude postupně měnit hodnota proměnné X od D do H po kroku STEP a sečtou se funkční hodnoty pro každé X. Po ukončení cyklu získaný součet se vynásobí šířkou STEP.
  7. Je-li ale zadána taková šířka obdélníků, že do šířky intervalu se jich nevejde celý počet, je nutné vypočítat plochu posledního (menšího) obdélníka. Šířka tohoto obdélníka je H-X a výška je rovna funkční hodnotě.
  8. Poznámka: Algoritmus správně funguje, je-li STEP kladný a interval neprázdný (D<H)

Řešení
Program Urc_integral;
var D,H,X,Step,Integral: real;
BEGIN
writeln(' Zadejte dolni mez, horni mez, krok: ');
readln(D,H,Step);

if (D<H) and (Step>0) then
begin
Integral:=0;
X:=D;
while X<=H-Step do
begin
Integral:=Integral+sin(X);
X:=X+Step;
end;

Integral:=Integral*Step;
Integral:=Integral+sin(x)*(B-X) {posledni ploska}
writeln(' Urcity integral funkce je: ',Integral:10:5);
end
else writeln(' Chybne vstupni udaje! ');
END.



[Archív] [Změna kódování]