一:第一章:
基本初等函數:

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 import warnings 6 warnings.filterwarnings('ignore') #不發出警告 7 8 #映射與函數 9 #冪函數 10 if 0: 11 x = np.linspace(-np.pi,2*np.pi,num = 50) 12 y = x**2 13 14 plt.scatter(x,y,marker='.') 15 plt.plot(x,y) 16 17 #輔助線 18 plt.axvline(0,color ='cyan',linestyle = '--',alpha = 0.8) 19 plt.axhline(0,color='cyan',linestyle='--',alpha = 0.8) 20 21 22 plt.show() 23 pass 24 #指數函數 25 if 0: 26 x = np.linspace(-np.pi,2*np.pi,num = 50) 27 y = 2**x #指數函數 28 29 plt.scatter(x,y,marker='.') 30 plt.plot(x,y) 31 32 plt.axhline(0,color='cyan',linestyle='--',alpha = 0.8) 33 plt.axvline(0,color='cyan',linestyle='--',alpha = 0.8) 34 35 plt.show() 36 pass 37 38 #對數函數 39 if 0: 40 x = np.linspace(-np.pi,2*np.pi,num= 50) 41 y = np.log2(x) 42 43 plt.scatter(x,y,marker = '.') 44 plt.plot(x,y) 45 46 plt.axhline(0,color='cyan',linestyle = '--',alpha = 0.8) 47 plt.axvline(0,color='cyan',linestyle = '--',alpha = 0.8) 48 49 plt.show() 50 51 52 53 pass 54 55 #三角函數 56 if 0: 57 x = np.linspace(-np.pi,2*np.pi,num=50) 58 y = np.sin(x) 59 60 plt.scatter(x,y,marker ='.') 61 plt.plot(x,y) 62 63 plt.axhline(0,color = 'cyan',linestyle ='--',alpha = 0.8) 64 plt.axvline(0,color='cyan',linestyle = '--',alpha = 0.8) 65 66 plt.show() 67 68 pass 69 70 #反三角函數 71 if 0: 72 #f = arcsin(x) 73 x = np.linspace(-np.pi,2*np.pi,num = 100) 74 y = np.arccos(x) 75 76 plt.scatter(x,y,marker = '.') 77 plt.plot(x,y) 78 79 plt.axhline(0,color='cyan',linestyle='--',alpha = 0.8) 80 plt.axvline(0,color='cyan',linestyle='--',alpha = 0.8) 81 82 plt.show() 83 pass
數列 和函數的極限:

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 # import warnings 6 # warnings.filterwarnings('ignore') #不發出警告 7 8 #數列 x/(x+1) 的極限 9 if 0: 10 x = np.arange(50) 11 y = x/(x+1) 12 13 plt.scatter(x,y,marker = '.') 14 plt.plot(x,y) 15 16 plt.axvline(0,color='cyan',linestyle='--',alpha = 0.8) 17 plt.axhline(0,color='cyan',linestyle='--',alpha = 0.8) 18 19 plt.show() 20 21 pass 22 23 #函數的極限 24 if 0: 25 x = np.linspace(-2,2,num=100) 26 y = x**2 -1 27 28 plt.scatter(x,y,marker = '.') 29 plt.plot(x,y) 30 31 plt.axvline(0,color='cyan',linestyle='--') 32 plt.axhline(0,color='cyan',linestyle='--') 33 34 #極限值 35 plt.axhline(-1,color='red',linestyle = '--') 36 plt.show() 37 pass 38 39 40 #練習 :極限 41 #函數的極限 42 if 1: 43 x = np.arange(1,50) 44 y = (2*x+1)/x 45 46 plt.scatter(x,y,marker = '.') 47 plt.plot(x,y) 48 49 # plt.axhline(2) #默認顏色是類似於 cyan 50 plt.axhline(2,color='red') #默認是直線 51 52 53 plt.show() 54 pass
二:第二章:
導數與微分:

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 #導數 6 if 0: 7 def f(x): 8 return x**2 9 10 plt.figure(figsize = (12,6)) 11 n = np.linspace(-10,10,num=50) 12 13 plt.plot(n,f(n)) 14 plt.xlim(-10,10) 15 # plt.ylim(-10,100) #設置axes 的limits 16 17 #畫出兩點一線 18 plt.plot([2,5],[4,25],color='r') 19 20 x_m = 2 21 for i in range(1,5): 22 plt.plot([x_m,x_m+i],[f(x_m),f(x_m+i)],color='r') 23 24 25 26 27 28 29 30 plt.show() 31 32 pass 33 34 #求函數在一點處的導數 35 if 0: 36 def f(x): 37 return x ** 2 38 def ds(x,d): 39 ''' 40 41 :param x: 選取一點 42 :param d: 向右偏離x 的距離 43 :return: 斜率 44 ''' 45 y1 = f(x) 46 y2 = f(x+d) 47 return (y2-y1)/d 48 49 for i in np.linspace(1,0,num=1000,endpoint=False): #endpoint 可以控制是否要右端點 50 ret = ds(2,i) #求 在 f(x)=x^2 當x = 10 時的導數 51 print("當2 偏{:.3f} 個單位的時候,直線的斜率是{:.3f}".format(i,ret) ) 52 pass 53 #圖示 54 if 0: 55 def f(x): 56 return x**2 57 n = np.linspace(-10,10,num = 50) 58 plt.plot(n,f(n)) 59 60 plt.scatter(2,4) 61 plt.plot(n,4*n-4) 62 63 plt.show() 64 65 pass 66 67 68 # 69 if 0: 70 def f_(x): 71 return 1 - 10 * x + 6 * x ** 2 - (1 + x ** 2) / (2 * x ** 2) + 3 * np.cos(x) * x + 3 * np.sin(x) 72 73 def f(x): 74 return 2*x**3 -5*x**2 + 3*x*np.sin(x) + (x**2 +1)/(2*x) -7 75 76 x = np.linspace(10,0,num=100,endpoint=False) 77 plt.figure(figsize=(12,6)) 78 plt.plot(x,f(x)) 79 80 m= n = 6 81 plt.scatter(m,f(m)) 82 83 plt.plot(x,f_(x)) 84 plt.show() 85 pass
泰勒公式:
導數與微分的應用:
單調性和凸凹性
單調性判斷:f'(x) >0 增 反之減
凸凹形 :f''(x) >0 凹 反之 凸
方程的近似解
二分法:
切線法:

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 #函數的單調性和 曲線的凸凹性 6 if 0: 7 def f1(x): 8 return 2*x**3 - 9*x**2 +12*x -3 9 10 x =np.linspace(-10,10,num= 100) 11 plt.plot(x,f1(x)) 12 13 #輔助線 14 plt.axvline(0,color = 'gray',linestyle='--',alpha =0.8) 15 plt.axhline(0,color = 'gray',linestyle='--',alpha =0.8) 16 17 18 19 plt.show() 20 pass 21 22 #二分法求解 23 if 0: 24 def f(x): 25 return x**3 + 1.1*x**2 +0.9*x -1.4 26 x = np.linspace(-10,10,num=100) 27 plt.plot(x,f(x)) 28 29 plt.axvline(0,color='cyan',linestyle='--') 30 plt.axhline(0,color='cyan',linestyle='--') 31 #二分法 32 33 res_ls=[0,1] 34 for i in range(10): 35 mid = (res_ls[0] +res_ls[1])/2 36 if f(mid)*f(0) < 0: 37 res_ls[1] = mid 38 else: 39 res_ls[0] = mid 40 print("第{} 次循環,此時的區間為 {} !".format(i+1,res_ls)) 41 pass 42 43 #切線法求解 44 if 1: 45 def f(x): 46 return x**3 + 1.1*x**2 +0.9*x -1.4 47 #f(x) 在0 -1 單調遞增 48 49 plt.xlim([0,1]) 50 plt.ylim([f(0),f(1)]) 51 52 x = np.linspace(0,1,num=100) 53 plt.axvline(0,color='cyan',linestyle='--') 54 plt.axhline(0,color='cyan',linestyle='--') 55 plt.plot(x,f(x)) 56 57 58 #切線法 59 res = 1 60 #f(x) 的導數 61 def f_1(x): 62 return 3*x**2 +2.2*x +0.9 63 for i in range(10): 64 p_Pre = res 65 res = res - f(res)/f_1(res) 66 print("第{}次循環的估計值為{}".format(i+1,res)) 67 plt.plot([p_Pre,res],[f(p_Pre),0]) 68 pass 69 70 plt.show()
三:第三章:不定積分,定積分
不定積分:
不定積分的方法:
換元法
分部積分法
小結:
定積分:
定積分的解法:
牛頓-萊布尼茨公式:
換元法與分部積分法:
定積分的應用:
1,計算圖形的面積
2,計算體積:

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 #定積分的求解 6 if 0: 7 def f(x): 8 return x**2 9 10 x = np.linspace(-1,2) 11 plt.plot(x,f(x)) 12 plt.axhline(0,color='cyan',linestyle='--') 13 plt.axvline(0,color='cyan',linestyle='--') 14 plt.axvline(1,color='cyan',linestyle='--') 15 #填充圖形 16 x1 = np.linspace(0,1) #要填充的x 17 plt.fill_between(x1,0,f(x1),color='k',alpha =0.4) #第一個參數是 要覆蓋的區域,第二個是下限,第三個是上限 18 19 #上面都是在畫圖,下面計算 20 area =0 21 for i in range(len(x1))[:-1]: #去掉最后一個 22 mid_idx = (x1[i] +x1[i+1])/2 23 area += (x1[i+1]-x1[i])*f(mid_idx) 24 print(area) #0.3332986255726781 25 pass 26 27 #計算圖形的面積: 28 if 0: 29 def f1_1(x): 30 return (2*x)**0.5 31 def f1_2(x): 32 return -(2*x)**0.5 33 34 def f2(x): 35 return x-4 36 x = np.linspace(0,10,num=100) 37 plt.plot(x,f1_1(x),'r', 38 x,f1_2(x),'g', 39 x,f2(x),'b') 40 41 plt.xlim([-2,10]) 42 plt.ylim([-6,6]) 43 #輔助線 44 plt.axvline(0,color='cyan',linestyle='--') 45 plt.axhline(-2,color='cyan',linestyle='--') 46 plt.axhline(4,color='cyan',linestyle='--') 47 #下面是計算 48 y = np.linspace(-2,4,num=100) 49 area = 0 50 for i in range(len(y))[:-1]: 51 y_midIdx = (y[i]+y[i+1])/2 52 area += (y_midIdx+4 -y_midIdx**2/2)*(y[i+1] - y[i]) 53 print(area) #18.000918273645556 54 # 真實的解 為 18 55 pass 56 57 #計算圖形的面積(0-np.pi/2) 58 if 0: 59 def f(x): 60 return (x +np.sin(x)) /(1+np.cos(x)) 61 x = np.linspace(-0.8*np.pi,0.8*np.pi,num=100) 62 plt.plot(x,f(x)) 63 64 #輔助線 65 plt.axhline(0,color ='cyan',linestyle='--') 66 plt.axvline(0,color ='cyan',linestyle='--') 67 plt.axvline(np.pi/2,color ='cyan',linestyle='--') 68 69 x1 = np.linspace(0,np.pi/2,num=100) 70 plt.fill_between(x1,0,f(x1),color ='k',alpha=0.4) 71 72 #計算 73 area = 0 74 for i in range(len(x1))[:-1]: 75 mid_idx = (x1[i]+x1[i+1])/2 76 area += (x1[i+1] -x1[i])*f(mid_idx) 77 print(area) #1.5707693613636802 78 79 pass 80 81 82 plt.show()
四:第四章:多元函數與重積分
多元函數:
偏導數:
全微分:
重積分:
二重積分:
二重積分的求解:
1,直角坐標系
2,極坐標系
三重積分及解法:

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 from mpl_toolkits.mplot3d import axes3d 6 7 #畫 z = sin(x+y) 的圖 8 if 1: 9 fig = plt.figure() 10 ax = fig.gca(projection='3d') 11 12 x = np.linspace(-np.pi,np.pi) 13 y = np.linspace(-np.pi,np.pi) 14 x,y = np.meshgrid(x,y) 15 z = np.sin(x+y) 16 17 18 ax.view_init(elev=30) 19 # cmap = 'Reds' 20 # cmap = 'Greens' 21 # cmap = 'Blues' 22 ax.plot_surface(x,y,z,rstride=2,cstride=2,cmap='Greens', alpha=0.9) 23 24 plt.show()

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 from mpl_toolkits.mplot3d import axes3d 6 7 #畫 z = sin(x+y) 的圖 8 if 0: 9 fig = plt.figure() 10 ax = fig.gca(projection='3d') 11 12 x = np.linspace(-np.pi,np.pi) 13 y = np.linspace(-np.pi,np.pi) 14 x,y = np.meshgrid(x,y) 15 z = np.sin(x+y) 16 17 18 ax.view_init(elev=30) 19 # cmap = 'Reds' 20 # cmap = 'Greens' 21 # cmap = 'Blues' 22 ax.plot_surface(x,y,z,rstride=2,cstride=2,cmap='Greens', alpha=0.9) 23 24 25 #畫 z = x**2 +3*x*y +y**2 區域 x【-5,5】y【-5,5】 26 if 1: 27 fig = plt.figure() 28 ax = fig.gca(projection='3d') 29 # ax.view_init(elev=None,azim=None) 30 31 x = np.linspace(-5,5) 32 y = np.linspace(-5,5) 33 x,y = np.meshgrid(x,y) 34 z = x**2 +3*x*y +y**2 35 #畫線框架圖 36 ax.plot_wireframe(x,y,z,rstride=2,cstride=2,color='k',alpha=0.8,linewidth=0.5) 37 38 #等高線 contour 是登高的意思 39 ax.contourf(x, y, z, zdir='z', offset=-40, cmap='Blues', alpha=0.7) 40 ax.contourf(x, y, z, zdir='x', offset=-6, cmap='Blues', alpha=0.7) 41 ax.contourf(x, y, z, zdir='y', offset=6, cmap='Blues', alpha=0.7) 42 43 ax.scatter(1, 2, 11, s=20, c='k') 44 # 曲面上的點(1,2,11) 45 46 def fxz(x): 47 return 2 ** x + 6 48 49 50 xn1 = np.linspace(1, 2, num=20) 51 yn1 = np.ones_like(xn1) * 2 52 zn1 = fxz(xn1) 53 ax.plot(xn1, yn1, zn1, '-r') 54 55 56 # 將y看成常量,則y=2,也就是在y=2這個面上,xz組成的函數求導 57 def fyz(y): 58 return 2 ** y + 3 59 60 61 yn2 = np.linspace(2, 3, num=20) 62 xn2 = np.ones_like(xn1) * 1 63 zn2 = fyz(yn2) 64 ax.plot(xn2, yn2, zn2, '-b') 65 # 將x看成常量,則x=1,也就是在x=1這個面上,yz組成的函數求導 66 pass 67 plt.show()

1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 5 from mpl_toolkits.mplot3d import axes3d 6 7 #畫 z = sin(x+y) 的圖 8 if 0: 9 fig = plt.figure() 10 ax = fig.gca(projection='3d') 11 12 x = np.linspace(-np.pi,np.pi) 13 y = np.linspace(-np.pi,np.pi) 14 x,y = np.meshgrid(x,y) 15 z = np.sin(x+y) 16 17 18 ax.view_init(elev=30) 19 # cmap = 'Reds' 20 # cmap = 'Greens' 21 # cmap = 'Blues' 22 ax.plot_surface(x,y,z,rstride=2,cstride=2,cmap='Greens', alpha=0.9) 23 24 #畫 z = x**2 +3*x*y +y**2 區域 x【-5,5】y【-5,5】 25 if 0: 26 fig = plt.figure() 27 ax = fig.gca(projection='3d') 28 # ax.view_init(elev=None,azim=None) 29 30 x = np.linspace(-5,5) 31 y = np.linspace(-5,5) 32 x,y = np.meshgrid(x,y) 33 z = x**2 +3*x*y +y**2 34 #畫線框架圖 35 ax.plot_wireframe(x,y,z,rstride=2,cstride=2,color='k',alpha=0.8,linewidth=0.5) 36 37 #等高線 contour 是登高的意思 38 ax.contourf(x, y, z, zdir='z', offset=-40, cmap='Blues', alpha=0.7) 39 ax.contourf(x, y, z, zdir='x', offset=-6, cmap='Blues', alpha=0.7) 40 ax.contourf(x, y, z, zdir='y', offset=6, cmap='Blues', alpha=0.7) 41 42 ax.scatter(1, 2, 11, s=20, c='k') 43 # 曲面上的點(1,2,11) 44 45 def fxz(x): 46 return 2 ** x + 6 47 48 49 xn1 = np.linspace(1, 2, num=20) 50 yn1 = np.ones_like(xn1) * 2 51 zn1 = fxz(xn1) 52 ax.plot(xn1, yn1, zn1, '-r') 53 54 55 # 將y看成常量,則y=2,也就是在y=2這個面上,xz組成的函數求導 56 def fyz(y): 57 return 2 ** y + 3 58 59 60 yn2 = np.linspace(2, 3, num=20) 61 xn2 = np.ones_like(xn1) * 1 62 zn2 = fyz(yn2) 63 ax.plot(xn2, yn2, zn2, '-b') 64 # 將x看成常量,則x=1,也就是在x=1這個面上,yz組成的函數求導 65 pass 66 plt.show()