W tej sekcji zapoznamy się ze sposobem obliczania przybliżonej wielkości pola obszarów zamkniętych metodą trapezówmetoda trapezówmetodą trapezów w języku Java.

Metoda trapezów

Specyfikacja problemu:

Dane:

  • xPoczatek – liczba rzeczywista; początek przedziału

  • xKoniec – liczba rzeczywista; koniec przedziału

  • liczbaTrapezow – liczba naturalna dodatnia; liczba podprzedziałów

  • f(x) – funkcja rzeczywista zmiennej rzeczywistej

Wynik:

  • wynik – liczba rzeczywista; przybliżona wartość pola pod wykresem funkcji na zadanym przedziale

Zacznijmy omówienie zagadnienia dotyczącego metod obliczania przybliżonego pola pod krzywą od zdefiniowania funkcji f ( x )   =   x 2   +   1. Będzie zwracała liczbę zmiennoprzecinkową i przyjmowała jeden argument, liczbę zmiennoprzecinkową x. Za jej pomocą obliczymy wartość funkcji w punkcie x.

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. zamknij nawias klamrowy. Linia 11. zamknij nawias klamrowy.

Zdefiniujemy funkcję f(x) oraz zadeklarujemy zmienne liczbaTrapezow, xPoczatek, xKoniec.

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. double liczbaTrapezow znak równości 3 średnik. Linia 9. double xPoczatek znak równości minus 1 średnik. Linia 10. double xKoniec znak równości 0 kropka 5 średnik. Linia 12. zamknij nawias klamrowy. Linia 14. zamknij nawias klamrowy.

Wyznaczamy wysokość każdego trapezu. Tworzymy również zmienną pomocniczą wynik. Do niej przekażemy otrzymaną wartość.

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. double liczbaTrapezow znak równości 3 średnik. Linia 9. double xPoczatek znak równości minus 1 średnik. Linia 10. double xKoniec znak równości 0 kropka 5 średnik. Linia 12. double h znak równości otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły prawy ukośnik liczbaTrapezow średnik. Linia 13. double wynik znak równości 0 średnik. Linia 15. zamknij nawias klamrowy. Linia 17. zamknij nawias klamrowy.

Zapiszmy pętlę, która zsumuje pola trapezów i otrzymaną wartość przypisze do zmiennej wynik. Program zakończy działanie pętli po obliczeniu pól wszystkich trapezów. By wyznaczyć pole trapezu, potrzebujemy długości jego wysokości, którą obliczyliśmy i przypisaliśmy do zmiennej . Brakuje jeszcze długości podstaw – wyznaczymy je, obliczając wartość funkcji w punktach xi oraz xi1.

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. double liczbaTrapezow znak równości 3 średnik. Linia 9. double xPoczatek znak równości minus 1 średnik. Linia 10. double xKoniec znak równości 0 kropka 5 średnik. Linia 12. double h znak równości otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły prawy ukośnik liczbaTrapezow średnik. Linia 13. double wynik znak równości 0 średnik. Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaTrapezow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. double xi znak równości xPoczatek plus otwórz nawias okrągły i prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 17. double xi1 znak równości xPoczatek plus otwórz nawias okrągły otwórz nawias okrągły i plus 1 zamknij nawias okrągły prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 19. zamknij nawias klamrowy. Linia 21. zamknij nawias klamrowy.

Stwórzmy zmienne pomocnicze a, do której zapiszemy wartość funkcji f(xi), oraz b, do której zapiszemy wartość funkcji w drugim punkcie, czyli f(xi1).

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. double liczbaTrapezow znak równości 3 średnik. Linia 9. double xPoczatek znak równości minus 1 średnik. Linia 10. double xKoniec znak równości 0 kropka 5 średnik. Linia 12. double h znak równości otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły prawy ukośnik liczbaTrapezow średnik. Linia 13. double wynik znak równości 0 średnik. Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaTrapezow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. double xi znak równości xPoczatek plus otwórz nawias okrągły i prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 17. double xi1 znak równości xPoczatek plus otwórz nawias okrągły otwórz nawias okrągły i plus 1 zamknij nawias okrągły prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 19. double a znak równości f otwórz nawias okrągły xi zamknij nawias okrągły średnik. Linia 20. double b znak równości f otwórz nawias okrągły xi1 zamknij nawias okrągły średnik. Linia 22. zamknij nawias klamrowy. Linia 24. zamknij nawias klamrowy.

Do zmiennej wynik dodajemy wartość obliczonego pola trapezu.

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. double liczbaTrapezow znak równości 3 średnik. Linia 9. double xPoczatek znak równości minus 1 średnik. Linia 10. double xKoniec znak równości 0 kropka 5 średnik. Linia 12. double h znak równości otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły prawy ukośnik liczbaTrapezow średnik. Linia 13. double wynik znak równości 0 średnik. Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaTrapezow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. double xi znak równości xPoczatek plus otwórz nawias okrągły i prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 17. double xi1 znak równości xPoczatek plus otwórz nawias okrągły otwórz nawias okrągły i plus 1 zamknij nawias okrągły prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 19. double a znak równości f otwórz nawias okrągły xi zamknij nawias okrągły średnik. Linia 20. double b znak równości f otwórz nawias okrągły xi1 zamknij nawias okrągły średnik. Linia 22. wynik znak równości wynik plus otwórz nawias okrągły otwórz nawias okrągły a plus b zamknij nawias okrągły asterysk h zamknij nawias okrągły prawy ukośnik 2 średnik. Linia 24. zamknij nawias klamrowy. Linia 26. zamknij nawias klamrowy.

Wypisujemy wynik.

Cały kod programu wygląda następująco:

Linia 1. public class Zadanie otwórz nawias klamrowy. Linia 3. static double f otwórz nawias okrągły double x zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. return minus x asterysk x plus 1 średnik. Linia 5. zamknij nawias klamrowy. Linia 7. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. double liczbaTrapezow znak równości 3 średnik. Linia 9. double xPoczatek znak równości minus 1 średnik. Linia 10. double xKoniec znak równości 0 kropka 5 średnik. Linia 12. double dx znak równości otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły prawy ukośnik liczbaTrapezow średnik. Linia 13. double wynik znak równości 0 średnik. Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaTrapezow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. double xi znak równości xPoczatek plus otwórz nawias okrągły i prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 17. double xi1 znak równości xPoczatek plus otwórz nawias okrągły otwórz nawias okrągły i plus 1 zamknij nawias okrągły prawy ukośnik liczbaTrapezow zamknij nawias okrągły asterysk otwórz nawias okrągły xKoniec minus xPoczatek zamknij nawias okrągły średnik. Linia 19. double a znak równości f otwórz nawias okrągły xi zamknij nawias okrągły średnik. Linia 20. double b znak równości f otwórz nawias okrągły xi1 zamknij nawias okrągły średnik. Linia 21. double h znak równości dx średnik. Linia 23. wynik znak równości wynik plus otwórz nawias okrągły otwórz nawias okrągły a plus b zamknij nawias okrągły asterysk h zamknij nawias okrągły prawy ukośnik 2 średnik. Linia 25. zamknij nawias klamrowy. Linia 27. System kropka out kropka println otwórz nawias okrągły wynik zamknij nawias okrągły średnik. Linia 29. zamknij nawias klamrowy. Linia 31. zamknij nawias klamrowy.

Wynik działania programu:

Linia 1. 1 kropka 0625.
Problem 1

Przetestuj działanie programu dla następujących danych:

Linia 1. xPoczatek znak równości minus 1. Linia 2. xKoniec znak równości 0 kropka 5. Linia 3. liczbaTrapezow znak równości 1000. Linia 4. f otwórz nawias okrągły x zamknij nawias okrągły znak równości minus x asterysk x plus 1.

Specyfikacja problemu:

Dane:

  • xPoczatek – liczba rzeczywista; początek przedziału

  • xKoniec – liczba rzeczywista; koniec przedziału

  • liczbaTrapezow – liczba naturalna dodatnia; liczba podziałów

  • f(x) – funkcja rzeczywista zmiennej rzeczywistej

Wynik:

Program wypisuje przybliżoną wartość pola ograniczonego wykresem funkcji f(x) oraz prostymi xPoczatekxKoniec obliczoną za pomocą metody trapezów w zadanym przedziale z dokładnością do dwóch miejsc po przecinku.

R1Iy9V6tJozP3
Wymyśl pytanie na kartkówkę związane z tematem materiału.

Słownik

metoda prostokątów
metoda prostokątów

metoda szacowania wartości pola powierzchni pod wykresem funkcji za pomocą sumy pól prostokątów, będących przybliżeniem obszaru ograniczonego wykresem funkcji i osią OX

metoda trapezów
metoda trapezów

metoda szacowania wartości pola powierzchni pod wykresem funkcji za pomocą sumy pól trapezów, będących przybliżeniem obszaru ograniczonego wykresem funkcji i osią OX