| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1323 人关注过本帖
标题:C语言 高斯积分公式
只看楼主 加入收藏
sinodoo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
C语言 高斯积分公式
#include <stdio.h>
#include <math.h>
#define N 3
float gauss(float(*)(float), float, float, int);
void main( )
{
float function_name(float);
float a, b;
printf ("请输入积分上限b\n");
scanf("%f", &b);
printf("请输入积分下限a\n");
scanf("%f", &a);
float ans;
ans=gauss(function_name, a, b, N);
printf("ans=%f", ans);
}

float gauss(float(*func)(float x), float a, float b, int n )/*高斯求积*/
{
/*高斯点及其求积系数列表*/
float x1[1]={0.0};
float A1[1]={2};
float x2[2]={-0.5573503, 0.5573503};
float A2[2]={1, 1};
float x3[3]={-0.7745967, 0.0, 0.7745967};
float A3[3]={0.555556, 0.888889, 0.555556};
float x4[4]={0.3399810, -0.3399810, 0.8611363, -0.8611363};
float A4[4]={0.6521452, 0.6521452, 0.3478548, 0.3478548};
float x5[5]={0.0, 0.5384693, -0.5384693, 0.9061799, -0.9061799};
float A5[5]={0.5688889, 0.4786287, 0.4786287, 0.2369269, 0.2369269};
float *p, *t;
switch (n)
{
case 1:
p=x1;
t=A1;
break;
case 2:
p=x2;
t=A2;
break;
case 3:
p=x3;
t=A3;
break;
case 4:
p=x4;
t=A4;
break;
case 5:
p=x5;
t=A5;
break;
default:
printf ("intput wrong!");
}
float g;
int i;
for (i=0,g=0; i<n; i++){
g+=(*func)((b-a)*p[i]/2+(a+b)/2)*t[i];
}
g*=(b-a)/2;
return g;
}
float function_name(float x)
{
return (sqrt(4-x*x));
}
编译出错,求高手帮忙

[ 本帖最后由 sinodoo 于 2013-7-8 18:46 编辑 ]
搜索更多相关主题的帖子: include C语言 高斯 
2013-07-08 18:45
sinodoo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-8
收藏
得分:0 
编译时候提示错误
c(57) : error C2143: syntax error : missing ';' before 'type'
c(58) : error C2143: syntax error : missing ';' before 'type'
c(59) : error C2065: 'i' : undeclared identifier
c(59) : error C2065: 'g' : undeclared identifier
可是我明明有;而且是英文符号,i和g也已经定义了啊
2013-07-08 20:00
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:10 
VC中无问题!
2013-07-08 20:08
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:10 
printf("请输入积分下限a\n");
scanf("%f", &a);
float ans;  \\把这个定义放到函数体前端。  
ans=gauss(function_name, a, b, N);
printf("ans=%f", ans);
}

printf ("intput wrong!");
}
float g;
int i;    \\你把i 和g 的定义放到函数体的前端,不要在函数中间定义。有的编译器支持,有的不支持,很明显你用的不支持在函数中间定义变量。
for (i=0,g=0; i<n; i++){
g+=(*func)((b-a)*p[i]/2+(a+b)/2)*t[i];
}

2013-07-09 11:59
sinodoo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-8
收藏
得分:0 
回复 4楼 pangshch
谢谢,确实是这样的
2013-07-10 15:58
快速回复:C语言 高斯积分公式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031821 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved