指数概念与指数函数

认识指数函数

基本概念

(x+y)^n

(x+y)称为底数(或是基数base),幂的部分n称为指数(index),则称指数表达式。

左边有函数,则称指数函数(exponintial function)。

复利计算实例

列出1~10年的累积金额。

base = 10000
rate = 0.03
year = 10
for i in range(1, year+1):
    base = base + base*rate
    print('经过 {0:2d} 年后累积金额 {1:6.2f}'.format(i,base))

代码如下:

[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
经过  1 年后累积金额 10300.00
经过  2 年后累积金额 10609.00
经过  3 年后累积金额 10927.27
经过  4 年后累积金额 11255.09
经过  5 年后累积金额 11592.74
经过  6 年后累积金额 11940.52
经过  7 年后累积金额 12298.74
经过  8 年后累积金额 12667.70
经过  9 年后累积金额 13047.73
经过 10 年后累积金额 13439.16

[Done] exited with code=0 in 0.474 seconds

病毒复制

假设初期病毒数量是100,每个小时病毒可以翻倍,计算经过10小时后的病毒量,同时列出每小时的病毒量。

base = 100
rate = 1
hour = 10
for i in range(1, hour+1):
    base = base + base*rate
    print('经过 {0:2d} 小时后累积病毒量 {1}'.format(i,base))

运行结果如下:

[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\ch15_2.py"
经过  1 小时后累积病毒量 200
经过  2 小时后累积病毒量 400
经过  3 小时后累积病毒量 800
经过  4 小时后累积病毒量 1600
经过  5 小时后累积病毒量 3200
经过  6 小时后累积病毒量 6400
经过  7 小时后累积病毒量 12800
经过  8 小时后累积病毒量 25600
经过  9 小时后累积病毒量 51200
经过 10 小时后累积病毒量 102400

[Done] exited with code=0 in 0.227 seconds

指数应用在价值衰减

假设当初花100万元买一辆车,计算未来3年后车辆的残值。

base = 100
rate = 0.1
year = 3
for i in range(1, year+1):
    base = base - base*rate
    print('经过 {} 年后车辆残值 {}'.format(i,base))

运行结果如下:

[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
经过 1 年后车辆残值 90.0
经过 2 年后车辆残值 81.0
经过 3 年后车辆残值 72.9

[Done] exited with code=0 in 0.305 seconds

用指数概念看iPhone容量

省略

指数运算的规则

指数运算称为幂(Exponentiation)运算。

指数是0

除了0以外,所以数的0次方皆是1。b^0=1

相同底数的数字相乘

两个相同底数的数字相乘,结果是底数不变,指数相加。b^m*b^n=b^{m+n}

相同底数的数字相除

两个相同底数的数字相除,结果是底数不变,指数相减。b^m/b^n=b^{m-n}

相同指数幂相除

相同指数幂相除,指数不变,底数相除。\frac{a^n}{b^n}=(\frac{a}{b})^n

指数幂是负值        b^{-n}=\frac{1}{b^n}

指数的指数运算        (b^m)^n=b^{m*n}

两数相乘的指数        (a*b)^n=a^n*b^n

根号与指数                b^{\frac{1}{n}}=\sqrt[n]{b}

指数函数的图形

指数函数的图形在计算机领域应用非常广泛,当数据以指数方式呈现时,如底数是大于1,数据将呈现非常陡峭的增长。

底数是变量的图形

绘制底数是变量的图形,假设指数是2,格式如下:n^2

我们形容数据是依据底数的平方做变化,在计算机领域,n^2也可以代表程序执行的时间复杂度,一个算法的好坏可用时间复杂度表示,下列从左到右相当于是从好到不好。

O(1)<O(log n)<O(n)<O(nlog n)<O(n^2)

用程序绘制O(1)、O(log n)、O(n)、O(nlog n)、O(n^2)的图形,读者可以了解当n是1~10时,所需要的程序运行时间关系图。

import matplotlib.pyplot as plt
import numpy as np

xpt = np.linspace(1, 5, 5)                  # 建立含10个元素的数组
ypt1 = xpt / xpt                            # 时间复杂度是 O(1)
ypt2 = np.log2(xpt)                         # 时间复杂度是 O(logn)               
ypt3 = xpt                                  # 时间复杂度是 O(n)
ypt4 = xpt * np.log2(xpt)                   # 时间复杂度是 O(nlogn)
ypt5 = xpt * xpt                            # 时间复杂度是 O(n*n)
plt.plot(xpt, ypt1, '-o', label="O(1)")                  
plt.plot(xpt, ypt2, '-o', label="O(logn)")                  
plt.plot(xpt, ypt3, '-o', label="O(n)")
plt.plot(xpt, ypt4, '-o', label="O(nlogn)")
plt.plot(xpt, ypt5, '-o', label="O(n*n)")
plt.legend(loc="best")                      # 建立图例
plt.axis('equal')
plt.show()

运行结果:

 

指数幂是实数变量

当指数幂是实数变量,例如

y=f(x)=b^2

当x是负值时,负值越大,y值将逐渐趋近于0。如果x=0,y值是1。当x是正值时,正值越大,数值将极速上升。

绘制下列两条x=-3至x=3的指数函数图形。

y=f(x)=2^x

y=f(x)=4^x

代码如下:

import matplotlib.pyplot as plt
import numpy as np

x2 = np.linspace(-3, 3, 30)                 # 建立含30个元素的数组
x4 = np.linspace(-3, 3, 30)                 # 建立含30个元素的数组
y2 = 2**x2
y4 = 4**x4
plt.plot(x2, y2, label="2**x")
plt.plot(x4, y4, label="4**x")
plt.plot(0, 1, '-o')                        # 标记指数为0位置
plt.legend(loc="best")                      # 建立图例
plt.axis([-3, 3, 0, 30])
plt.grid()
plt.show()

运行结果如下:

指数幂是实数变量但是底数小于1

底数小于1,例如底数是0.5,参考函数:y=f(x)=0.5^2

此是线形方向将完全相反,指数值是正值,正值越大将越趋近于0。指数值的负值,负值越大数值将越大。不过如果指数是0,结果是1。

绘制下列两条x=-3至x=3的指数函数图形。

y=f(x)=0.5^x

y=f(x)=0.25^x

代码如下:

import matplotlib.pyplot as plt
import numpy as np

x2 = np.linspace(-3, 3, 30)                 # 建立含30个元素的数组
x4 = np.linspace(-3, 3, 30)                 # 建立含30个元素的数组
y2 = 0.5**x2
y4 = 0.25**x4
plt.plot(x2, y2, label="0.5**x")
plt.plot(x4, y4, label="0.25**x")
plt.plot(0, 1, '-o')                        # 标记指数为0位置
plt.legend(loc="best")                      # 建立图例
plt.axis([-3, 3, 0, 30])
plt.grid()
plt.show()

运行结果如下:

猜你喜欢

转载自blog.csdn.net/DXB2021/article/details/127169967