[C++] Implementacja metody trapezów

placky
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 30 paź 2012, o 00:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 18 razy
Pomógł: 2 razy

[C++] Implementacja metody trapezów

Post autor: placky »

Witam. Dostaliśmy następujące zadanie:
Ukryta treść:    
Czy mógłby ktoś zweryfikować moją implementację (na zadanych powyżej warunkach) tej metody?
Będę wdzięczny za pomoc.

Kod: Zaznacz cały

#include <iostream>
#include <cmath> // abs
using namespace std;
 
float a, b, c;

double trapez(double p, double q, double h)
{
    return h * (p + q)/2;
}

double func (float x)
{
	return a*x*x + b*x + c;
}

int main()
{
	int n = 2;
	float xp, xk, e, dx;
	double S = 0, S1 = 1;
	
	cout << "Wprowadz wspolczynnik a: "; cin >> a;
	cout << "Wprowadz wspolczynnik b: "; cin >> b;
	cout << "Wprowadz wspolczynnik c: "; cin >> c;
	
	cout << "Podaj xp: "; cin >> xp;
	cout << "Podaj xk: "; cin >> xk;
	
	cout << "Podaj dokladnosc e: "; cin >> e;
	

	S1 = trapez (func(xp), func(xk), (xk - xp));
	
	do
	{
		dx = (xk - xp)/n; // wysokość pojedynczego trapezu
		
		S = S1;
		S1 = 0;
		
		for (int i = 0; i < n; i++) S1 += trapez (func(xp + i*dx), func(xp + (i + 1)*dx), dx); // sumowanie n - trapezów
		
		n*=2;
		
	} while ((abs(S1) - abs(S))/abs(S) > e); // warunek "dokladności"
	
	cout << "

Pole S wynosi w przyblizeniu: " << S1;
	cin.ignore();
	cin.get();
}
Awatar użytkownika
steal
Użytkownik
Użytkownik
Posty: 1043
Rejestracja: 7 lut 2007, o 18:35
Płeć: Mężczyzna
Lokalizacja: Białystok|Warszawa
Podziękował: 6 razy
Pomógł: 160 razy

[C++] Implementacja metody trapezów

Post autor: steal »

Nie kompilowałem, ale wygląda w porządku.
placky
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 30 paź 2012, o 00:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 18 razy
Pomógł: 2 razy

[C++] Implementacja metody trapezów

Post autor: placky »

A ja znalazłem błąd

Kod: Zaznacz cały

while ((abs(S1) - abs(S))/abs(S) > e); // warunek "dokladności"
Powinno być:

Kod: Zaznacz cały

while ((abs(S1 - S)/abs(S) > e)

ODPOWIEDZ