Python 数学应用

一、拟合多项式

1.多项式拟合范例:

安装依赖

pip install numpy


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])
z1 = np.polyfit(x, y, 3) # 用3次多项式拟合
p1 = np.poly1d(z1)
print(p1) # 在屏幕上打印拟合多项式
yvals=p1(x) # 也可以使用yvals=np.polyval(z1,x)
plot1=plt.plot(x, y, '*',label='original values')
plot2=plt.plot(x, yvals, 'r',label='polyfit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4) # 指定legend的位置,读者可以自己help它的用法
plt.title('polyfitting')
plt.show()
plt.savefig('p1.png')

2.指定函数拟合

# 使用非线性最小二乘法拟合
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
# 用指数形式来拟合
x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])
def func(x,a,b):
    return a*np.exp(b/x)
popt, pcov = curve_fit(func, x, y)
a=popt[0] # popt里面是拟合系数,读者可以自己help其用法
b=popt[1]
yvals=func(x,a,b)
plot1=plt.plot(x, y, '*',label='original values')
plot2=plt.plot(x, yvals, 'r',label='curve_fit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4) # 指定legend的位置,读者可以自己help它的用法
plt.title('curve_fit')
plt.show()
plt.savefig('p2.png')


二、多项式求导

安装依赖

pip install sympy
from sympy import *
x = symbols("x")  # 符号x,自变量
y = -pow(10,-11)*pow(x,6) + pow(10,-8)*pow(x,5) - 4*pow(10,-6)*pow(x,4) + 0.0006*pow(x,3) - 0.0428*pow(x,2) + 1.7561*x + 16.528 #公式

dify = diff(y,x) #求导
print(dify)  #打印导数

#给定x值,求对应导数的值

for i in range(0,305,5):
    print(dify).subs('x',i)


三、解方程

import sympy   # 引入解方程的专业模块sympy
x = sympy.symbols("x")   # 申明未知数"x"
a = sympy.solve([x+(1/5)*x-240],[x])   # 写入需要解的方程体
print(a)  # 打印出结果
import sympy   # 引入解方程的专业模块sympy
 
x,y = sympy.symbols("x y")   # 申明未知数"x"和"y"
a = sympy.solve([3*x -2*y-3,x+2*y-5],[x,y])   # 写入需要解的方程组
print(a)  # 打印出结果



标签: 图形图像 线性代数 Python
相关文章
评论留言
发布留言