如何用矩形法(梯形法)求定積分
分析:
高中的時(shí)候,我們學(xué)習(xí)過(guò),可以通過(guò)矩形法或者矩形法來(lái)求定積分。
思路就是將積分區(qū)間劃分成n等份,然后將這n等份近似看成矩形(或梯形),然后對(duì)所有的矩形(或梯形)的面積進(jìn)行求和。

簡(jiǎn)單的例子:
求函數(shù)X^2在的定積分
矩形法:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
float fun(float x);
float a,b;
cout<<"請(qǐng)輸入函數(shù)X^2的定積分的下限a和上限b:";
cin>>a>>b;
int n=50;//將區(qū)間劃分成50份
float h=(b-a)/n;//h是每個(gè)區(qū)間分大小
float s=0;//s是矩形的面積的和
float i=0;
for(i=a;i<b;i+=h){
s=s+fun(i)*h;
}
cout<<"\n結(jié)果是:"<<s<<endl;
cout<<endl;
}
float fun(float x){
return pow(x,2);
}

梯形法:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
float fun(float x);
float a,b;
cout<<"請(qǐng)輸入函數(shù)X^2的定積分的下限a和上限b:";
cin>>a>>b;
int n=50;//將區(qū)間劃分成50份
float h=(b-a)/n;//h是每個(gè)區(qū)間分大小
float s=0;//s是矩形的面積的和
float i=0;
for(i=a;i<b;i+=h){
s=s+((fun(i)+fun(i+h))*h)/2;
}
cout<<"\n結(jié)果是:"<<s<<endl;
cout<<endl;
}
float fun(float x){
return pow(x,2);
}

一個(gè)較復(fù)雜的例子
寫一個(gè)通用函數(shù),用來(lái)求sinx 、 cosx 、 e^x 、 x^2 的定積分
分析:fun為用來(lái)求定積分的通用函數(shù),調(diào)用fun函數(shù)的時(shí)候,需要將積分的上限,下限,區(qū)間劃分的份數(shù)以及被積函數(shù)的指針傳遞過(guò)來(lái)。
矩形法:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
float fsin( float x);
float fcos( float x);
float fe( float x);
float fpf(float x);
float fun(float a,float b, int n,float (*p)(float x));
float a[4],b[4],r[4];
cout<<"請(qǐng)輸入求正弦函數(shù)定積分的上限a和下限b:";
cin>>a[0]>>b[0];
r[0]=fun(a[0],b[0],50,fsin);
cout<<"\n結(jié)果是:"<<r[0]<<endl;
cout<<"\n請(qǐng)輸入求余弦函數(shù)定積分的上限a和下限b:";
cin>>a[1]>>b[1];
r[1]=fun(a[1],b[1],50,fcos);
cout<<"\n結(jié)果是:"<<r[1]<<endl;
cout<<"\n請(qǐng)輸入求以e為底的指數(shù)函數(shù)定積分的上限a和下限b:";
cin>>a[2]>>b[2];
r[2]=fun(a[2],b[2],50,fe);
cout<<"\n結(jié)果是:"<<r[2]<<endl;
cout<<"\n請(qǐng)輸入求X^2函數(shù)定積分的上限a和下限b:";
cin>>a[3]>>b[3];
r[3]=fun(a[3],b[3],50,fpf);
cout<<"\n結(jié)果是:"<<r[3]<<endl;
cout<<endl;
return 0;
}
float fsin(float x){
return sin(x);
}
float fcos(float x){
return cos(x);
}
float fe(float x){
return exp(x);
}
float fpf(float x){
return pow(x,2);
}
float fun(float a,float b,int n,float (*p)(float x)){
float i;
float h=(b-a)/n;
float s=0;
for(i=a;i<b;i+=h){
s=s+p(i)*h;//利用了矩形求面積的公式
}
return s;
}

梯形法:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
float fsin( float x);
float fcos( float x);
float fe( float x);
float fpf(float x);
float fun(float a,float b, int n,float (*p)(float x));
float a[4],b[4],r[4];
cout<<"請(qǐng)輸入求正弦函數(shù)定積分的上限a和下限b:";
cin>>a[0]>>b[0];
r[0]=fun(a[0],b[0],50,fsin);
cout<<"\n結(jié)果是:"<<r[0]<<endl;
cout<<"\n請(qǐng)輸入求余弦函數(shù)定積分的上限a和下限b:";
cin>>a[1]>>b[1];
r[1]=fun(a[1],b[1],50,fcos);
cout<<"\n結(jié)果是:"<<r[1]<<endl;
cout<<"\n請(qǐng)輸入求以e為底的指數(shù)函數(shù)定積分的上限a和下限b:";
cin>>a[2]>>b[2];
r[2]=fun(a[2],b[2],50,fe);
cout<<"\n結(jié)果是:"<<r[2]<<endl;
cout<<"\n請(qǐng)輸入求X^2函數(shù)定積分的上限a和下限b:";
cin>>a[3]>>b[3];
r[3]=fun(a[3],b[3],50,fpf);
cout<<"\n結(jié)果是:"<<r[3]<<endl;
cout<<endl;
return 0;
}
float fsin(float x){
return sin(x);
}
float fcos(float x){
return cos(x);
}
float fe(float x){
return exp(x);
}
float fpf(float x){
return pow(x,2);
}
float fun(float a,float b,int n,float (*p)(float x)){
float i;
float h=(b-a)/n;
float s=0;
for(i=a;i<b;i+=h){
s=s+((p(i)+p(i+h))*h)/2;//梯形法求面積
}
return s;
}
相關(guān)文章
詳解C語(yǔ)言內(nèi)核中的鏈表與結(jié)構(gòu)體
Windows內(nèi)核中是無(wú)法使用vector容器等數(shù)據(jù)結(jié)構(gòu)的,當(dāng)我們需要保存一個(gè)結(jié)構(gòu)體數(shù)組時(shí),就需要使用內(nèi)核中提供的專用鏈表結(jié)構(gòu)。本文分享了幾個(gè)內(nèi)核中使用鏈表存儲(chǔ)多個(gè)結(jié)構(gòu)體的通用案例,希望對(duì)你有所幫助2022-09-09
C++基于灰度圖上色GrayToColorFromOther的實(shí)現(xiàn)
本文主要介紹了C++基于灰度圖上色GrayToColorFromOther的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
用C/C++代碼檢測(cè)ip能否ping通(配合awk和system可以做到批量檢測(cè))
今天小編就為大家分享一篇關(guān)于用C/C++代碼檢測(cè)ip能否ping通(配合awk和system可以做到批量檢測(cè)),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
初識(shí)C++?Vector模板與實(shí)例化原理
這篇文章主要為大家介紹了初識(shí)C++?Vector模板與實(shí)例化原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解
這篇文章主要介紹了C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10

