Witam wszystkich serdecznie!
Mam problem z osiągnięciem ostatecznej formy programu, nad którym pracuję podczas nauki języka C/C++. Polecenie brzmi następująco:
**Napisz program, który oblicza pole powierzchni ograniczonej wykresem funkcji wielomianowej f(x) = oraz osią OX w zakresie między xp i xk. Zastosuj metodę trapezów, która opiera się na podziale wyznaczanego obszaru na trapezy i zsumowaniu pól trapezów. Liczbę trapezów, początek i koniec przedziału (xp, xk) podaje użytkownik. Współczynniki wielomianu a, b, c, d są podane również przez użytkownika i zapisane w tablicy. **
Dodam, że wiem, że takiego typu zadania rozwiązuje się poprzez użycie całek, ale muszę ominąć ten sposób i zastosować inny! Tak samo nie mogę korzystać z własnych funkcji w programie!
Niżej przedstawiam Wam napisany przeze mnie kod - nie widzę tu żadnego błędu, a program i tak nie potrafi dobrze obliczyć pola powierzchni.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float xp, xk, h, a, b, ile_trapezow, b_pom, suma = 0, pole = 0;
int i;
int wsp[4];
printf("Program obliczajacy pole powierzchni ograniczonej wykresem funkcji f(x) = ax^3+bx^2+cx+d\n");
printf("oraz osia OX w zakresie miedzy xp i xk (podanym przez uzytkownika).\n\n\n");
printf("Podaj kolejno wspolczynniki a, b, c, d podanej wyzej funkcji wielomianowej:\n");
for(i=0; i<4; i++)
{
scanf("%d", &wsp[i]);
}
system("cls");
printf("Podaj poczatek przedzialu xp: ");
scanf("%f", &xp);
printf("Podaj koniec przedzialu xk: ");
scanf("%f", &xk);
system("cls");
printf("Podaj, na ile trapezow chcesz podzielic obszar ograniczony (im wiecej, tym dokladniejszy wynik): ");
scanf("%f", &ile_trapezow);
h = (xk-xp)/ile_trapezow;
a = wsp[0]*pow(xp,3) + wsp[1]*pow(xp,2) + wsp[2]*xp + wsp[3];
for(i=1; i<=ile_trapezow; i++)
{
pole = 0;
b = wsp[0]*(a+(h*i))*(a+(h*i))*(a+(h*i)) + wsp[1]*(a+(h*i))*(a+(h*i)) + wsp[2]*(a+(h*i)) + wsp[3];
pole = (a+b)*h*0.5;
printf("Pole %d = %d\n", i, pole);
suma = suma + pole;
a = b;
}
printf("\n\nPole wynosi %.1f", suma);
}