python中用sympy对变量求偏导-爱代码爱编程
用sympy 求偏导
import numpy as np
import pandas as pd
import sympy as sy
theta, n, k = sy.symbols('theta, n, k')
z = theta+n+k
# print('z :{}'.format(z))
# result = z.subs({theta: 0, n: 1}) # 用数值分别对x、y进行替换
# print(result)
#
dx = sy.diff(z, theta) # 对x求偏导
# print(dx)
# result = dx.subs({theta: 0, n: 2, k: 1})
# print(result)
#
dy = sy.diff(z, n) # 对y求偏导
# print(dy)
# result = dy.subs({theta: 0, n: 2, k: 1})
# print(result)
dz = sy.diff(z, k) # 对y求偏导
print(dz)
theta_set = [0, 0.7854, 1.5708, 2.3561, 3.1415]
n_set = [0, 0.5, 1, 2, 3, 8]
k_set = [1, 2, 3, 10]
result = np.zeros([len(k_set), len(n_set), len(theta_set)])
for k1 in k_set:
for n1 in n_set:
for theta1 in theta_set:
# save = dz.subs({theta: theta1, n: n1, k: k1})
# save = dx.subs({theta: theta1, n: n1, k: k1})
save = dy.subs({theta: theta1, n: n1, k: k1})
result[k_set.index(k1)][n_set.index(n1)][theta_set.index(theta1)] = save
for i in range(len(k_set)):
df = pd.DataFrame(result[i])
df.to_csv('result.csv', mode='a')
# result = dz.subs({theta: 3.14, n: 1, k: 1})
# print(result)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/m0_38088084/article/details/109277746