高等数学以及Python 实现

一:第一章:

基本初等函数:

 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
View Code

 

数列 和函数的极限:

 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
View Code

二:第二章:

导数与微分:

 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
View Code

 

泰勒公式:

高等数学以及Python 实现_第1张图片

 

高等数学以及Python 实现_第2张图片

 

导数与微分的应用:

单调性和凸凹性

  单调性判断:f'(x) >0 增  反之减

  凸凹形 :f''(x) >0 凹 反之 凸

方程的近似解

  二分法:
高等数学以及Python 实现_第3张图片

 

高等数学以及Python 实现_第4张图片

 

   切线法: 

高等数学以及Python 实现_第5张图片

 

 

高等数学以及Python 实现_第6张图片

 

高等数学以及Python 实现_第7张图片

 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()
导数的应用_二分法和切线法 求近似解

 

三:第三章:不定积分,定积分

不定积分:

 

不定积分的方法:

换元法

分部积分法

 

小结:

 

 

定积分:

定积分的解法:

牛顿-莱布尼茨公式:

高等数学以及Python 实现_第8张图片

 

 

换元法与分部积分法:

高等数学以及Python 实现_第9张图片

 

高等数学以及Python 实现_第10张图片

 

定积分的应用:

1,计算图形的面积

高等数学以及Python 实现_第11张图片

 

 

2,计算体积:

高等数学以及Python 实现_第12张图片

 

 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()
定级分的求解_求解图形的面积

 

四:第四章:多元函数与重积分

多元函数:

 

偏导数:

高等数学以及Python 实现_第13张图片

 

全微分:

高等数学以及Python 实现_第14张图片

 

 

 

 

重积分:

二重积分:

高等数学以及Python 实现_第15张图片

 

二重积分的求解:

1,直角坐标系

高等数学以及Python 实现_第16张图片

 

 

2,极坐标系

高等数学以及Python 实现_第17张图片

 

 

 

 

 

 

三重积分及解法:

高等数学以及Python 实现_第18张图片

 

 

高等数学以及Python 实现_第19张图片

 

高等数学以及Python 实现_第20张图片

 

高等数学以及Python 实现_第21张图片

 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()
使用Matplotlib 进行3d绘图

 

 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()
View Code
 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()
总的代码

 

你可能感兴趣的:(高等数学以及Python 实现)