數學基礎:
極限的概念:如果有一個函數$f(x)$,若存在一個很小的數$\epsilon>0$和一個很大的數$N>0$,使得當$x>N$時,總會有$f(x)$和$A$的差的絕對值小於$\epsilon $ ,那么可以稱函數$f(x)$在$x\rightarrow +\infty$時極限為$A$,記作:$$\lim_{x\rightarrow +\infty} f(x) = A$$
此外還有左極限、有極限的概念,如有需求請自行百度學習。
問題模型:
假設某種疾病的感染人數與天數的函數關系為:
$$f(d)=\frac{10^8}{7+3\times10^4\times e^{-d}}$$
現在需要計算以下兩個數據:
- 計算感染人數到達100萬需要的天數
- 計算如果不采取措施,最終的感染人數。
C++代碼:
1 /** 2 * @file main.cpp 3 * @author 禪元天道 chanyuantiadnao@126.com 4 * @date 2021-11-25 15:47 5 * @brief C++計算數學中的極限問題(模擬疾病傳播情況)。 6 **/ 7 #include <iostream> 8 #include <math.h> 9 10 /** 11 * @brief 設置一個允許誤差值 12 **/ 13 const double dTininessVal = 0.000001; 14 15 /** 16 * @brief 獲取函數C(d) = 10^8/(7+3*10^4*e^(-d))的計算結果 17 * @param double d 函數中d的值 18 * @return 函數的計算結果 19 **/ 20 double getFuncValue(double d) 21 { 22 return pow(10, 8) / (7 + 3 * pow(10, 4) * exp(-d)); 23 } 24 25 int main(void) 26 { 27 int nD = 0; 28 double dl = getFuncValue(nD); 29 //判斷人數沒有達到100萬人,則一直循環 30 while (dl < 1000000) 31 { 32 nD++; 33 dl = getFuncValue(nD); 34 } 35 std::cout << "達到100萬人次需要" << nD << "天。" << std::endl; 36 37 //前一天的人數 38 double dlPre = 0; 39 //當天的人數 40 double dlNow = 0; 41 dlNow = dl; 42 while (dlNow - dlPre > dTininessVal) 43 { 44 dlPre = dlNow; 45 nD++; 46 dlNow = getFuncValue(nD); 47 } 48 std::cout << "達到極限的人數:" << dlNow << std::endl; 49 std::cout << "達到極限的天數:" << nD << std::endl; 50 return 0; 51 }
運行結果: