init
This commit is contained in:
commit
7177a07538
5 files changed
+159
No files matched your search
Binary file not shown.
+29
@@ -0,0 +1,29 @@
|
||||
import http.client
|
||||
|
||||
import json
|
||||
|
||||
|
||||
def get_data(raw_data=[100, 101]):
|
||||
conn = http.client.HTTPSConnection("www.zhishuyao.com")
|
||||
payload = "type=jyzs"
|
||||
|
||||
for item in raw_data:
|
||||
payload += f"&val[]={item}"
|
||||
|
||||
headers = {
|
||||
"authority": "www.zhishuyao.com",
|
||||
"content-type": "application/x-www-form-urlencoded",
|
||||
"origin": "https://www.zhishuyao.com",
|
||||
}
|
||||
conn.request("POST", "/decode.php", payload, headers)
|
||||
res = conn.getresponse()
|
||||
data = res.read()
|
||||
return json.loads(data.decode("utf-8"))["data"]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raw_data = list(range(0, 1001, 20))
|
||||
|
||||
res = get_data(raw_data)
|
||||
for raw, new in zip(raw_data, res):
|
||||
print(raw, new)
|
||||
@@ -0,0 +1,75 @@
|
||||
import numpy as np
|
||||
from scipy.optimize import curve_fit
|
||||
|
||||
|
||||
# Define the function to fit
|
||||
def func(x, a, b, c):
|
||||
return a * np.exp(-b * x) + c
|
||||
|
||||
|
||||
# Load the data
|
||||
data = np.array(
|
||||
[
|
||||
[0, 0],
|
||||
[20, 0],
|
||||
[40, 1],
|
||||
[60, 2],
|
||||
[80, 3],
|
||||
[100, 5],
|
||||
[120, 6],
|
||||
[140, 7],
|
||||
[160, 9],
|
||||
[180, 11],
|
||||
[200, 13],
|
||||
[220, 15],
|
||||
[240, 17],
|
||||
[260, 19],
|
||||
[280, 21],
|
||||
[300, 23],
|
||||
[320, 26],
|
||||
[340, 28],
|
||||
[360, 31],
|
||||
[380, 34],
|
||||
[400, 36],
|
||||
[420, 39],
|
||||
[440, 42],
|
||||
[460, 45],
|
||||
[480, 48],
|
||||
[500, 52],
|
||||
[520, 55],
|
||||
[540, 58],
|
||||
[560, 62],
|
||||
[580, 65],
|
||||
[600, 69],
|
||||
[620, 72],
|
||||
[640, 76],
|
||||
[660, 80],
|
||||
[680, 84],
|
||||
[700, 88],
|
||||
[720, 92],
|
||||
[740, 96],
|
||||
[760, 100],
|
||||
[780, 104],
|
||||
[800, 108],
|
||||
[820, 112],
|
||||
[840, 117],
|
||||
[860, 121],
|
||||
[880, 126],
|
||||
[900, 130],
|
||||
[920, 135],
|
||||
[940, 140],
|
||||
[960, 145],
|
||||
[980, 150],
|
||||
[1000, 154],
|
||||
]
|
||||
)
|
||||
|
||||
# Separate the data into x and y arrays
|
||||
xdata = data[:, 0]
|
||||
ydata = data[:, 1]
|
||||
|
||||
# Fit the curve to the data
|
||||
popt, pcov = curve_fit(func, xdata, ydata)
|
||||
|
||||
# Print the fitted parameters
|
||||
print(popt)
|
||||
@@ -0,0 +1,18 @@
|
||||
import numpy as np
|
||||
from get_data import get_data
|
||||
|
||||
parm_1000 = [-61.4400001, 1402438300.0, 61.4400001]
|
||||
|
||||
|
||||
def reduct(x, parm):
|
||||
a, b, c = parm
|
||||
return a * np.exp(-b * x) + c
|
||||
|
||||
|
||||
def check_data(data):
|
||||
fit_data = reduct(data, parm_1000)
|
||||
real_data = get_data([data])
|
||||
print(f"拟合数据: {fit_data}, 实际数据: {real_data}, 误差: {fit_data - real_data}")
|
||||
|
||||
|
||||
check_data(1000)
|
||||
@@ -0,0 +1,37 @@
|
||||
import math
|
||||
|
||||
|
||||
def calculate_y(x):
|
||||
y = (10 * math.log(x + 1) + 30) * math.sqrt(x)
|
||||
return y
|
||||
|
||||
|
||||
def calculate_x(y):
|
||||
# Define the function to find the root of
|
||||
def f(x):
|
||||
return (10 * math.log(x + 1) + 30) * math.sqrt(x) - y
|
||||
|
||||
# Set the initial bounds for the bisection method
|
||||
a = 0
|
||||
b = 1e6
|
||||
|
||||
# Set the tolerance for the root-finding algorithm
|
||||
tol = 1e-6
|
||||
|
||||
# Perform the bisection method to find the root
|
||||
while (b - a) / 2 > tol:
|
||||
c = (a + b) / 2
|
||||
if f(c) == 0:
|
||||
return c
|
||||
elif f(a) * f(c) < 0:
|
||||
b = c
|
||||
else:
|
||||
a = c
|
||||
|
||||
return (a + b) / 2
|
||||
|
||||
|
||||
# Example usage
|
||||
y = 10000000
|
||||
x = calculate_y(y)
|
||||
print(x)
|
||||
Reference in new issue
Block a user