利用自定义积分公式,目前可以求出所有1元方程和1元积分的近似值

import math, time

def F(x, k):

return 1 + x**k + x

def o(eq, a, b, d=1e-1, max_k=50):

exec(f"g=lambda x:{eq}", globals())

r, s = 0.0, (a, b)

while s:

n = \[\]

for x0, x1 in s:

dx = x1 - x0

if dx < d:

x_mid = (x0 + x1) / 2

ws, vs = 0.0, 0.0

for k in range(1, max_k+1):

fv = F(x_mid/(2*math.pi), k)

w = 1/(fv + 1e-12)

ws += w

vs += w * g(x_mid)

val = vs/ws if ws>0 else g(x_mid)

r += dx * val

continue

u, v, m_val = g(x0), g(x1), g((x0+x1)/2)

if abs(u - v) < 1e-8 and abs(m_val - u) < 1e-8:

r += dx * m_val

continue

h = dx / 10

for i in range(10):

n.append((x0 + i*h, x0 + (i+1)*h))

s = n

return r

def so(eq, target, a, b, p, tol=1e-10, max_iter=20):

res_eq = f"abs({eq}-{target})"

x_best = (a + b)/2

min_res = o(res_eq, a, b, d=1e-1)

for _ in range(max_iter):

mid = (a + b)/2

res_a = o(res_eq, a, mid, d=1e-1)

res_b = o(res_eq, mid, b, d=1e-1)

if res_a < res_b:

b, min_res = mid, res_a

else:

a, min_res = mid, res_b

x_best = (a + b)/2

ws, xs = 0.0, 0.0

for k in range(1, 101):

fv = F(x_best/p, k)

w = 1/(fv + 1e-12)

ws += w

xs += w * x_best

x_best = xs/ws if ws>0 else x_best

if b - a < tol:

break

return x_best

test_eq = "200*math.sin(x)**100"

print("积分功能测试")

t0 = time.time()

integral_res = o(test_eq, 1, 200)

t1 = time.time() - t0

print(f"∫1,200({test_eq})dx = {integral_res:.12f}")

print(f"积分耗时: {t1:.6f}秒\n")

test_cases = (1.0, 0.1), (2.0, 0.5), (3.0, 0.8), (0.5, 0.3), (5.0, 0.9)

print(f"{'M':>3} {'e':>6} {'积分法求出的E':>12}")

for M, e in test_cases:

积分法求解:方程为 E - e*sin(E) = M,变量E∈0,2π

eq = f"x - {e}*math.sin(x)"

tf = time.time()

E_f = so(eq, M, 0, 2*math.pi, 10, tol=1e-10)

tf = time.time() - tf

print(f"{M:6.2f} {e:6.2f} {E_f:12.8f}")

print(f"自创积分法时间:{tf}")

相关推荐
Sirius.z7 小时前
第R6周:LSTM实现糖尿病探索与预测
python
名字还没想好☜7 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王8 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
Dxy12393102169 小时前
Python 如何使用 MySQL 的事务
python·mysql
今儿敲了吗13 小时前
Python ——第三方包
笔记·python
麒麟水手13 小时前
国产银河麒麟系统开发实录:跑通Streamlit,我踩过的6个坑
python
麒麟水手13 小时前
麒麟系统部署检查清单:上线前30分钟,逐项自查这4类问题
python
用户03321266636714 小时前
使用 Python 在 PDF 中添加或删除数字签名
python
代码方舟15 小时前
零信任架构实战:基于天远柠檬查出险-登记证API构建自动化车辆履约评估网关
人工智能·python·架构·自动化
估值探索者15 小时前
【Python实时盯盘与预警 #08】成交额突然放大2倍?Python窗口比较抓异动
java·开发语言·python