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

Python020

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

#include<stdio.h>

#include<math.h>

double f(double x)

{

return sqrt(4-x*x)

}

main()

{

double a,b,s1,s2,s,h,m=1E-6

int n,i

printf("请输入积分下限a和积分上限b\n")

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)

return 0

}

#include

<stdio.h>

#include<math.h>

void

main()

{int

i,n

float

t,v1,v2,s=0,d,s=0

printf("请输入分段个数")

scanf("%d",&n)

printf("请输入右端点的值")

scanf("%f",&t)

v1=cos(0)

v2=cos(t)

d=t/n

for(i=1i<ni++)

s+=cos(i*d)

s=s*d+(v1+v2)/2

printf("cosx从0到%f的定积分的近似值(梯形法)是:%f",t,s)

}

#include<stdio.h>

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=0i<ni++)

{

F+=len*f(a)

a+=len

}

printf("%f\n",F)

}

结果例如:

Please input a,b: 0 10.0

Please input n: 100

437.349792