這個挺簡單啊。

成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十多年時間我們累計服務了上千家以及全國政企客戶,如成都雨棚定制等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質量監(jiān)控加上過硬的技術實力獲得客戶的一致贊譽。
dx就是(b-i)/n;
然后做個n次的循環(huán),每次加上矩形的值即可
下面是代碼:如果n也定義成int,我的編譯器不會執(zhí)行類型轉換,所以要強制執(zhí)行,否則dx就會是int類型。若b-in,那么dx=0.
int f(int i,int b,int n,float *result)
{
float dx=(float)(b-i)/n;
for(int m=0;mn;m++)
*result+=((i+m*dx)*(i+m*dx)+3)*dx;
return 1;
}
i=0,b=10,n=1000,得到result=362.833,與精確值比較接近。因為矩形法求積分本來就不太準
另外,樓上的同學不要誤導人家,積分的起始值可不一定是0,s=n*((n*i)*(n*i)+3)+s;明顯把i默認當做0了。而且n是指劃分的段數(shù),不是區(qū)間長度。
#includevoidmain(){doublei,j;doublea,b,c=0;printf("請輸入積分上下限:");scanf("%lf%lf",a,b);for(i=a;i=b;i+=10e-8){j=i*i+1;j*=10e-8;c+=j;}printf("ans=%.4f\n",c);}對了沒考慮自變量取負值的情況,這個程序只適合算上下限都大于零的情況。
#include?"stdio.h"
#include?"math.h"
int?main(void){
double?i,s,d;
for(d=1E-7,s=i=0;i=2.0;i+=d)
s+=sqrt(4-i*i)*d;
printf("The?result?are?%g\n",2*s);
return?0;
}
或
#include?"stdio.h"
#include?"math.h"
int?main(void){
printf("The?result?are?%g\n",2*asin(1)-2*asin(-1));
return?0;
}
你的錯誤原因在于scanf函數(shù)的錯誤運用,scanf函數(shù)以"\n"作為輸入的結束,而你按下Enter鍵時在Windows上相當于輸入了“\n\r”,這樣引起的混亂致使程序無法識別你輸入的a,b,n,故一直等待。
改進方法:輸入語句改為 scanf("%lf %lf %d",a,b,n);
運行結果:
標題名稱:c語言矩形法積分求函數(shù) 寫一個矩形法求解定積分的通用函數(shù)
路徑分享:http://chinadenli.net/article38/hihcpp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、品牌網(wǎng)站設計、商城網(wǎng)站、做網(wǎng)站、標簽優(yōu)化、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)