【计算方法】数值积分
生活随笔
收集整理的這篇文章主要介紹了
【计算方法】数值积分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.在高等數學中,積分一直是我們的重點。學過一重積分,二重積分,三重積分,分別幾何中對應著線、面、體。用計算機去求解數值積分則是另一種思想,之前和付老師聊過,關于數學模型的問題,那是讀吳軍《智能革命》時遇到他寫的用數據去建立一個數學模型,當時自己的疑問就是這個數學模型是不是一個映射,他能根據輸入的數據x–映射–輸出的y。后來付老師說了很多,至今只有一點還是清楚的:現實世界是連續的,計算機是離散的,而顯示出來的數據需要是連續的,兩兩者之間就存在轉化關系。
2.今天學到的計算方法中數值積分就是將聯系的轉換成離散的計算然后再連續累加。
3.積分的本質是無窮小的和–曾幾何時看到一本書寫的,很受啟發,一直記得。后來和老師談起,他還不相信,搖頭說我錯了。旁邊的好盆友說那應該是有限個無窮小吧,當時經過腦子就直接認同,回來查看自己的數學課本(又像個無窮小仍然是無窮小)。對這些東西有進一步了解深刻。
【問題對象】
【理論基礎】
【收斂條件】
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #define ex 0.5*pow(10,-5) #define N 20 /****************************************** *數值積分 * 用復化梯形積分和變步長梯形積分求 *被積函數 : 1/(x*x +1) 積分區間 : [0,1] ******************************************/ //被積函數 double f(double x) {return 1 / (x * x + 1); }/******************************* *復化梯形積分方法求解 ********************************/ double method1(double h,double a, double b) {double T = 0; for (int k = 1; k < N; k++) {T += f(a + k * h);}T= (h / 2) * (f(a) + 2*T + f(b));return T; } /******************************************* *變步長求解梯形積分 *********************************************/ double method2(double h, double a, double b) {double T1 = (f(a) + f(b))*h/2;double T2 = 0;double x;int k = 1;do {double s = 0;x = a + h /2;//計算f(X k+ 1/2)do {s += f(x);x += h;}while(x < b);T2 = (T1 + h * s) / 2;printf("第 %d 次 T1 = %4lf------T2 = %4lf\n",k++, T1, T2);if (fabs(T2 - T1) < ex) {break;} else {T1 = T2;h /= 2; //再次二分區間}}while(1);return T2; } //辛普森求解 double Simpton(double h, double a, double b) {double x = a + h / 2;double s1 = f(x);double s2 = 0;for (int i = 1; i < N; i++) {s1 += f(a + i * h + h / 2 );s2 += f(a + i * h);}s2 = h * (f(a) + 4 * s1 + 2 * s2 + f(b)) / 6;return s2; }int main() {double result = 0;double a = 0;double b = 1;double h = (b - a) / N;//1.調用復化梯形積分求解result = method1(h, a, b);printf("復化梯形積分求解答案 : %lf\n",result);//2.等步長result = method2(h, a, b);printf("等步長積分求解答案 : %lf\n", result);//復化辛普森result = Simpton(h, a, b);printf("復化辛普森求解答案 : %lf\n", result);return 0; }【求解結果】
總結
以上是生活随笔為你收集整理的【计算方法】数值积分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#课程设计简单题目_《C#项目案例》课
- 下一篇: oracle 未找到段的存储定义,Exp