Red de conocimiento informático - Conocimiento informático - Ayuda a programar en C. . . . .

Ayuda a programar en C. . . . .

//Archivo de encabezado

//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:

doble operador()(doble x) const

{

return pow(Euler, -x*x);

}

};

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;

}