怎么在C語(yǔ)言中使用矩形法求定積分?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
在普寧等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),普寧網(wǎng)站建設(shè)費(fèi)用合理。
要求:
寫一個(gè)用矩形法求定積分的通用函數(shù),分別求:sin(x),cos(x),e^x 。
分析:
矩形法,學(xué)過(guò)高等數(shù)學(xué)就知道化曲為直的思想。將定積分化為多個(gè)函數(shù)連續(xù)的和?;舅枷胧菍^(qū)間[a,b]化成n等分,當(dāng)n越大的時(shí)候結(jié)果越準(zhǔn)確。圖形化成一小塊一小塊的矩形。底邊長(zhǎng)都為(b-a)/n.高為每個(gè)等分點(diǎn)的函數(shù)值。然后將每個(gè)矩形的面積相加即為所求。
如:
y=x;
可以通過(guò)矩形的方法來(lái)無(wú)限逼近定積分的求解,如下:
因?yàn)楸环殖蒼等分,就可以認(rèn)為每一等分是一個(gè)矩形,那么每一矩形的面積為: 每一個(gè)矩形面積為:***Sn=f(x)(b-a)/n 總面積為:****S=S1+S2+…+Sn
#include#include #include //引入sin x,cos x,e^x的庫(kù) //使用指向函數(shù)的指針變量來(lái)復(fù)用一個(gè)通用函數(shù) int main() { int i,j,k,n,m; float res; float (*fun)(float);//定義指向函數(shù)的指針變量 float integral (float a,float b,float (*fun)(float),int n);//n為將積分區(qū)間(b-a)分成n等分,當(dāng)n的值越大的時(shí)候結(jié)果越精確,數(shù)學(xué)上的定義是取無(wú)窮大 float fsin(float);//sin x函數(shù)的聲明 float fcos(float);//cos x函數(shù)的聲明 float fexp(float);//e^x 函數(shù)的聲明 printf ("請(qǐng)輸入積分的下限\n"); scanf ("%d",&m); printf ("請(qǐng)輸入積分的上限\n"); scanf ("%d",&n); printf("請(qǐng)輸入你要計(jì)算的函數(shù)的具體函數(shù)\n"); printf("1.sin(x) 2.cos(x) 3.e^x\n"); scanf ("%d",&i); switch(i) { case 1: fun=fsin;//函數(shù)地址(入口)交給指針變量,靈活性強(qiáng) break; case 2: fun=fcos; break; case 3: fun=fexp; } res=(fun)(2.00); //printf("xxxx=%f\n",res); printf ("計(jì)算的結(jié)果為\n"); res=integral(m,n,fun,200000); printf("res=%f",res); return 0; } float fsin(float x) { // printf("fsinx=%f\n",x); return sin(x); } float fcos(float x) { //printf("fcosx=%f\n",x); return cos(x); } float fexp(float x) { //getchar(); //printf("fexp=%f\n",x); return exp(x); } float integral(float a,float b,float (*fun)(float),int n) { //矩形法計(jì)算,定積分轉(zhuǎn)換為連續(xù)求和的形式 int i=0; float x=a,s=0; float h=(b-a)/n; for (i=1;i<=n;i++) { x=x+h; s=s+((*fun)(x)*h); } return s; }
結(jié)果:
關(guān)于怎么在C語(yǔ)言中使用矩形法求定積分問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。