當前位置:首頁 » 編程語言 » c語言實現離散時域積分
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言實現離散時域積分

發布時間: 2023-04-26 14:38:23

『壹』 c語言如何實現積分運算

#include<stdio.h>
#include<math.h>
double integ(double a,double b)
{
double s,x,h;
int n=100,i;
h=fab(b-a)/n;
s=(sin(a)+sin(b))/2.0;
for(i=1;i<談冊飢=n-1;i++)
{
x=a+i*h;
s=s+sin(x);
}
s=s*h;
return s;
}
main()
{
double s;
s=integ(0.0,0.15);
printf("s=%f\n"含返,s);
}
你自姿返己跑下,可能有語法錯誤。呵呵。。

『貳』 怎樣編寫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語言表示積分

源代碼如下:

#include#includefloat f1(float x)

{

return(1.0+x);

}

float f2(float x)

{

return(2.0*x+3.0);

}

float f3(float x)
{
return(exp(x)+1);
}

float f4(float x)
{
return(pow(1+x,2));

}

float f5(float x)
{

return(pow(x,3));

}

float fsimp(float a,float b,float (*p)(float))

{

float c,s;

c=(a+b)/2;

s=(b-a)/6*(p(a)+4*p(c)+p(b));

return s;

}

int main()

{

float a,b;

printf("請輸入積分下限a的值:");

scanf("%f",&a);

printf("請輸入積分上限b的值:");

scanf("%f",&b);

printf("%f ",fsimp(a,b,f1));

}

(3)c語言實現離散時域積分擴展閱讀

1、對應於一個積分式要有一段程序,可以改變程序的一小部分來改變所要求的積分式。

2、除數不能位0。

3、兩個整數相除,結果仍是整數。

4、若被除數其中有一個為浮點數或者兩個都為浮點數,則結果為浮點類型。操作數必須為整數,不能是浮點數。

『肆』 用C語言求積分

好象要你自己定義函數,庫函數中好象是沒有直接可以用的積分函數的。

『伍』 用C語言計算微積分

我給一樓加的注釋以及修改:
#include<stdio.h>
#include<math.h>
#define ARRAYBOUND 10001

void main()
{
int i = 0; //輔助變數,最常見那種
int n = 0; //將所求定積分函數曲線在x軸方向,平均分成n等分;n越大,結果越精確;不過限於此演算法限制n<ARRAYBOUND,否則溢出.
float x[ARRAYBOUND];//ARRAYBOUND維浮點數組,存放離散的x坐標值
float y[ARRAYBOUND];//ARRAYBOUND維浮點數組,存放每個x坐標對應的函數值;x[i],y[i]滿足y[i]=f(x[i]),f是你要求定積分的函數
float x0 = 0.0; //定積分下限
float xn = 0.0; //定積分上限
float h = 0.0; //面積微元寬度
float J = 0.0; //輔助變數

/*f=x^3*/ //這里說明要求定積分的是函數f(x)=x*x*x;(y等於x的立方,x^3是vb的寫法)
// printf("input x0,xn,n:");
printf("請分別輸入下限(x0),上限(xn),精度(n):");
scanf("%f",&x0);
scanf("%f",&xn);
scanf("%d",&n);

h=(xn-x0)/n;//將函數圖形在x方向平分成n份,h是每個面積微元的寬度
x[0]=x0; //將積分下限賦值給x[0]

for(i=0;i<=n && n<ARRAYBOUND;i++)
{
x[i]=x[0]+i*h; //計算n個離散的橫坐標值,存入x[]數組
y[i]=(float)pow(x[i],3);//計算n個橫坐標對應的函數值,存入y[]數組。在此可以改變要求積分的函數
}

// J=0.0;
for(i=0;i<n;i++)
{
//J=J+y[i]+y[i+1];
J+=y[i];//將所有縱坐標值代數相加,存入J
}
//J=J*h/2.0;
J=J*h;//所有微元面積一次求解,因為∑h*y[i]=h*∑y[i];
printf("\nn=%d \n所求定積分值是: %f\n",n,J);
}

我將//J=J+y[i]+y[i+1]改為J+=y[i];將//J=J*h/2.0;改為J=J*h只是幫助lz理解
其實,這兩種表達在理論上是等價的,不過我發現修改後,在n同樣大小的情況下,結果的精度有一點點下降,還真不知為什麼???

這樣的話lz應該能理解了吧,其實一樓的演算法還有不少值得改進的地方,希望lz能有所突破!!

『陸』 用C語言編寫一個求定積分的程序

這是辛普森積分法。
給你寫了fun_1( ),fun_2(),請自己添加另外幾個被積函數。
調用方法 t=fsimp(a,b,eps,fun_i);
a,b --上下限,eps -- 迭代精度要求。
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
double fun_1(double x)
{
return 1.0 + x ;
}
double fun_2(double x)
{
return 2.0 * x + 3.0 ;
}

double fsimp(double a,double b,double eps, double (*P)(double))
{
int n,k;
double h,t1,t2,s1,s2,ep,p,x;
n=1; h=b-a;
t1=h*(P(a)+P(b))/2.0;
s1=t1;
ep=eps+1.0;
while (ep>=eps)
{
p=0.0;
for (k=0;k<=n-1;k++)
{
x=a+(k+0.5)*h;
p=p+P(x);
}
t2=(t1+h*p)/2.0;
s2=(4.0*t2-t1)/3.0;
ep=fabs(s2-s1);
t1=t2; s1=s2; n=n+n; h=h/2.0;
}
return(s2);
}
void main()
{
double a,b,eps,t;
a=0.0; b=3.141592653589793238; eps=0.0000001;
// a definite integral by Simpson Method.
t=fsimp(a,b,eps,fun_1);
printf("%g\n",t);
t=fsimp(a,b,eps,fun_2);
printf("%g\n",t);
// ...
printf("\n Press any key to quit...");
getch();
}

『柒』 怎樣編寫c語言積分函數

積分分為兩種,數值積分,公式積分。

  1. 公式積分:部分函數可以直接用公式求得其不定積分函數。C語言中可以直接用積分公式寫出其積分函數。

  2. 數值積分:按照積分的定義,設置積分范圍的步長,用梯形面積累加求得其積分。

    以【f(x)=x*sin(x) 從1到2的積分】為例:

    #include<math.h>
    #include<stdio.h>
    doubleintegral(double(*fun)(doublex),doublea,doubleb,int,n){
    doubles,h,y;
    inti;
    s=(fun(a)+fun(b))/2;
    h=(b-a)/n;/*積分步長*/
    for(i=1;i<n;i++)
    s=s+fun(a+i*h);
    y=s*h;
    returny;/*返回積分值*/
    }
    doublef(doublex){
    return(x*sinx)/*修改此處可以改變被積函數*/
    }
    intmain(){
    doubley;
    y=integral(f,1.0,2.0,150);/*修改此處可以改變積分上下限和步數,步長=(上限-下限)/步數*/
    printf("y=%f ",y);
    return0;
    }