1. 程式人生 > >用復化梯形公式求定積分舉例(C++實現)

用復化梯形公式求定積分舉例(C++實現)

//復化梯形公式求定積分
//將[down,up]分成n等份(積分割槽間),子區間長度為h=(b-a)/n
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
  double up, down, a, b, c, n = 100; //積分割槽間被分為n等份
  cout << "依次輸入積分上限up、積分下限down和函式引數a、b、c的值:" << endl;
  cin >> up >> down >> a >> b >> c;
  cout << endl;
  double h = (up - down) / n;    //子區間長度,即迭代步長
  double result, fx=0, fa, fb;   //result積分最終結果
  double x = 0;
  for (int i = 1; i <= n - 1;i++)   
  {
    fx += c / (1 + a*pow(x, b)*sqrt(x));
    x += (up - down) / n;
  }
  fa = c / (1 + a*pow(a, b)*sqrt(a));
  fb = c / (1 + a*pow(b, b)*sqrt(b));
  result = (h / 2)*(fa+2*fx+fb);
  cout << "步長h:" << h << endl;
  cout << "f(a):" << fa << endl;
  cout << "f(b):" << fb << endl;
  cout <<"result:"<< result << endl;
  return 0;
}

積分上下限up和down、另外還有函式f(x)中的三個引數a、b和c可以根據需要設定。我只是隨便選了個函式而已,大家可以根據自己的需要自己設定,只要保證演算法正確的使用肯定是可以得出正確的結果的。

復化梯形公式是《數值分析原理》中的內容,不瞭解的可以百度一下。

本例函式f(x):

f(x)=c/[(1+ax^b)*x^(1/2)]

相關推薦

梯形公式積分舉例C++實現

//復化梯形公式求定積分 //將[down,up]分成n等份(積分割槽間),子區間長度為h=(b-a)/n #include<iostream> #include<cmath> using namespace std; int main() {

演算法設計--蠻力法&&分治法最近對問題C++實現

最近對問題? 設p1=(x1,y1), p2(x2,y2), ....,pn=(xn,yn)是平面上n個點構成的集合S,最近對問題就是找出集合S中距離最近的點對。 兩種演算法思想: 1. 蠻力法:顧名思義,利用正常的思維,使用強硬的方式求解出結果。 2. 分治法:分治,分而

高斯下降法解多元一次方程組C++實現

昨天演算法上機出了一道求多元一次方程組的題目,大神們早早就提交了,而我弄了很久,然而並不能在規定時間內完成。究其原因,是線性代數的知識已經忘光了。痛定思痛,我決定把這個題目弄出來,上傳到CSDN部落格,以警醒我日後仍需多加用功。 本文的程式碼涉及到以下幾個

梯形公式Simpon公式計算積分的近似值

習題七 10.1 import numpy as np k=np.arange(0,9) xi=np.arange(0,1.1,0.125) yi=xi print(k) print(xi) for x in range(0,9): yi[x]=xi[x]/(1+xi[x]

積分定義積分c++實現

#include<iostream>#include<cmath>using namespace std;double djf(double a,double b,int n);double fun(double x);int main(){    double a,b; int n;

較大整數n的階乘,因為n較大時,n的階乘超出了正常類型的表示範圍,可以采數組進行操作c實現

c語言 n階乘下面鏈接是java的實現,思路叫清晰點http://blog.51cto.com/6631065/2044441 #include <stdio.h> void Print_Factorial ( const int N ); int main() { int N; sc

利用泰勒公式cosx的值sinx類似

如題:利用泰勒公式計算cos(x)的值,要求輸入x(弧度值),當精度小於10的-7次方時程 #include <stdio.h> #include <math.h> #define jingdu 1e-7 #define pi 3.1415926 un

caffe之網路權重視覺C++實現,分析網路功能 caffe之網路權重視覺C++實現

原 caffe之網路權重視覺化(C++實現) 2017年05月05日 11:28:12 真小假 閱讀數:3083 &

編寫一個簡單的記事本C#實現

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Syste

位子串 C語言

題目描述 將子串在母串中第一次出現的位置找出來。 圖1:在母串中第pos個位置定位子串的演算法 圖2:從母串中第pos個位置獲得長度為len的子串 輸入描述 若干對字串,每對字串佔一行並用一個空格分開。前一個字串為母串,後者為子串。字串只包含英文字母的大小寫。每

hdu 2007 奇數的乘積C語言

hdu 2007 求奇數的乘積 link 題目描述 Problem Description 給定一段連續的整數,求出他們中所有偶數的平方和以及所有奇數的立方和。 Input 輸入資料包含多組測試例項,每組測試例項包含一行,由兩個整數m和n組成。 Output 對

牛頓方法解一元非線性方程的根Matlab實現

題目:用牛頓法求方程x-cos(x)=0的實根(精確到1E-6)。 (1)要求用函式呼叫。 (2)進一步研究和絃截法作比較。 演算法分析: (1)       此題是利用牛頓方法解一元非線性方程的根。(牛頓法是把非線性方程區域性線性化的一種方法,它在單根附近具有較高的收

字串中子串出現的次數c++實現

題目如題目所示。 程式碼如下:int findSubStringNUM(const char* targetString,const char* subString){ assert(NULL!=targetString||NULL!=subString); int i

遞迴演算法老鼠走迷宮C語言

  /*說明老鼠走迷宮是遞迴求解的基本題型,我們在二維陣列中使用2表示迷宮牆壁, 使用1來表示老鼠的行走路徑,試以程式求出由入口至出口的路徑。 解法老鼠的走法有上、左、下、右四個方向,在每前進一格之後就選一個方向前進, 無法前進時退回選擇下一個可前進方向,如此在陣列中依序測

字元定位--函式指標 + cal(f, a, b)梯形公式函式f(x)在[a, b]上的數值積分

字元定位 #include<stdio.h> char *match(char *s, char ch); int main(void){ char ch, str[80],*p = NULL; scanf("%s", str); getcha

矩形法梯形積分

分析: 高中的時候,我們學習過,可以通過矩形法或者矩形法來求定積分。 思路就是將積分割槽間劃分成n等份,然後將這n等份近似看成矩形(或梯形),然後對所有的矩形(或梯形)的面積進行求和。 簡單的例子: 求函式X^2在的定積分 矩形法: #include<iostrea

C語言矩形法積分的通用函式,分別 sinx, cosx,e^x

要求: 寫一個用矩形法求定積分的通用函式,分別求:sin(x),cos(x),e^x 。 分析: 矩形法,學過高等數學就知道化曲為直的思想。將定積分化為多個函式連續的和。基本思想是將區間[a,b]化成n等分,當n越大的時候結果越準確。圖形化成一小塊一小塊的矩形。底邊長都

微分積:梯形辛浦生

復化梯形 將積分割槽間[a,b]劃分n等分,步長,求積節點,在每個小區間上應用梯形公式 然後將它們累加求和,作為所求積分I的近似值. 記      式為復化梯形求積公式,下標n表示將區間n等分。 演算法流程  演算法程式碼 double

8.13 寫一個矩陣法積分的通用函式,分別 sinx,cosx,exp(x)的積分

8.13 寫一個用矩陣法求定積分的通用函式,分別求 sinx,cosx,exp(x)的積分;個人程式碼如下:#include<stdio.h> #include<math.h>

python 積分常義積分

根據數學分析書上的介紹,我把求解常義積分的各種方法的程式碼寫下:from numpy import* a,b,n,sum=-1,1,10,0 #寫出函式表示式 def f(x): return exp(x) #分為小矩形求和 #1.定義法 def defi(n)