C++解说函数的极限【C++解说微积分】
数学基础:
极限的概念:如果有一个函数$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 }
运行结果: