python指数函数求导 python怎么求指数

帮我发一张函数的求导公式和特殊函数的求导公式,谢谢!就业市场上python指数函数求导,机器学习工程师总是受到质疑python指数函数求导,人们不相信他们数学功底深厚 。事实上,所有机器学习算法python指数函数求导的本质都是数学问题,无论是支持向量机、主成分分析还是神经网络最终都归结为对偶优化、谱分解筛选和连续非线性函数组合等数学问题 。只有彻底理解数学,才能正真掌握这些机器学习算法 。
Python中的各种数据库能帮助人们利用高级算法来完成一些简单步骤 。例如包含了K近邻算法、K均值、决策树等算法的机器学习算法库Scikit-learn,或者Keras,都可以帮助人们构建神经网络架构,而不必了解卷积神经网络CNNs或是循环神经网络RNNs背后的细节 。
然而 , 想要成为一名优秀的机器学习工程师需要的远不止这些 。在面试时,面试官通常会问及如何从零开始实现K近邻算法、决策树,又或者如何导出线性回归、softmax反向传播方程的矩阵闭式解等问题 。
回顾一些微积分的基本概念助你准备面试,如一元和多元函数的导数、梯度、雅可比矩阵和黑塞矩阵 。同时,本文还能为你深入研究机器学习、尤其是神经网络背后的数学运算打下良好的基础 。这些概念将通过5个导数公式来展示,绝对是面试必备干货 。
导数1:复合指数函数
指数函数非常基础常见,而且非常有用 。它是一个标准正函数 。在实数?中e?0,同时指数函数还有一个重要的性质,即e? = 1 。
另外,指数函数与对数函数互为反函数 。指数函数也是最容易求导的函数之一 , 因为指数函数的导数就是其本身 , 即(e?)’ = e? 。当指数与另一个函数组合形成一个复合函数时,复合函数的导数就变得更为复杂了 。在这种情况下,应遵循链式法则来求导,f(g(x))的导数等于f’(g(x))?g’(x) , 即:
运用链式法则可以计算出f(x)= e?2的导数 。先求g(x)=x2的导数:g(x)’=2x 。而指数函数的导数为其本身:(e?)’=e? 。将这两个导数相乘,就可以得到复合函数f(x)= e?2的导数:
这是个非常简单的例子,乍一看可能无关紧要,但它经常在面试开始前被面试官用来试探面试者的能力 。如果你已经很久没有温习过导数了,那么很难确保自己能够迅速应对这些简单问题 。虽然它不一定会让你得到这份工作,但如果你连这么一个基本问题都回答不上,那你肯定会失去这份工作 。
导数2:底数为变量的复变指数
复变指数函数是一个经典面试问题,尤其是在计量金融领域,它比科技公司招聘机器学习职位更为看重数学技能 。复变指数函数迫使面试者走出舒适区 。但实际上,这个问题最难的部分是如何找准正确的方向 。
当函数逼近一个指数函数时,首先最重要的是要意识到指数函数与对数函数互为反函数,其次,每个指数函数都可以转化为自然指数函数的形式:
在对复变指数函数f(x) = x?求导前,要先用一个简单的指数函数f(x) = 2?来证明复变函数的一种性质 。先用上述方程将2? 转化为exp(xln(2)),再用链式法则求导 。
现在回到原来的函数f(x)=x?,只要把它转化为f(x)=exp(x ln x) , 求导就变得相对简单,可能唯一困难的部分是链式法则求导这一步 。
注意这里是用乘积法则(uv)’=u’v uv’来求指数xln(x)的导数 。
通常情况下,面试官提问这个函数时不会告诉你函数定义域 。如果面试官没有给定函数定义域,他可能是想测试一下你的数学敏锐度 。这便是这个问题具有欺骗性的地方 。没有限定定义域,x?既可以为正也可以为负 。当x为负时,如(-0.9)^(-0.9),结果为复数-1.05–0.34i 。
用PYTHON求导怎么求#coding:utf-8
#一阶导
def fun1(X, WINDOW = 5):
result = []
for k in range(WINDOW, len(X)-WINDOW):
mid = (X[k WINDOW]-X[k-WINDOW])/(2*WINDOW)
result.append(mid)
return result
#二阶导
def fun2(X, WINDOW = 5):
result = []
for k in range(WINDOW, len(X)-WINDOW):
mid = (X[k WINDOW]-2*X[k] X[k-WINDOW])/(WINDOW*WINDOW)
result.append(mid)
return result
X = [1,2,3,4,5,6,7,8,9,10]
result1 = fun1(X, 3)
result2 = fun2(X, 2)
如上自己写,或者用numpy自带的多项式的n阶导函数 。
得到多项式的n阶导函数:多项式.deriv(m = n)
from numpy import *
X = [1,2,3,4,5,6,7,8,9,10]
result = X.deriv(m = n) #n是导数阶数
python3的sympyprint(“字符串”)python指数函数求导,5/2和5//2python指数函数求导的结果是不同python指数函数求导的5/2为2.5,5//2为2.
python2需要导入from_future_import division执行普通的除法 。
1/2和1//2的结果0.5和0.
%号为取模运算 。
乘方运算为2**3 , -2**3和-(2**3)是等价的 。
from sympy import*导入库
x,y,z=symbols('x y z'),定义变量
init_printing(use_unicode=True)设置打印方式 。
python的内部常量有pi,
函数simplify,simplify(sin(x)**2cos(x)**2)化简结果为1,
simplify((x**3x**2 - x - 1)/(x**22*x1))化简结果为x-1 。化简伽马函数 。simplify(gamma(x)/gamma(x - 2))得(x-2)(x-1) 。
expand((x1)**2)展开多项式 。
expand((x1)*(x - 2) - (x - 1)*x)
因式分解 。factor(x**2*z4*x*y*z4*y**2*z)得到z*(x2*y)**2
from_future_import division
x,y,z,t=symbols('x y z t')定义变量,
k, m, n = symbols('k m n', integer=True)定义三个整数变量 。
f, g, h = symbols('f g h', cls=Function)定义的类型为函数 。
factor_list(x**2*z4*x*y*z4*y**2*z)得到一个列表 , 表示因式的幂,(1, [(z, 1), (x2*y, 2)])
expand((cos(x)sin(x))**2)展开多项式 。
expr = x*yx - 32*x**2 - z*x**2x**3,collected_expr = collect(expr, x)将x合并 。将x元素按阶次整合 。
collected_expr.coeff(x, 2)直接取出变量collected_expr的x的二次幂的系数 。
cancel()is more efficient thanfactor().
cancel((x**22*x1)/(x**2x))
,expr = (x*y**2 - 2*x*y*zx*z**2y**2 - 2*y*zz**2)/(x**2 - 1) , cancel(expr)
expr = (4*x**321*x**210*x12)/(x**45*x**35*x**24*x) , apart(expr)
asin(1)
trigsimp(sin(x)**2cos(x)**2)三角函数表达式化简,
trigsimp(sin(x)**4 - 2*cos(x)**2*sin(x)**2cos(x)**4)
trigsimp(sin(x)*tan(x)/sec(x))
trigsimp(cosh(x)**2sinh(x)**2)双曲函数 。
三角函数展开 , expand_trig(sin(xy)),acos(x),cos(acos(x)),expand_trig(tan(2*x))
x, y = symbols('x y', positive=True)正数,a, b = symbols('a b', real=True)实数,z, t, c = symbols('z t c')定义变量的方法 。
sqrt(x) == x**Rational(1, 2)判断是否相等 。
powsimp(x**a*x**b)幂函数的乘法,不同幂的乘法 , 必须先定义a和b 。powsimp(x**a*y**a)相同幂的乘法 。
powsimp(t**c*z**c),注意,powsimp()refuses to do the simplification if it is not valid.
powsimp(t**c*z**c, force=True)这样的话就可以得到化简过的式子 。声明强制进行化简 。
(z*t)**2 , sqrt(x*y)
第一个展开expand_power_exp(x**(ab)),expand_power_base((x*y)**a)展开,
expand_power_base((z*t)**c, force=True)强制展开 。
powdenest((x**a)**b),powdenest((z**a)**b),powdenest((z**a)**b, force=True)
ln(x),x, y ,z= symbols('x y z', positive=True),n = symbols('n', real=True),
expand_log(log(x*y))展开为log(x)log(y),但是python3没有 。这是因为需要将x定义为positive 。这是必须的 , 否则不会被展开 。expand_log(log(x/y)),expand_log(log(x**n))
As withpowsimp()andpowdenest(),expand_log()has aforceoption that can be used to ignore assumptions 。
expand_log(log(z**2), force=True),强制展开 。
logcombine(log(x)log(y)),logcombine(n*log(x)),logcombine(n*log(z), force=True) 。
factorial(n)阶乘,binomial(n, k)等于c(n,k) , gamma(z)伽马函数 。
hyper([1, 2], [3], z),
tan(x).rewrite(sin)得到用正弦表示的正切 。factorial(x).rewrite(gamma)用伽马函数重写阶乘 。
expand_func(gamma(x3))得到,x*(x1)*(x2)*gamma(x),
hyperexpand(hyper([1, 1], [2], z)),
combsimp(factorial(n)/factorial(n - 3))化简 , combsimp(binomial(n 1, k 1)/binomial(n, k))化简 。combsimp(gamma(x)*gamma(1 - x))
自定义函数
def list_to_frac(l):
expr = Integer(0)
for i in reversed(l[1:]):
expr= i
expr = 1/expr
return l[0]expr
list_to_frac([x, y, z])结果为x1/z,这个结果是错误的 。
syms = symbols('a0:5'),定义syms , 得到的结果为(a0, a1, a2, a3, a4) 。
这样也可以a0, a1, a2, a3, a4 = syms,可能是python指数函数求导我的操作错误。发现python和自动缩进有关,所以一定看好自动缩进的距离 。list_to_frac([1, 2, 3, 4])结果为43/30 。
使用cancel可以将生成的分式化简,frac = cancel(frac)化简为一个分数线的分式 。
(a0*a1*a2*a3*a4a0*a1*a2a0*a1*a4a0*a3*a4a0a2*a3*a4a2a4)/(a1*a2*a3*a4a1*a2a1*a4a3*a41)
a0, a1, a2, a3, a4 = syms定义a0到a4,frac = apart(frac, a0)可将a0提出来 。frac=1/(frac-a0)将a0去掉取倒 。frac = apart(frac, a1)提出a1 。
help("modules"),模块的含义,help("modules yourstr")模块中包含的字符串的意思 。 ,
help("topics"),import os.pathhelp("os.path") , help("list") , help("open")
# -*- coding: UTF-8 -*-声明之后就可以在ide中使用中文注释 。
定义
l = list(symbols('a0:5'))定义列表得到[a0, a1, a2, a3, a4]
fromsympyimport*
x,y,z=symbols('x y z')
init_printing(use_unicode=True)
diff(cos(x),x)求导 。diff(exp(x**2), x),diff(x**4, x, x, x)和diff(x**4, x, 3)等价 。
diff(expr, x, y, 2, z, 4)求出表达式的y的2阶,z的4阶,x的1阶导数 。和diff(expr, x, y, y, z, 4)等价 。expr.diff(x, y, y, z, 4)一步到位 。deriv = Derivative(expr, x, y, y, z, 4)求偏导 。但是不显示 。之后用deriv.doit()即可显示
integrate(cos(x), x)积分 。定积分integrate(exp(-x), (x, 0, oo))无穷大用2个oo表示 。integrate(exp(-x**2-y**2),(x,-oo,oo),(y,-oo,oo))二重积分 。print(expr)print的使用 。
expr = Integral(log(x)**2, x),expr.doit()积分得到x*log(x)**2 - 2*x*log(x)2*x 。
integ.doit()和integ = Integral((x**4x**2*exp(x) - x**2 - 2*x*exp(x) - 2*x -
exp(x))*exp(x)/((x - 1)**2*(x1)**2*(exp(x)1)), x)连用 。
limit(sin(x)/x,x,0),not-a-number表示nan算不出来,limit(expr, x, oo),,expr = Limit((cos(x) - 1)/x, x, 0),expr.doit()连用 。左右极限limit(1/x, x, 0, ' '),limit(1/x, x, 0, '-') 。。
Series Expansion级数展开 。expr = exp(sin(x)),expr.series(x, 0, 4)得到1xx**2/2O(x**4), , x*O(1)得到O(x), , expr.series(x, 0, 4).removeO()将无穷小移除 。exp(x-6).series(x,x0=6) , , 得到
-5(x - 6)**2/2(x - 6)**3/6(x - 6)**4/24(x - 6)**5/120xO((x - 6)**6, (x, 6))最高到5阶 。
f=Function('f')定义函数变量和h=Symbol('h')和d2fdx2=f(x).diff(x,2)求2阶, , as_finite_diff(dfdx)函数和as_finite_diff(d2fdx2,[-3*h,-h,2*h]), , x_list=[-3,1,2]和y_list=symbols('a b c')和apply_finite_diff(1,x_list,y_list,0) 。
Eq(x, y),,solveset(Eq(x**2, 1), x)解出来x,当二式相等 。和solveset(Eq(x**2 - 1, 0), x)等价 。solveset(x**2 - 1, x)
solveset(x**2 - x, x)解 , solveset(x - x, x, domain=S.Reals)解出来定义域 。solveset(exp(x), x)# No solution exists解出EmptySet()表示空集 。
等式形式linsolve([xyz - 1, xy2*z - 3 ], (x, y, z))和矩阵法linsolve(Matrix(([1, 1, 1, 1], [1, 1, 2, 3])), (x, y, z))得到{(-y - 1, y, 2)}
A*x = b 形式,M=Matrix(((1,1,1,1),(1,1,2,3))),system=A,b=M[:,:-1],M[:,-1],linsolve(system,x,y,z),,solveset(x**3 - 6*x**29*x, x)解多项式 。roots(x**3 - 6*x**29*x, x),得出 , {3: 2, 0: 1},有2个3的重根,1个0根 。solve([x*y - 1, x - 2], x, y)解出坐标 。
f, g = symbols('f g', cls=Function)函数的定义,解微分方程diffeq = Eq(f(x).diff(x, x) - 2*f(x).diff(x)f(x), sin(x))再和dsolve(diffeq,f(x))结合 。得到Eq(f(x), (C1C2*x)*exp(x)cos(x)/2),dsolve(f(x).diff(x)*(1 - sin(f(x))), f(x))解出来Eq(f(x)cos(f(x)), C1),,
Matrix([[1,-1],[3,4],[0,2]]) , ,Matrix([1, 2, 3])列表示 。M=Matrix([[1,2,3],[3,2,1]])
N=Matrix([0,1,1])
M*N符合矩阵的乘法 。M.shape显示矩阵的行列数 。
M.row(0)获取M的第0行 。M.col(-1)获取倒数第一列 。
M.col_del(0)删掉第1列 。M.row_del(1)删除第二行,序列是从0开始的 。M = M.row_insert(1, Matrix([[0, 4]]))插入第二行, , M = M.col_insert(0, Matrix([1, -2]))插入第一列 。
M N矩阵相加,M*N , 3*M,M**2,M**-1 , N**-1表示求逆 。M.T求转置 。
eye(3)单位 。zeros(2, 3),0矩阵,ones(3, 2)全1,diag(1, 2, 3)对角矩阵 。diag(-1, ones(2, 2), Matrix([5, 7, 5]))生成Matrix([
[-1, 0, 0, 0],
[ 0, 1, 1, 0],
[ 0, 1, 1, 0],
[ 0, 0, 0, 5],
[ 0, 0, 0, 7],
[ 0, 0, 0, 5]])矩阵 。
Matrix([[1, 0, 1], [2, -1, 3], [4, 3, 2]])
一行一行显示, , M.det()求行列式 。M.rref()矩阵化简 。得到结果为Matrix([
[1, 0,1,3],
[0, 1, 2/3, 1/3],
[0, 0,0,0]]), [0, 1]) 。
M = Matrix([[1, 2, 3, 0, 0], [4, 10, 0, 0, 1]]),M.nullspace()
Columnspace
M.columnspace()和M = Matrix([[1, 2, 3, 0, 0], [4, 10, 0, 0, 1]])
M = Matrix([[3, -2,4, -2], [5,3, -3, -2], [5, -2,2, -2], [5, -2, -3,3]])和M.eigenvals()得到{3: 1, -2: 1, 5: 2},,This means thatMhas eigenvalues -2, 3, and 5, and that the eigenvalues -2 and 3 have algebraic multiplicity 1 and that the eigenvalue 5 has algebraic multiplicity 2.
P, D = M.diagonalize(),P得Matrix([
[0, 1, 1,0],
[1, 1, 1, -1],
[1, 1, 1,0],
[1, 1, 0,1]]),,D为Matrix([
[-2, 0, 0, 0],
[ 0, 3, 0, 0],
[ 0, 0, 5, 0],
[ 0, 0, 0, 5]])
P*D*P**-1 == M返回为True 。lamda = symbols('lamda') 。
lamda = symbols('lamda')定义变量,p = M.charpoly(lamda)和factor(p)
expr = x**2x*y,srepr(expr)可以将表达式说明计算法则,"Add(Pow(Symbol('x'), Integer(2)), Mul(Symbol('x'), Symbol('y')))" 。。
x = symbols('x')和x = Symbol('x')是一样的 。srepr(x**2)得到"Pow(Symbol('x'), Integer(2))" 。Pow(x, 2)和Mul(x, y)得到x**2 。x*y
type(2)得到class 'int' , type(sympify(2))得到class 'sympy.core.numbers.Integer'..srepr(x*y)得到"Mul(Symbol('x'), Symbol('y'))" 。。。
Add(Pow(x, 2), Mul(x, y))得到"Add(Mul(Integer(-1), Pow(Symbol('x'), Integer(2))), Mul(Rational(1, 2), sin(Mul(Symbol('x'), Symbol('y')))), Pow(Symbol('y'), Integer(-1)))" 。。Pow函数为幂次 。
expr = Add(x, x) , expr.func 。。Integer(2).func , class 'sympy.core.numbers.Integer',,Integer(0).func和Integer(-1).func,,,expr = 3*y**2*x和expr.func得到class 'sympy.core.mul.Mul',,expr.args将表达式分解为得到(3, x, y**2),,expr.func(*expr.args)合并 。expr == expr.func(*expr.args)返回True 。expr.args[2]得到y**2,expr.args[1]得到x,expr.args[0]得到3. 。
expr.args[2].args得到(y, 2) 。。y.args得到空括号 。Integer(2).args得到空括号 。
from sympy import *
E**(I*pi) 1,可以看出,I和E,pi已将在sympy内已定义 。
x=Symbol('x'),,expand( E**(I*x) )不能展开,expand(exp(I*x),complex=True)可以展开,得到I*exp(-im(x))*sin(re(x))exp(-im(x))*cos(re(x)),,x=Symbol("x",real=True)将x定义为实数 。再展开expand(exp(I*x),complex=True)得到 。I*sin(x)cos(x) 。。
tmp = series(exp(I*x), x, 0, 10)和pprint(tmp)打印出来可读性好,print(tmp)可读性不好 。。pprint将公式用更好看的格式打印出来,,pprint( series( cos(x), x, 0, 10) )
integrate(x*sin(x), x),,定积分integrate(x*sin(x), (x, 0, 2*pi)) 。。
用双重积分求解球的体积 。
x, y, r = symbols('x,y,r')和2 * integrate(sqrt(r*r-x**2), (x, -r, r))计算球的体积 。计算不来,是因为sympy不知道r是大于0的 。r = symbols('r', positive=True)这样定义r即可 。circle_area=2*integrate(sqrt(r**2-x**2),(x,-r,r))得到 。circle_area=circle_area.subs(r,sqrt(r**2-x**2))将r替换 。
integrate(circle_area,(x,-r,r))再积分即可 。
expression.sub([(x,y),(y,x)])又换到原来的状况python指数函数求导了 。
expression.subs(x, y),,将算式中的x替换成y 。。
expression.subs({x:y,u:v}) : 使用字典进行多次替换 。。
expression.subs([(x,y),(u,v)]) : 使用列表进行多次替换 。。
python怎么表示指数?其中有两个非常漂亮的指数函数图就是用python的matplotlib画出来的 。这一期,我们将要介绍如何利用python绘制出如下指数函数 。
图 1 a1图 1 a1
我们知道当0,指数函数 是单调递减的,当a1 时,指数函数是单调递增的 。所以我们首先要定义出指数函数,将a值做不同初始化
import math
...
def exponential_func(x, a): #定义指数函数
y=math.pow(a, x)
return y
然后,利用numpy构造出自变量,利用上面定义的指数函数来计算出因变量
X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
有了自变量和因变量的一些散点,那么就可以模拟我们平时画函数操作——描点绘图,利用下面代码就可以实现
import math
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig=plt.figure(figsize=(6,4)) #新建画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中
def exponential_func(x, a=2): #定义指数函数
y=math.pow(a, x)
return y
X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
ax.plot(X, Y) #绘制指数函数
plt.show()
图 2 a=2
图2虽简单,但麻雀虽小五脏俱全,指数函数该有都有,接下来是如何让其看起来像我们在作图纸上面画的那么美观,这里重点介绍axisartist 坐标轴加工类,在的时候我们已经用过了 , 这里就不再多说了 。我们只需要在上面代码后面加上一些代码来将坐标轴好好打扮一番 。
图 3 a1 完整代码# -*- coding: utf-8 -*-图 3 a1 完整代码# -*- coding: utf-8 -*-"""Created on Sun Feb 16 10:19:23 2020project name:@author: 帅帅de三叔"""import mathimport numpy as npimport matplotlib.pyplot as pltimport mp
python求导用哪个库使用sympy.diff求导
from sympy import *init_printing(use_unicode=True)x = symbols("x")f = log(x)
一阶导数
diff(f, x)
二阶导数可以传入第三个参数,表示阶数
diff(f, x, 2)
希望可以帮助到你 。
如何用python求导数打开python运行环境 。
导入微分的模块包:from sympy import * 。
定义符号变量:x = symbols('x')
定义一个函数:f = x**9
diff = diff(f,x)求导
最后输入diff,即可显示其变量值了 。
众多python培训视频,尽在python学习网,欢迎在线学习!
【python指数函数求导 python怎么求指数】关于python指数函数求导和python怎么求指数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读