Ayuda a programar en C. . . . .
//Declaración de clase Trapzint.h
#include lt;iostreamgt;
#include lt;cmathgt;
usando el espacio de nombres std;
const double EP = 1e-7;
const double Euler = 2.718281828;
clase F //declaración de la clase abstracta F , que es una clase de funciones que están integradas y que deben ser anuladas por funciones que no tienen sentido para implementar las integrales de diferentes funciones
{
public:
operador doble virtual()(doble x) const = 0; //operador de sobrecarga() con función puramente virtual
};
clase Fun1: public F //función log(1 x)/(1 x^2)
{
public:
doble operador()(doble x) const // Implementación en línea de la función virtual, y es una función miembro constante (los miembros de datos del objeto no se pueden actualizar)
{
return log(1.0 x)/(1.0 x*x ) ;
}
};
clase Fun2: pública F
{
pública: p >
doble operador()(doble x) const
{
return pow(Euler, -x*x);
} p >
};
class Integ //La clase Total Integral, una clase abstracta, necesita cubrir diferentes métodos de integración
{
public:< / p>
operador doble virtual ()(doble a, doble b, doble eps) const = 0;
};
clase Trapz: public Integ //Esto es Clase integral utilizada de fórmula de producto trapezoidal de paso variable.
const F amp; f; // Puntero a un objeto de clase F
};
//Fin del archivo Trapzint.h.
h
//*Clase Trapzint.cpp
#include lt;iostreamgt;
#include "Trapzint.h"
doble Trapz::operator ()(doble a, doble b, doble eps) const
Doble Trapz::operator()(doble a, doble b, doble eps) const
{
int done(0); //es un número entero
int n;
doble h, Tn, T2n
n; = 1;
h = b - a;
Tn = h*(f(a) f(b)) /2.0; p>
cout lt;lt; n lt;lt; " " lt;lt; Tn lt;endl; p>
double temp(0.0);
for ( int k = 0; k lt; n; k ) // suma de n copias
{
doble x = a (k 0.5)*h
temp = f(x
}
T2n = (Tn h*temp); )/2.0;
cout lt.lt; 2*n lt;lt; " " lt;lt; T2n lt;lt;
if (fabs(T2n - Tn) ) lt; eps) hecho = 1;
else
{
Tn = T2n
n *= 2; p>
p>
h /= 2
}
}
devuelve T2n; /p>
/Fin
//función principal
#include lt;iomanipgt;
#include lt;iostreamgt;
#include " Trapzint.h"
usando el espacio de nombres std;
int main ()
{
Fun1 f1;
Fun2 f2;
Trapz trapz1(f1);
Trapz trapz2(f2);
cout lt;lt "Función 1; : \n";
cout lt;lt; "El resultado de TRAPZ Integral:" lt;lt; setprecision(7) lt; lt; trapz1 (0, 2, EP) lt;lt; endl ;
cout lt; lt; "Función 2: \n";
cout lt; "El resultado de TRAPZ Integral: " lt.setprecision(5) lt; ; trampaz2 (0, 1, 1e-4) lt;
p>
devuelve 0;
}