對于一重定積分來說其求解可以使用梯形法進行求解,計算公式如下所示:
目前成都創新互聯公司已為成百上千的企業提供了網站建設、域名、網站空間、網站改版維護、企業網站設計、婁星網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
其中,f(x)為被積函數,為橫坐標的兩點間的間隔,越小,則計算出的結果越精確。
對于求解此類問題可以使用C語言中的回調函數編寫通用的計算函數,代碼如下:
#include?stdio.h
#include?stdlib.h
#includemath.h
//功能:返回f(x)在積分區間[a,b]的值
//參數:FunCallBack?指向用于計算f(x)的函數
//??????a??積分區間的起始值
//??????b??積分區間的結束值
//??????dx?橫坐標的間隔數,越小計算結果越準確
double?Calculate(double?(*FunCallBack)(double?x),
double?a,double?b,double?dx)
{
double?doui;
double?total?=?0;????????//保存最后的計算結果
for?(doui?=?a;?doui?=?b;?doui?+=?dx)
{
total?+=?FunCallBack(doui)*dx;
}
return?total;
}
double?f2(double?x)
{
return?x*x;
}
double?f(double?x)
{
return?x;
}
double?f3(double?x)
{
return?x*x*x?;
}
int?main()
{
double?total;
total?=?(Calculate(f,?2,?3,?0.000001));
printf("total?=?%lf\n",?total);
total?=?(Calculate(f2,?2,?3,?0.000001));
printf("total?=?%lf\n",?total);
total?=?(Calculate(f3,?2,?3,?0.000001));
printf("total?=?%lf\n",?total);
return?0?;
}
其中,函數f,f2,f3為自行編寫的關于x的被積函數。
運行結果:
total?=?2.500000
total?=?6.333331
total?=?16.249991
標準c語言中沒有求定積分的函數。
自己寫定積分計算也不難。
寫一個 被積函數的 函數。
double eq(x) {...return y;}
給上下邊界a,b。dx = b-a;
然后做循環:
每次加密一倍 dx=dx/2.0,
計算 yi = eq( a + dx * i);
計算積分值。
前后兩次積分值誤差滿足要求則成功。
#includestdio.h
#includemath.h//pow()指數函數頭文件;
#define e 2.71828//定義自然常數e;
int main ()
{
double a,b,n1,n2,n3,n4,n5,t;
scanf("%lf%lf",a,b);
if(ab)//保證上限比下限大;
{
t=a;
a=b;
b=t;
}
n1=a-b+0.5*(a*a-b*b);//a和b是未知數,積分運算后,原式=a和b混合運算的代數式;
n2=a*a-b*b+3*a-3*b;
n3=e*0.5*(a*a-b*b)+a-b;
n4=(pow(a+1,3)-pow(b+1,3))/3;
n5=(pow(a,4)-pow(b,4))/4;
printf("%.2lf %.2lf %.2lf %.2lf %.2lf",n1,n2,n3,n4,n5);
return 0;
}
圖1是運行結果,圖2是原題的積分結果;通過數學的積分結果可以看出,積分符號的不在了;只剩下上下限a,b組成的代數式;
把積分算式算出來,然后用C寫。
比如[a,b]的積分上限和下限,對x積分,就是x^2/2, 代入a,b
本文題目:c語言中積分函數名,積分 c語言
當前網址:http://m.kartarina.com/article22/dsespcc.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、品牌網站設計、網站設計、小程序開發、外貿網站建設、Google
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯