C++解說無窮小量與無窮大量【C++解說微積分】


數學基礎:

(1)無窮小量

對函數 $f(x)$,假設$x$趨於$x_0$時函數$f(x)$的極限為0,則稱函數$f(x)$為$x$趨於$x_0$時的無窮小量,也叫無窮小。

(2)無窮大量

對函數 $f(x)$,假設$x$趨於$x_0$時函數$f(x)$的絕對值無限增大,則稱函數$f(x)$為$x$趨於$x_0$時的無窮大量,也叫無窮大,也可以說極限不存在。

(3)無窮小的比較

設$\alpha$、$\beta$為自變量的同一變化過程中的無窮小,且$\alpha\neq0$.

若$lim\frac{\beta}{\alpha}=0$,則稱$\beta$是比$\alpha$高階的無窮小,記作$\beta=0(\alpha)$;

若$lim\frac{\beta}{\alpha}=\infty$,則稱$\beta$是比$\alpha$低階的無窮小;

若$lim\frac{\beta}{\alpha}=C\neq0$,則稱$\beta$是$\alpha$的同階無窮小;

特別當$C=1$時,則稱$\beta$是$\alpha$的等價無窮小,記作$α~β$;

若$lim\frac{\beta}{\alpha^k}=C\neq0$,則稱$\beta$是$\alpha$的$k$階無窮小。

 

數學求解:

比較以下無窮小量的階。

(1)當$x\to2$時,$x-2$與$x^2-4$;

(2)當$x\to1$時,$x-1$與$x^2-x$;

(3)當$x\to\infty$時,$\frac{2}{x}$與$\frac{3}{x^2}$;

解:

(1)因為$x$趨於2時:
$$
\lim_{x\to2}\frac{x-2}{x^2-4}=\lim_{x\to2}\frac{x-2}{(x-2)(x+2)}=\lim_{x\to2}\frac{1}{x+2}=\frac{1}{4}
$$
所以$x$趨於2時,$x-2$與$x^2-4$同階無窮小。

(2)因為$x$趨於1時:
$$
\lim_{x\to1}\frac{x-1}{x^2-x}=\lim_{x\to1}\frac{x-1}{x(x-1)}=\lim_{x\to1}\frac{1}{x}=1
$$
所以$x$趨於1時,$x-1$與$x^2-x$同階無窮小。

(1)因為$x$趨於$\infty$時:
$$
\lim_{x\to\infty}\frac{\frac{2}{x}}{\frac{3}{x^2}}=\lim_{x\to\infty}\frac{2x}{3}=\infty
$$
所以$x$趨於$\infty$時,$\frac{2}{x}$是比$\frac{3}{x^2}$低階無窮小。

 

C++代碼:

  1 /**
  2  * @file program_2_11_3.cpp
  3  * @brief 比較無窮小量的階(1)當x->2時,x-2與x^2-4;(2)當x->1時,x-1與x^2-x;(3)當->∞時,2/x與3/x^2
  4  * @author 禪元天道 chanyuantiandao@126.com
  5  * @version 1.0.0
  6  * @date 2021-12-25
  7  */
  8 #include <iostream>
  9 #include <cmath>
 10 #include <iomanip>
 11 
 12 using namespace std;
 13 
 14 /**
 15  * @brief 設置允許的誤差值
 16  */
 17 const double tininessValue = 0.000000001 * 0.000000001;
 18 
 19 /**
 20  * @brief 計算(x-2)/(x^2-4)的值
 21  * @param x 因變量x的值
 22  * @return 計算結果
 23  */
 24 double getValue1(double x)
 25 {
 26     if(x == 2){
 27         cout << "分母值為0,計算失敗!" << endl;
 28         return 0;
 29     }
 30     return (x-2)/(pow(x, 2) - 4);
 31 }
 32 
 33 /**
 34  * @brief 計算(x-1)/(x^2-x)的值
 35  * @param x 因變量x的值
 36  * @return 計算結果
 37  */
 38 double getValue2(double x)
 39 {
 40     if(x == 1){
 41         cout << "分母值為0,計算失敗!" << endl;
 42         return 0;
 43     }
 44     return (x-1)/(pow(x, 2) - x);
 45 }
 46 
 47 /**
 48  * @brief 計算(2/x)/(3/x^2)的值
 49  * @param x 因變量x的值
 50  * @return 計算結果
 51  */
 52 double getValue3(double x)
 53 {
 54     if(x == 0){
 55         cout << "分母值為0,計算失敗!" << endl;
 56         return 0;
 57     }
 58     return (2/x)/(3/pow(x, 2));
 59 }
 60 
 61 void printLimValue(const double trend, const double incrementValue, double (*pf)(double))
 62 {
 63 
 64     //開始求左極限
 65     double tempIncrementValue = incrementValue;
 66     double x = trend - tempIncrementValue;
 67     double yPre = 0;
 68     double yNow = (*pf)(x);
 69 
 70     while(x < trend)
 71     {
 72         tempIncrementValue /= 2;
 73         x += (tempIncrementValue);
 74         yPre = yNow;
 75         yNow = (*pf)(x);
 76         if(abs(yNow - yPre) < tininessValue){
 77             cout << setprecision(20) << "當前遞歸循環的x值:" << x << endl;
 78             cout << "左極限為" << yNow << endl;
 79             break;
 80         }
 81     }
 82 
 83 
 84     //開始求右極限
 85     tempIncrementValue = incrementValue;
 86     x = trend + tempIncrementValue;
 87     yPre = 0;
 88     yNow = (*pf)(x);
 89 
 90     while(x > trend)
 91     {
 92         tempIncrementValue /= 2;
 93         x -= (tempIncrementValue);
 94         yPre = yNow;
 95         yNow = (*pf)(x);
 96         if(abs(yNow - yPre) < tininessValue){
 97             cout << setprecision(20) << "當前遞歸循環的x值:" << x << endl;
 98             cout << "右極限為" << yNow << endl;
 99             break;
100         }
101     }
102 
103     cout<<endl;
104 }
105 
106 int main()
107 {
108     //求極限時,x的趨向值
109     //const double trend = 2;
110     //求極限時,x的初始增量值:
111     //const double incrementValue = 0.1;
112 
113     cout << "比較x趨於2時,x-2與x^2-4的無窮小量的階" << endl;
114     printLimValue(2, 0.1, getValue1);
115 
116     cout << "比較x趨於1時,x-1與x^2-x的無窮小量的階" << endl;
117     printLimValue(1, 0.1, getValue2);
118 
119     cout << "比較x趨於無窮時,2/x與3/(x^2)的無窮小量的階" << endl;
120     //注意在處理無窮大時,增量值不能設置的太小,否則會出現LLONG_MAX減去一個很小值后得到的結果在計算機表示還是LLONG_MAX的值,無法進入while循環
121     printLimValue(LLONG_MAX, 9999, getValue3);
122 
123     return 0;
124 }

 

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM