El algoritmo de Simpson que complica la programación en C
#include "iostream"
#include "stdio.h"
usando el espacio de nombres std; >#define f(x) sin(x)
#define a 1
#define b 5
long double fs(unsigned long n){
long i;
long double h=((long double)(b-a))/((long double)n
long double *x;
unsigned long m=n/2;
if(!(x=(long double*)malloc((n 1)*sizeof(long double)))) exit( OVERFLOW);
for(unsigned long i=0; ilt; =n; i ) x[i]=a i*h
long double sum=0.0; >
suma=h/3.0*(f((doble largo)a) f((doble largo)b));
for( i=0; ilt; m; i )suma = h/3.0*4.0*f(x[2*i 1]);
para ( i=1; ilt; m; i )sum =h/3.0*2.0*f(x[2* i]);
suma de retorno
}
void main(){
int n, i;
for(k=0;klt;13;k){
coutlt;lt; "Número de intervalos divididos n="lt;lt;nlt;lt;endl; p>long double ans;
ans=fs(n);
printf("La respuesta es: 13.16f\n",
}
}
No tengo TC, lo hice en VS2005 y la depuración fue exitosa
#include "math. h"
# incluye "iostream"
#incluye "stdio.h"
usando el espacio de nombres std;
# define f( x) sqrt(4-sin(x)*sin(x))
long double fs( unsigned long n, int a, int b){
long i ;
p>long double h=((long double)(b-a))/((long double)n)/2
long double *x;
sin firmar largo m=n;
if(! (x=(doble largo*)malloc((n 1
)*sizeof(long double)))) exit(OVERFLOW)) 33x=(long double*)malloc((n 1)*sizeof(long double)))) exit(OVERFLOW)); >
for(unsigned long i=0;ilt;=n;i) x[i]=a i*h;
long double suma=0.0;
suma= h/3.0*(f((doble largo)a) f((doble largo)b));
for( i=0; ilt; m; i )sum =h/3.0*4.0* f(x[2*i 1]);
for (i=1;ilt;m;i)sum =h/3.0*2.0*f(x[2*i]); p> p>
Devuelve suma
}
void main(){
int a, b
unsigned; long n ;
cout lt;lt; "Ingrese a:"; cingt;gt;a;
cout lt;lt; "Ingrese b:";cingt;gt;b ;
coutlt;lt; "entrada n:"; cingt;gt;n;
ans doble largo;
ans=fs(n, a, b) ;
printf("La respuesta es: 13.16f\n",ans);
}