[C] Wyznaczanie pola pod wykresem metodą trapezów.

Akker
Użytkownik
Użytkownik
Posty: 10
Rejestracja: 3 kwie 2007, o 17:28
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 1 raz

[C] Wyznaczanie pola pod wykresem metodą trapezów.

Post autor: Akker »

Kod: Zaznacz cały

#include <stdlib.h>
#include <stdio.h>
//	Funkcja, dla ktorej liczymy calke Reimanna
	double f(double x){
  	return(x*x+2*x);
	}
//	Program glowny
	int main(){
	const int N=1000; //liczba punktów podzialowych
  	double xp,xk,s,dx;
	printf(	"Podaj poczatek przedzialu calkowania
"
			"Wpisz tutaj: ");
  				if(!scanf("%lf", &xp)) {
  					printf("FATAL ERROR
");
				}
 	printf(	"Podaj koniec przedzialu calkowania
"
 			"Wpisz tutaj: ");
  				if(!scanf("%lf", &xk)){
				   printf("FATAL ERROR
");
				}
  	s=0;
 	dx=(xk-xp)/N;
  	for(int i=1; i<N; ++i)s+=f(xp+i*dx);
  	s=(s+(f(xp)+f(xk))/2)*dx;
  	printf("Wartosc calki wynosi: %lf
", s);			
	system("pause");
	return 0;
	}
Witam,

Czy można w kodzie coś zmodyfikować, aby był "lepszy"?

Proszę o pomoc i dziękuję za odpowiedzi.
szw1710

[C] Wyznaczanie pola pod wykresem metodą trapezów.

Post autor: szw1710 »

Istota sprawy jest tu:

Kod: Zaznacz cały

  	s=0;
 	dx=(xk-xp)/N;
  	for(int i=1; i<N; ++i)s+=f(xp+i*dx);
  	s=(s+(f(xp)+f(xk))/2)*dx;
\(\displaystyle{ s}\) to przybliżona wartość całki. Chyba prościej się nie da. Oczywiście nie podejmuję się oceniać dalszej części kodu - informatykiem nie jestem, patrzę tu na matematykę
Akker
Użytkownik
Użytkownik
Posty: 10
Rejestracja: 3 kwie 2007, o 17:28
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 1 raz

[C] Wyznaczanie pola pod wykresem metodą trapezów.

Post autor: Akker »

Skoro prosciej sie nie da to bardzo mnie to cieszy. Miloby bylo gdyby ktos spojrzal na kod i sprawdzil czy mozna go jeszcze w jakis sposob zoptymalizowac.

Dziekuje Panu wyzej za odpowiedz.
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C] Wyznaczanie pola pod wykresem metodą trapezów.

Post autor: wawek91 »

Skoro matematyk powyżej mówi, że tej części się już nie da zoptymalizować to raczej nic nie zoptymalizujesz (okiem programisty ). Samego wprowadzania danych nie ma po co optymalizować, bo to są i tak przecież ułamki sekundy, a najwięcej czasu zajmuje pętla. Bo chyba na optymalizacji pamięci Ci nie zależy, zresztą też niewiele można byłoby zrobić.
Akker
Użytkownik
Użytkownik
Posty: 10
Rejestracja: 3 kwie 2007, o 17:28
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 1 raz

[C] Wyznaczanie pola pod wykresem metodą trapezów.

Post autor: Akker »

Skoro nie da się bardziej zoptymalizować, uważam temat za zamknięty.
ODPOWIEDZ