當前位置:首頁 » 編程語言 » c語言梯形法求定積分

c語言梯形法求定積分

發布時間: 2022-07-16 00:12:10

『壹』 用「累計梯形面積」法求定積分求高手!!!! (c語言

#include "math.h"

double f(double x) /*定義被積函數*/
{
return x*x+3*x+2;
}

double integrate(double a,double b) /*定義積分公式函數*/
{double t,h;
int i,n=100;
t=0.5*(f(a)+f(b));
h=fabs(a-b)/n;
for(i=1;i<n;i++)
t+=f(a+i*h);
t=t*h;
return t;
}

void main() /*定義主函數*/
{printf("\n%f\n",integrate(0,2));}

『貳』 用C語言求定積分

實際問題描述:

求定積分近似值

程序代碼如下:
#include
#include
void main()
{
int i,n=1000;
float a,b,h,t1,t2,s1,s2,x;
printf("請輸入積分限a,b:");
scanf("%f,%f",&a,&b);
h=(b-a)/n;
for(s1=0,s2=0,i=1;i<=n;i++)
{
x=a+(i-1)*h;
t1=(float)exp(-x*x/2);t2(float)=exp(-(x+h)*(x+h)/2);
s1=s1+t1*h; /*矩形面積累加*/
s2=s2+(t1+t2)*h/2; /*梯形面積累加*/
}
printf("矩形法算得積分值:%f. ",s1);
printf("梯形法算得積分值:%f. ",s2);
}
程序運行結果如下:
矩形法算得積分值:0.855821
梯形法算得積分值:0.855624
由上面的比較可知,梯形法的精度要高於矩形法。

『叄』 有關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語言,用梯形法編程求定積分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語言求定積分的問題。

根據梯形法求積分的原理,設間隔h= (b-a)/n,則積分近似計算公式為:

s = h/2 *[f(a)+f(a+h)] +h/2 *[f(a+h)+f(a+2h)] +...+h/2 *[f(b-h)+f(b)]

=h/2 *[f(a)+f(b)] + h*[ f(a+h) + f(a+2h) +f(a+3h) + ... +f(b -h)]

令積分s初始值為h/2 *[f(a)+f(b)] ,後面令i=1,...,n-1來迭代s = s+h*f(a+ih)。

『陸』 求C語言 用梯形法求定積分(數值求解演算法)

#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=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語言實慣用梯形法或辛普森法求解定積分的值

//梯形法求定積分
#include<stdio.h>
#include<math.h>
//定義被積函數
double func(double x){
return sin(x)*cos(x);
}

void main(){
double a,b,h,x,sum;
int i,n;
printf("Input a b and n: ");
scanf("%lf%lf%d",&a,&b,&n);
h=(b-a)/n;
x=a;
sum=(func(a)+func(b))/2;
for(i=1; i<n; i++){
x += h;
sum += func(x);
}
sum *= h;
printf("sum=%.4lf\n",sum);
}

『捌』 怎麼用C語言用累積梯形面積求定積分

#include <stdio.h>

typedef double Fun(double x);

double integral(Fun f, double x1, double x2, int n)
{
double delta = (x2 - x1) / n;
double I = 0.5 * (f(x1) + f(x2))* delta;
int i = 1;
for( ; i < n; i++)
I += f(x1 + delta * i)* delta;
return I;
}
double fun(double x)
{
return x * x;
}
int main()
{
double a, t, ret;
int n;
printf("輸入積分左右端點a,t,梯形個數n\n");
scanf("%lf %lf %d", &a, &t, &n);
ret = integral(fun, a, t, n);
printf("x^2在[%lf,%lf]上的定積分為%lf\n", a, t, ret);
return 0;
}
運行結果
輸入積分左右端點a,t,梯形個數n
0 1 2000
x^2在[0.000000,1.000000]上的定積分為0.333333

『玖』 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);
}

熱點內容
康佳29寸電視存儲器壞怎麼代換 發布:2025-02-01 22:40:44 瀏覽:186
訪問的結果 發布:2025-02-01 22:30:12 瀏覽:175
cmd訪問網站 發布:2025-02-01 22:02:45 瀏覽:440
清除svn緩存 發布:2025-02-01 22:01:04 瀏覽:945
安卓模擬器怎麼用鍵盤操作 發布:2025-02-01 21:55:24 瀏覽:808
安卓手機屏幕為什麼會變色 發布:2025-02-01 21:55:20 瀏覽:823
安卓存摺怎麼看余額 發布:2025-02-01 21:53:34 瀏覽:770
其他電腦怎麼設置訪問伺服器 發布:2025-02-01 21:34:27 瀏覽:896
如何敲編程 發布:2025-02-01 21:26:13 瀏覽:25
微信加密嗎 發布:2025-02-01 21:26:07 瀏覽:43