当前位置:首页 » 编程语言 » c语言积分梯形算法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言积分梯形算法

发布时间: 2022-05-03 10:07:47

c语言:用梯形法求定积分 ∫sinxdx (a=0,b=π/2) 积分上限为b 下限为a

#include<stdio.h>
#include<math.h>
const double PI=acos(-1.0);
const double der=0.0001;
int main()
{
double sum=0,i;
for(i=0;i<=(PI/2);i+=der)
{
sum+=sin(i)*der;
}
printf("%.2lf\n",sum);

return 0;
}

❷ 怎样编写c语言积分函数用梯形法求函数f(x

#include
float f(float x)
{
return x*x+2*x+1;
}
void main()
{
float a,b,len,F=0;//
int n,i;
printf("Please input a,b: ");
scanf("%f%f",&a,&b);
printf("Please input n: ");
scanf("%d",&n);
len=(a+b)/n;//区间度
for(i=0;i<n;i++)
{
F+=len*f(a);
a+=len;
}
printf("%f\n",F);
}
结例:
Please input a,b: 0 10.0
Please input n: 100
437.349792

❸ C语言利用梯形法求定积分,小梯形数量200

你不会微积分的话俺写了也白写
=================================================================
/* ∫(0.8-0)cosxdx=sin(0.8)-sin(0)=sin(0.8)
当切割的梯形个数趋于无穷时,答案会等于sin(0.8)
不过计算机位数有限,能切的分数也很有限*/

main()
{
double t=(0.8-0)/200;//每次增量为0.8至0的1/200,这是一小段的长
double x=0.0,s=0.0;//x为坐标图上的x值,用来求高
short i;
for(i=0;i<200;i++)
{
s+=t*cos(x);//用一小段的长*一小段的高 =一小段面积,一小段面积累加出定积分的值
x+=t;//下一个x值
}
printf("%lf\n",s);
}

❹ 用c语言如何编写“用梯形法求定积分∫sinxdx的近似值 上限为不b=π下限为a=0”这一问题,求代码

首先解决怎么算,计算机肯定不会积分,所以我开始想用sinx的泰勒展开式,然后选3-4次作为近似,然后积分。听你说梯形法,是数值计算的内容,刚好这学期在学,就把我调试的程序发一个给你吧这是romberg算法,把a 换为0,b换为pi就好了吧。附上书上的代码。

#include<stdio.h>

#include<math.h>

#define f(x) (sin(x))

#define N_H 20

#define MAXREPT 10

#define a 1.0

#define b 2.0

#define epsilon 0.00001

double computeT(double aa,double bb,long int n)

{

int i;double sum=0.0;double h=(bb-aa)/n;

for(i=1;i<n;i++)

{

sum+=f(aa+i*h);

}

sum+=(f(aa)+f(bb))/2;

return (h*sum);

}

void main()

{

int i;

long int n=N_H,m=0;

double T[MAXREPT+1][2];

T[0][1]=computeT(a,b,n);

n*=2;

for (m=1;m<MAXREPT;m++)

{

for (i=0;i<m;i++)

{

T[i][0]=T[i][1];

}

T[0][1]=computeT(a,b,n);

n*=2;



for (i=1;i<=m;i++)

{

T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);

if((T[m-1][1]<T[m][1]+epsilon)&&(T[m-1][1]>T[m][1]-epsilon))

{

printf("the integrate is %lf ",T[m][1]);

return;

}

}

}

printf("return no solved... ");

}

❺ c语言用梯形法求积分

a区间起点,b积分区间中点, n是这个区间划分数。每一个划分的长度为h=(b-a)/n。每一个划分利用梯形算法来求积分,即:上底+下底乘以高再除以2。第一个小梯形面积为 (f(a) + f(a+h))*h/2,第二个为 (f(a+h)+f(a+2h))*h/2,依次类推。将这些加和加起来有:
h*(f(a)/2 + f(a+h) + ... +f(a+(n-1)h) + f(b))/2)。预先将f(a)/2 和f(b)/2加起来,其它数据即f(a+h) + ... f(a+(n-1)n)用循环处理,然后将所有结果乘以h即可。

❻ C语言,用梯形法编程求定积分x^3+x/2+1的值

这个其实很简单,给你做了一个很简单的通用的积分函数,
已经做过优化,自己一调用就可以了,效率很高。

#include <stdio.h>

double f(double x) //返回函数的值
{ double y;
y=x*x+x*2+1.0;
return y;
}

double Integrate(double (*f)(double),double a,double b,int n) //计算函数的定积分
{ double dx,y,sy,x;
if(n<=1)return 0.0;
dx=(b-a)/n;
x=a;
sy=0.0;
for(int i=0;i<=n;i++,x+=dx)
sy+=f(x);
sy-=f(a)/2.0;
sy-=f(b)/2.0;
return sy*dx;
}

void main()
{ double s;
s=Integrate(f, 1, 3, 100000);
printf("s=%lf\n",s);
}

❼ 有关c语言用梯形法求定积分的一个程序,请帮忙修改

#include<stdio.h>
#include<math.h>
doublef(doublex)
{
returnsqrt(4-x*x);
}
main()
{
doublea,b,s1,s2,s,h,m=1E-6;
intn,i;
printf("请输入积分下限a和积分上限b ");
scanf("%lf%lf",&a,&b);
s2=0;
n=10000;
// do
{
s1=s2;
n=2*n;
h=(b-a)/n;
i=1;
s2=0;
do
{
s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;
i=i+1;
}
while(i<=n);
}
// while((fabs(s1-s2))>(m*(fabs(s2)-fabs(s1))));
printf("f(x)在[a,b]上的定积分为%.10lf",s2);
return0;
}

❽ C语言:用数值积分的矩形法和梯形法计算(sin x)/x在区间[1,2]上的定积分

#include <stdio.h>
#include <math.h>

double integrate(double (*f)(double),double a,double b)
{
double i=1.0/1000000;
double sum=0,x;
for(x=a;x<=b;)
{
sum+=f(x)*i;
x+=i;
}
return sum;
}

double f(double x)
{
return sin(x)/x;
}

int main()
{
int a=1,b=2;
printf("%lf\n",integrate(f, a, b));
return 0;
}