Merhaba arkadaşlar.Başlıkta olduğu gibi bir programla uğraşmaktayım.Bunu daha da geliştirmeyi düşünüyorum ama tabiki de eksikliklerim ve hatalarım var.Bunları düzeltmeme yardımcı olursanız sevinirim.
double f(double x); double integral(int a, int b);
int main() { double c; c = integral(0,5); printf("%lf The result of riemann sums.", c); getch(); return 0; } double f(double x) { return x*x; } double integral(int a, int b) { int i; double sum; double y=0; double x; double h; h = (b - a) / N; for (i = 1; i < N; i++) { x = x + i; y = sqrt(x); y+=(a + h*i); sum= h*y; } f(x); return 0; }
Daha önce simpson ile yapmıştım, riemann ile hiç denemedim fakat kodunuzda x'e başlangıç değeri vermemişsiniz.Düzelte düzelte doğruyu bulabileceğinize eminim.
Başlangıç değerimizle bitiş değerimizin arasını çok fazla sayıda dikdörtgene bölüyoruz ve çok fazla sayıda olan bu dikdörtgenlerin alanlarını topluyoruz. Böylece gerçeğe en yakın sonucu buluyoruz. Dikdörtgenlerin taban genişlikleri her seferinde "artis" diye bahsettiğim çok küçük bir sayı oluyor. Dikdörtgenlerin yükseklik değeri ise bulunulan x noktasının fonksiyondan return edilen değeri oluyor.
#include <stdio.h> #include <stdlib.h>
double f(double x){ return x*x; }
double integral(double baslangic,double son){ int cokBuyukSayi=100000,i; double artis=(son-baslangic)/cokBuyukSayi; double toplam=0;
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#define N 1000
double f(double x);
double integral(int a, int b);
int main() {
double c;
c = integral(0,5);
printf("%lf The result of riemann sums.", c);
getch();
return 0;
}
double f(double x)
{
return x*x;
}
double integral(int a, int b)
{
int i; double sum; double y=0; double x;
double h;
h = (b - a) / N;
for (i = 1; i < N; i++)
{
x = x + i;
y = sqrt(x);
y+=(a + h*i);
sum= h*y;
}
f(x);
return 0;
}