Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <stdlib.h>
- #include <stdio.h>
- using namespace std;
- // Erstellt einen Pointer einen double Wert!
- typedef double (*func)(double);
- // Die verwendete Funktion
- double f(double x){
- return sin(x);
- }
- double g(double x)
- {
- return x*x;
- }
- double trapez (double a, double b,int n,int antin,func f)
- {
- double ergebnis=0;
- double h;
- double ueberpruefer;
- double antih;
- h = (b-a)/n;
- for (int i = 1; i <=n; i++) {
- ergebnis += f(a+h*(2*i-1)/2);
- }
- ergebnis*=h;
- // Anti Ergebniss
- antih= (b-a)/antin;
- for (int x = 1; x <=antin; x++) {
- ueberpruefer+= f(a+antih*(2*x-1)/2);
- }
- ueberpruefer*=antih;
- if (fabs((ueberpruefer-ergebnis)/ergebnis)>=0.000001) {
- n=n*2;
- antin=antin*2;
- cout << antin << endl;
- ueberpruefer= trapez(a,b,n,antin,f);
- }
- return ueberpruefer;
- }
- double integral (double a, double b, int n,func f)
- {
- double h= (b-a)/n;
- double x;
- double qf;
- double sum;
- qf=f(a)+f(b);
- sum=0.;
- for (int k =1; k <=n-1; k++) {
- x=a+k*h;
- sum+=f(x);
- }
- qf+=2*sum;
- sum=0;
- for (int k=1; k<=n; k++) {
- x=((a+(k-1)*h)+(a+k*h))/2;
- sum+=f(x);
- }
- qf+=4*sum;
- return qf*h/6;
- }
- double* faltungsintegral(double a,double b, int n,func f,func g){
- double ergebniss=0;
- double qf=0;
- double h;
- int k,i=0;
- double *ary;
- ary = (double*)malloc(10000*sizeof(double));
- h=(b-a)/n;
- for(double t = a; t<=b; t=t+h){
- qf=(f(a)*g(a-t))+(f(b)*g(b-t));
- for(k=1;k<n;k++){
- qf+=2*((f(a+(h*k)))*(g(a+(h*k)-t)));
- }
- //cout << qf<< endl;
- for(k=1;k<=n;k++){
- qf+=4*((f(((a+h*k)+(a+(h*(k-1))))/2))*(g(-t+((a+h*k)+(a+(h*(k-1))))/2)));
- }
- //cout << qf << endl;
- ergebniss = (qf * h)/6;
- ary[i]=ergebniss;
- i++;
- }
- // for (int tau = 0; tau<n;tau++){
- // printf("%lf\n", ary[tau]);
- // }
- return ary;
- }
- int main()
- {
- double* d ;
- double a=0;
- double b=2;
- double n=20;
- // double h = (b-a)/n;
- /*
- for(double t = a; t<=b;t=t+h){
- arrays[arraystelle]=faltungsintegral(a,b,n,arraystelle,t,&g,&g);
- arraystelle++;
- }
- cout << arrays[0] << endl;
- */
- d=faltungsintegral(a,b,n,&f,&g) ;
- for (int tau = 0; tau<=n;tau++){
- cout << d[tau] << endl;
- }
- // for (int x=0; x<=10;x++){
- // cout << d << endl;
- //}
- free(d);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement