코드를 작성하고 실행하면 올바르게 작동하지 않는 것을 볼 수 있습니다.이 문제는 책에서 나옵니다. (C에서의 문제 해결 및 프로그램 디자인) .2 방정식을 제공하고 대략적인 면적을 찾으려합니다. 2, 4, 8, 16, 32, 64, 128 n의 값을 가진 콜 트랩을 추가합니다.사다리꼴 규칙 질문
출력 코드가 음수이고 -nan입니다.
g(x) = x^2sinx (a = 0, b = 3.14159)
h(x) = sqrt(4-pow(x.2)) (a =-2, b=2);
그리고 코드는 다음과 같습니다 : 방정식은
#include <stdio.h>
#include <math.h>
void trap(double a,double b, int n, double *areag, double *areah);
double g(double x);
double h(double x);
int main(void)
{
double areag = 0.0, areah = 0.0;
double a1 = 0, b1 = 10;
int n;
for(n=2;n<=128;n*=2){
trap(a1, b1, n, &areag, &areah);
printf("%f %f\n", areag, areah);
}
return(0);
}
double g(double x){
return(pow(x,2)*sin(x));
}
double h(double x){
return(sqrt(4-pow(x,2)));
}
void trap(double a,double b, int n, double *areag, double *areah){
int i, l;
*areag = (b-a)/2*n * (g(a) + g(b));
for(i = 1; i<=n-1;i++)
*areag += 2*g(i);
*areah = (b-a)/2*n * (h(a) + h(b));
for(l=1;l<=n-1;l++)
*areah += 2*h(i);
}
'i = 0, ..., n'인 'a + (i/n) * (ba)'에서 'g'와 'h'를 평가하면 안된다. 'a'와 'b'사이에 같은 간격의 점이 있습니까? – Aniko