# coding: utf-8
from sympy import *
import numpy as np
from pynverse import inversefunc
# 定义我们的符号
m = symbols('m')
n = symbols('n')
e = symbols('e')
Q = symbols('Q')
K = symbols('K')
r = symbols('r')
# 定义等式,右边要等于0
eq = Q - ((m * (n + 1) * (1 + e**2) * (r**2))/(4*K))**(1/n+1)
# 求解(使用程序化简出r的计算公式)
result = solve(eq, r)
# 打印结果
print('r:', result)
# 将结果转化成latex格式
print(latex(result))
# [-2*sqrt(K*Q**(n/(n + 1))/(m*(e**2 + 1)*(n + 1))), 2*sqrt(K*Q**(n/(n + 1))/(m*(e**2 + 1)*(n + 1)))]
#把数据集转变成list列表,方便后面调用提取数据
result = []
file_list = open("data.txt", "r")
for line in file_list.readlines():
result.append(list(map(float, line.split(',')))) #result是全部数据(252×5)
def f1():
X = [] #建立空白列表,要在循环上面,不然进不了循环
K = []
Q = []
for item in result:
# print(item[0:2])
#Q = item[1]
#k = item[0]
y = 2 * sqrt(item[0] * item[1] ** (1.5 / (1.5 + 1)) / (0.04 * (0.9 ** 2 + 1) * (1.5 + 1)))
X.append([y])
K.append([item[0]]) #item是变量遍历全部数据(252×5)中每一行
Q.append([item[1]])
#print(y)
return X, Q, K #需要返回XQK的值,不然不会保存
X, Q, K = f1()
X = np.array(X).reshape(1,252) #强制把矩阵(252,1)转换为(1,252)形状
K = np.array(K).reshape(1,252)
Q = np.array(Q).reshape(1,252)
ANS = []
ANS = np.vstack((X, K))
ANS = np.vstack((ANS, Q)) #按照竖直方向把三个一行矩阵堆叠起来
print(ANS)
使用python进行公式的计算
最新推荐文章于 2024-03-18 00:30:00 发布