如何用C语言求二重定积分?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 03:21:18
如何用C语言求二重定积分?

如何用C语言求二重定积分?
如何用C语言求二重定积分?

如何用C语言求二重定积分?

按二重积分的定义做. 

我的这个出错,一起讨论下吧:

#include<stdio.h>

#include<math.h>

#define N 100

void main(){

\x09double result,(*p)(double,double);

\x09double f(double,double);

\x09double integral(double,double,double,double,double(*p)()); 

\x09p=f;

//\x09printf("请输入a b c d 的值:\n");

//\x09scanf("%lf %lf %lf %lf",&a,&b,&c,&d);

\x09result=integral(2.0,8.0,0,6.0,p);

\x09printf("该二重积分的值为:\n");

\x09printf("%f",result);

\x09printf("\n");

}

//求二重积分的函数

double integral(double a,double b,double c,double d,double (*p)(double,double)){

\x09int i,j;

\x09double x,y,h1,h2,volum=0;

                h1=(b-a)/N;

\x09h2=(d-c)/N;

\x09x=a;

\x09y=c;

\x09for(i=0;i<N;i++){

\x09\x09for(j=0;j<N;j++){

\x09\x09\x09volum+=(*p)(x,y)*h1*h2;

\x09\x09\x09y+=h2;

\x09\x09}

\x09\x09x+=h1;

\x09}

\x09return(volum);

}

double f(double x,double y){

\x09double h;

\x09h=sqrt((2+x*x)*sin(x*y)*sin(x*y))+x*x*y*cos(x)-30*x*y*y;

\x09return (h);

}

运行结果: