用Python代替MATLAB进行科学计算(一)

用Python代替MATLAB进行科学计算(一)

本期带来的是,我们平时在运算过程中,遇到的求导,积分,解方程组等科学计算如何在Python中进行解决

首先我们需要有提前安装库sympy,安装的话也就是

pip install sympy

接下来就是直接上代码展示:

展示公式的输出

#!  conda env
# -*- coding:utf-8 -*-
# Time:2020/4/10 5:15 下午
# Author : nishizzma
# File : output.py

from sympy import pprint,Symbol,exp,sqrt
from sympy import init_printing

init_printing(use_unicode=True)

x = Symbol('x')

a = sqrt(2)
pprint(a)

print("-----------------")

c = (exp(x) ** 2)/2
pprint(c)
print(c)

简单运算

#!  conda env
# -*- coding:utf-8 -*-
# Time:2020/4/10 5:10 下午
# Author : nishizzma
# File : test_1.py

import sympy,math

#简单对有理数进行运算
r1 = sympy.Rational(1/10)
r2 = sympy.Rational(1/10)
r3 = sympy.Rational(1/10)

val = (1/10+1/10+1/10) * 3
print(val)

val2 = (r1 + r2+ r3) * 3
print(val2.evalf())

#求对数
sympy.log(sympy.E)

sympy.log(sympy.E**3)
#以10为底求对数
sympy.log(1000,10)

#求n次方根
sympy.sqrt(4)  #求平方根
sympy.root(8,3)

#求k次方
a = 2 ** 3
b = 16 ** (0.5)

#求阶乘
sympy.factorial(4)

#求三角函数
sympy.sin(sympy.pi)

#表示表达式的方法
x = sympy.Symbol('x')
fx = 2*x + 1

c = fx.evalf(subs={
     x:2})
print(c)

#支持多元表达
x,y = sympy.symbols('x y')
f = 2 * x + y

#以字典的形式传入多个变量的值
f.evalf(subs={
     x:1,y:2})
#如果只传入一个值,则输出原来的表达式
f.evalf(subs={
     x:1})

解方程组:

#!  conda env
# -*- coding:utf-8 -*-
# Time:2020/4/10 5:47 下午
# Author : nishizzma
# File : test_3.py
"""
解方程组
"""

import sympy
x = sympy.Symbol('x')

#解简单方程
#解 x - 1 = 0
sympy.solve(x-1,x)

#解方程 x^2 - 1 = 0
sympy.solve(x ** 2 - 1,x)
#在这种情况下,我们还可以将函数式赋给一个变量
f = x + 1
sympy.solve(f,x)

#解多元方程组
x,y = sympy.symbols('x y')
sympy.solve([[x+y-1,x-y-3],[x,y]])

#计算求和式,求和1-100,然后在*2
n = sympy.Symbol('n')
sympy.summation(2*n,(n,1,100))

#对于包含求和式子的方程进行求解
x = sympy.Symbol('x')
i = sympy.Symbol('i',integer=True)
f = sympy.summation(x,(i,1,5)) + 10 * x - 15
sympy.solve(f,x)

求解极限

#!  conda env
# -*- coding:utf-8 -*-
# Time:2020/4/10 6:02 下午
# Author : nishizzma
# File : test_4.py

"""
极限求解
"""
import  sympy
x = sympy.Symbol('x')
f1 = sympy.sin(x)/x

#当x->0时的结果
sympy.limit(f1,x,0)

f2 = (1+x)**(1/x)
sympy.limit(f2,x,0)

f3 = (1+1/x)**x
sympy.limit(f3,x,float('inf'))

求导,求定积分:

#!  conda env
# -*- coding:utf-8 -*-
# Time:2020/4/10 6:47 下午
# Author : nishizzma
# File : test_5.py

"""
求导,求定积分
"""

import sympy

#求导
x = sympy.Symbol('x')
f = x**2 + 2*x + 1
sympy.diff(f,x)

#求定积分,对2x在0-1上进行求导
f = 2 * x
sympy.integrate(f,(x,0,1))

#计算多重积分
t,x = sympy.symbols('t x')
f = 2 * t
g = sympy.integrate(f,(t,0,x))
sympy.integrate(g,(x,0,3))

#求解不定积分
x = sympy.Symbol('x')
f = sympy.E ** x + 2*x
sympy.integrate(f,x)

你可能感兴趣的:(网络数据挖掘&&科学数据处理)