标题:因为没有学过曲边梯形,所以请各位高手帮我看一下这道题
只看楼主
zhouxiangron
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-7-9
结帖率:42.86%
已结贴  问题点数:20 回复次数:9 
因为没有学过曲边梯形,所以请各位高手帮我看一下这道题
(求曲边梯形的近似面积)给定一个连续函数y=f(x),在区间[a,b]上取正值,由直线y=0,x=a,x=b和曲线y=f(x)构成了一个曲边梯形。将区间[a,b]n等分,每一份长度为h,则
  area=h[f(a)+f(a+h)+f(a+2h)+.....+f(a+(n-1)h)]
为曲边梯形的近似面积。编写计算曲边梯形的近似面积的函数:
float area(float a,float b,int n,(*f)(float x))
f(x)可取为
(1)sinx (a=0,b=p,n=100)
(2)2x²-x+20(是x的平方)(a=1,b=10,n=100)
(3)e的方+1nx(a=1,b=10,n=100)

请教各位如何做这道题,20分送上,谢谢各位高手们了
搜索更多相关主题的帖子: 曲边 梯形 
2010-07-26 18:49
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
哥不要分

哥一行代码一块钱。
2010-07-26 18:56
zhouxiangron
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-7-9
得分:0 
神圣的论坛,人们都在奉献自己的爱。而你却开口要钱,要得那么的少,你混得也太差劲了。
2010-07-26 19:07
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:5 
你贡献了什么?

你够资格说我?
2010-07-26 19:15
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
得分:0 
以第一题为例

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-07-26 19:22
shiningwater
Rank: 1
等 级:新手上路
帖 子:51
专家分:5
注 册:2010-3-25
得分:5 
刚刚研究过这个,所以奉上,呵呵~!

#include<stdio.h>
#include<math.h>
void main()
{  int a=...,b=...;
int n=...;
  float f1(float);
  float f2(float);
  float f3(float);
  float area(float a,float b,int n,(*f)(float x));
 printf("f1=");
area(a,b,n,f1);
printf("f2=");
area(a,b,n,f2);
printf("f3=");
area(a,b,n,f3);
}
  float area(float a,float b,int n,(*f)(float x))
{
   float h=(b-a)/n;
float area=0.0;
  x=a;
for(i=0;i<n;i++)
area+=(f(a+i*h)+f(a+(i+1)*h))*h/2;

}

float f1(float x)
{
return(sin(x));
}
float f2(float x)
{return(...);}
float f3(float x)
{
return(...);
}

2010-07-26 19:23
zhouxiangron
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2010-7-9
得分:0 
那么请问这儿的两个return中应该填写什么,举个例子吧:
float f2(float x)
{return(...);}
float f3(float x)
{
return(...);
}

我现在写的代码是这样的:
#include<stdio.h>
#include<math.h>
float f1(float);
float f2(float);
float f3(float);
float area (float a,float b,int n,(*f)(float x));
void main()
{ int a,b;
  int n;
  printf("please input a:\n");
  scanf("%d",&a);
  printf("please input b:\n");
  scanf("%d",&b);
  printf("please input n:\n");
  scanf("%d",&n);
  printf("f1=");
  area(a,b,n,f1);
  printf("f2=");
  area(a,b,n,f2);
  printf("f3=");
  area(a,b,n,f3);
}
float area(float a,float b,int n,(*f)(float x))
{
float h=(b-a)/n;
float area=0.0;
x=a;
for(i=0;i<n;i++)
area+=(f(a+i*h)+f(a+(i+1)*h))*h/2;
}
float f1(float x)
{
return(sin(x));
}
float f2(float x)
{return(...);}
float f3(float x)
{
return(...);
}
不知道return中的怎么填
2010-07-26 20:08
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
得分:5 
导数学过没{sinx=sinx+sinx*(-1)*x*x/t/(t+1);
y=sinx*(-1)*x*x/t/(t+1);
t=t+2;}是公式


#include<stdio.h>
#include<math.h>
float f(float x)
{float sinx=x,y;int t=2;
do
{sinx=sinx+sinx*(-1)*x*x/t/(t+1);
y=sinx*(-1)*x*x/t/(t+1);
t=t+2;}
while(fabs(y)>0.0001);
sinx=fabs(sinx);

return(sinx);
}
float area(float a,float b,int n,float (*f)(float x))
{int i;float sum=0.0;
for(i=0;i<n;i++)

sum=sum+(b-a)/100*f(a+(b-a)*i/n);
return(sum);
}
void main()
{float a=1.0,b=10.;int n=100;
float s;
s=area( a, b, n, (*f));
printf("%f",s);
}


[ 本帖最后由 encounter 于 2010-7-27 11:44 编辑 ]
收到的鲜花
  • sunyh19992010-07-27 09:44 送鲜花  5朵   附言:我很赞同

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-07-26 20:52
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
得分:0 
更正一下

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-07-26 20:59
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:5 
sorry,我来晚了,既然大家都解答了,我也不说了

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-27 09:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-314013-1-1.html




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

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