當前位置:首頁 » 編程語言 » 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;
}