Wpis z mikrobloga

#programowanie #cplusplus

Ogólnie mam prace semestralna z programowania o obliczaniu całki oznaczonej metoda trapezów i naklikałem coś takiego:

#include

#include

#include

using namespace std;

double f(double x)

{

return(x*x+2*x);

}

int main()

{

double a, b, s, dx, N;

int i;

cout << "Obliczanie calki oznaczonej dla funkcji:" << endl;

cout << "f(x)= x*x+2*x" << endl;

cout << "za pomoca metody trapezow"<< endl;

cout << endl;

cout << "Podaj wartosc a" << endl;

cin >> a;

cout << "Podaj wartosc b" << endl;

cin >> b;

if (!(a cout << "Taki przedzial nie istnieje";

else

cout << "Podaj liczbe trapezow (im wiecej tym dokladniejszy wynik)" < cin >> N;

cout << endl;

s=0;

dx = (b-a)/N;

for (i=1;i s+= f(a+i*dx);

s= (s+(f(a)+f(b))/2)*dx;

cout << "Wartosc calki wynosi: "<< setprecision(5)< return 0;

}


Przy pisaniu tego programu posiłkowałem się z tych stron:
http://www.algorytm.edu.pl/algorytmy-maturalne/metoda-trapezow.html
https://eduinf.waw.pl/inf/alg/004_int/0003.php

I większość ogarniam ale nie rozumiem tego co się stało w tej części:

for (i=1;i s+= f(a+i*dx);

s= (s+(f(a)+f(b))/2)*dx;


for (i=1; i
  • 28
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@piwniczny_prawiczek: ahh, nwm, myślałem że chodzi o kod który ja wkleiłem ( ͡° ͜ʖ ͡°), ale to też jest mylące, jeśli nie jest to oddzielone spacją czy coś w tym stylu, prawidłowe nazywanie zmiennych, i prawidłowa składnia są ważne
  • Odpowiedz
@japecznikow: Podajac "dużą" liczbę trapezów, cząstkowe pole moze byc na tyle male i niedokladne, ze gdy sumujac (całkując) te male pola czastkowe skumulujesz bledy precyzji liczby zmiennoprzecinkowej i dostaniesz wynik niedokladny.

Zrob test dla jakies funkcji, ktora przy calkowaniu przy uzyciu metody trapezow daje wynik dokladny - rodzina funkcji f(x) = ax + b, dla a ∈ (0,1)
  • Odpowiedz