< Circuit Theory < Convolution Integral 
 
        
      #include <iostream>
#include <TF1.h>
#include <TCanvas.h>
#include <TAttLine.h>
#include <TLegend.h>
#include <TLegendEntry.h>
#include <TLatex.h>
#include <TGraph.h>
//Instantiate the functions and graphs to be used
//Their properties will be set later
TF1 *func1;       //The function to be translated
TF1 *func2;       //The Function to be reflected
TF1 *func3;       //The product of func1 and func2
TGraph *graph4;   //The Resulting Convolution Graph
//Set Precision of the Integrals (number of steps)
Int_t precision = 100;
//Create an animated gif?
Bool_t createGIF = true;
//Does the multiplication of the two functions
Double_t multipliedFuncs(Double_t *x, Double_t *par){
  Double_t xx = x[0];
  Double_t f_x = func1->Eval(xx)*func2->Eval(xx);
  return f_x;
}//End multipliedFuncs
//Find the larger value between of the functions
//This is used to shade the overlap region
Double_t smallerValue(Double_t x){
  
  //Evaluate the Functions
  Double_t val1 = func1->Eval(x);
  Double_t val2 = func2->Eval(x);
  
  if (val1 < val2)
    return val1;
  else
    return val2;
}//End largerValue
//Makes Graph 5 for each x position
//Graph 5 is responsible for shading the overlap region
TGraph *graph5 = new TGraph();
void makeGraph5(){
  Double_t tempX =-10.0;
  Int_t point = 0;
  //Loop Over all values of x and find the overlap region to shade
  do {
    graph5->SetPoint(point, tempX, smallerValue(tempX));
    
    tempX += 0.05;
    point++;
  } while(tempX < 10.0);
}//End makeGraph5
    This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.