← 返回首页
微积分数学基础(四)
发表时间:2024-04-30 06:21:04
微积分数学基础(四)

微积分部分数字知识的python代码实现

1.Python计算数学极限

在Python中计算数学极限,你可以使用SymPy库,这是一个用于符号计算的库。

以下是如何使用SymPy来计算极限的一个简单例子:

首先安装SymPy库(如果你还没有安装的话)。你可以使用pip安装。

pip install sympy -i https://pypi.tuna.tsinghua.edu.cn/simple

使用SymPy来计算极限的基本代码:

import pandas as pd
import numpy as np
from sympy import Symbol, Limit, S

# 定义一个符号变量
x = Symbol('x')

# 定义函数表达式
expression = 1 / x

# 计算极限 lim(x->0) 1/x
lim = Limit(expression, x, 0)

# 输出计算结果
print("Limit is:", lim.doit())

运行结果:

Limit is: oo
import pandas as pd
import numpy as np
import sympy as sy
from sympy import Symbol, Limit, S,sin,pi

# 定义一个符号变量
x = Symbol('x')

# 定义函数表达式
expression = sin(x) / x

# 计算极限 lim(x->0) 1/x
lim = Limit(expression, x, 0)

# 输出计算结果
print("x->0,Limit is:", lim.doit())

# 计算极限 lim(x->∞) 1/x
lim = Limit(expression, x, sy.oo)

# 输出计算结果
print("x->oo,Limit is:", lim.doit())

运行结果:

x->0,Limit is: 1
x->oo,Limit is: 0

2.python计算导数

在Python中使用SymPy库计算导数是非常简单的。

下面是一个求导的简单示例代码:

from sympy import Symbol, diff
#python计算导数
# 定义一个符号变量
x = Symbol('x')

# 定义函数表达式,例如 x^2 + 2*x + 1
expression = x**2 + 2*x + 1

# 对表达式按x求导
derivative = diff(expression, x)

# 输出求导结果
print("Derivative of the expression is:", derivative)

运行结果:

Derivative of the expression is: 2*x + 2

复合函数求导:

from sympy import *
import sympy as sp

# 定义符号变量
x = sp.symbols('x')

f = (2 * x ** 2 + 3) ** 4
y = diff(f, x)
print(y)

运行结果:

16*x*(2*x**2 + 3)**3

高阶导数计算。

import sympy as sp

# 定义符号变量x
x = sp.symbols('x')

# 定义函数f(x),例如f(x)=x^3 + 2x^2 + 3x + 4
f = x**3 + 2*x**2 + 3*x + 4

# 求一阶导数
f_prime = sp.diff(f, x)

#或者
#f_prime = sp.diff(f, x ,1)

# 求二阶导数
f_double_prime = sp.diff(f_prime, x)
# 或者
# f_double_prime = sp.diff(f, x, 2)

# 打印结果
print("一阶导数:", f_prime)
print("二阶导数:", f_double_prime)

运行结果:

一阶导数: 3*x**2 + 4*x + 3
二阶导数: 6*x + 4

多元函数的导数计算偏导数。

import sympy as sp

# 定义符号变量
x, y = sp.symbols('x y')

# 定义函数 f(x, y)
f = x**2*y + 3*x*y**2 + 4*x + 5*y

# 求函数 f(x, y) 关于 x 的偏导数
df_dx = sp.diff(f, x)

# 求函数 f(x, y) 关于 y 的偏导数
df_dy = sp.diff(f, y)

# 输出结果
print("函数 f(x, y) 关于 x 的偏导数为:")
sp.pprint(df_dx)

print("函数 f(x, y) 关于 y 的偏导数为:")
sp.pprint(df_dy)

运行结果:

函数 f(x, y) 关于 x 的偏导数为:
           2    
2⋅x⋅y + 3⋅y  + 4
函数 f(x, y) 关于 y 的偏导数为:
 2            
x  + 6⋅x⋅y + 5

3.python计算梯度

使用NumPy手动计算:

假设我们有函数f(x,y) = x^2 + y^2,我们可以手动计算其梯度。

import numpy as np

# 定义函数
def f(x, y):
    return x**2 + y**2

# 计算梯度
def gradient_f(x, y):
    grad_x = 2*x
    grad_y = 2*y
    return np.array([grad_x, grad_y])

# 测试点
x = 3
y = 4

# 计算梯度
grad = gradient_f(x, y)
print("梯度为:", grad)

使用SymPy符号计算:

from sympy import symbols, diff

# 定义符号变量
x, y = symbols('x y')

# 定义函数
f = x**2 + y**2

# 计算梯度
grad_x = diff(f, x)
grad_y = diff(f, y)

# 打印梯度
print("梯度为:")
print("∂f/∂x =", grad_x)
print("∂f/∂y =", grad_y)

# 计算特定点的梯度值
x_val = 3
y_val = 4
grad_x_val = grad_x.subs({x: x_val, y: y_val})
grad_y_val = grad_y.subs({x: x_val, y: y_val})
print("在点({},{})处的梯度为:".format(x_val, y_val))
print("∂f/∂x =", grad_x_val)
print("∂f/∂y =", grad_y_val)

运行结果:

梯度为:
∂f/∂x = 2*x
∂f/∂y = 2*y
在点(3,4)处的梯度为:
∂f/∂x = 6
∂f/∂y = 8

4.python计算定积分

在Python中使用SymPy库来计算定积分也是非常简单的。以下是一个计算定积分的例子:

from sympy import Symbol, integrate, sin, pi

# 定义一个符号变量
x = Symbol('x')

# 定义函数表达式,例如 sin(x)
expression = sin(x)

# 计算从0到pi的定积分
integral_result = integrate(expression, (x, 0, pi))

# 输出积分结果
print("The definite integral of sin(x) from 0 to pi is:", integral_result)

运行结果:

The definite integral of sin(x) from 0 to pi is: 2

如下图,实线部分就是 -cos(x) 的函数曲线。

上面的定积分求解就是对应 -cos(x) 在 π 处的值减去 -cos(x) 在 0 处的值,结果为2 。

5.python计算不定积分

计算不定积分也可以方便地使用Python的SymPy库来完成。这里是计算不定积分的一个示例:

from sympy import Symbol, integrate

# 定义一个符号变量
x = Symbol('x')

# 定义函数表达式,例如 x^2
expression = x**2

# 计算不定积分
indefinite_integral = integrate(expression, x)

# 输出不定积分结果
print("The indefinite integral of x^2 with respect to x is:", indefinite_integral)

运行结果:

The indefinite integral of x^2 with respect to x is: x**3/3

我们计算了函数x的平方关于x的不定积分。输出结果将是一个关于x的表达式,通常会包含一个常数项(常数C),但在SymPy的输出中常常省略这个常数C。

6.python一元方程求解

使用SymPy库解一元方程是非常简单的,示例如下:

from sympy import symbols, Eq, solve

#python一元方程求解
# 定义一个符号变量
x = symbols('x')

# 定义一个方程,例如 x^2 - 4 = 0
equation = Eq(x**2 - 4, 0)

# 求解方程
solutions = solve(equation, x)

# 输出解
print("Solutions of the equation x^2 - 4 = 0 are:", solutions)

运行结果:

Solutions of the equation x^2 - 4 = 0 are: [-2, 2]

7.泰勒展开

泰勒展开是一种将函数展开为无穷级数的方法。在Python中,可以使用sympy库来实现泰勒展开。以下是一个具体的例子,我们可以将f(x) = sin(x) 在x=0 处泰勒展开。

import sympy as sp

# 定义符号变量x
x = sp.symbols('x')

# 定义函数f(x),这里以sin(x)为例
f = sp.sin(x)

# 在x=0处进行泰勒展开,展开到第6项(即x的5次幂项)
taylor_expansion = sp.series(f, x, 0, 6).removeO()

# 打印泰勒展开的结果
print("泰勒展开结果:", taylor_expansion)

运行结果:

泰勒展开结果: x**5/120 - x**3/6 + x