1. 程式人生 > >C程式設計案例(矩形法求定積分問題)

C程式設計案例(矩形法求定積分問題)

矩形法求定積分問題

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

程式碼實現:

#include<stdio.h>
#include<math.h>

float fsin(float x);
float func(float (*p)(float),float a,float b,int n);

int main(){
	float a,b;	//積分上下限
	int n;	//將積分割槽域劃分為n個格(n越大,精確度越高)

	printf("請輸入積分下限、上限:");
	scanf("%f %f",&a,&b);
	printf("請輸入n:");
	scanf
("%d",&n); float result=func(fsin,a,b,n); printf("積分結果為:%f\n",result); return 0; } float func(float (*p)(float),float a,float b,int n){ float sum=0; float dis=(a-b)/n;//n越大,精確度越高 float x=a; for(int i=0;i<n;i++){ sum+=(*p)(x+(i-1)*dis+dis/2)*dis; } return sum; } float fsin(float x){ return
sin(x); }
程式碼註解:
  1. 求解定積分的原理其實和數學裡面極限的思想是一樣的,將積分割槽域分為很多的非常小的區域,這樣這些區域就可以近似的看成一個點,然後用這個區域的長度乘以它對應的這點的函式值,最後進行累加就可以解決。
  2. n的值越大,分的區域越多,精度越高。
  3. 矩形法 S i
    = f ( a + i 1 h + h 2 ) h = b a 2 S(i)=f(a+\frac{i-1}{h}+\frac{h}{2}) 其中(h=\frac{b-a}{2})
  4. 同理,梯形法求積分:
    • 第一個: S 1 = f ( a ) + f ( a + h ) 2 h S_1=\frac{f(a)+f(a+h)}{2}*h
    • i i 個: S i = f ( a + ( i 1 ) h ) + f ( a + i h ) 2 h S_i=\frac{f(a+(i-1)*h)+f(a+ih)}{2}*h

參考文章:

  1. https://wenku.baidu.com/view/1dca9d1ffc4ffe473368aba4.html
  2. https://blog.csdn.net/l769255844/article/details/50792072
    補充:
  3. CSDN中如何插入數學公式:https://blog.csdn.net/the_lastest/article/details/73350493
  4. 關於如何修改CSDN中的字型大小和顏色:https://blog.csdn.net/xminyang/article/details/80341707