python实现施瓦茨-克里斯托费尔【全网首个】根据用户输入推测函数

上代码:

from sympy import symbols, integrate, simplify
from sympy.plotting import plot

n = int(input("n:"))
if n < 2:
    print("Error: Must n >= 2")
i = 0
a = []
aef = []
A = []
x, y = symbols('x y')
z, w = symbols('z w')

while i < n:
    Ai = input(f"A{i}:")
    A.append(float(Ai))
    ai = input(f"a{i}:")
    a.append(float(ai))
    if i!= 0 and i!= n - 1:
        aef.append(0.5)
    else:
        aef.append(0)
    if i!= 0:
        w = w*((z - a[i])**(aef[i] - 1))
    else:
        w = ((z - a[0])**(aef[0] - 1))
    print(f"w at step {i}: {w}")
    i += 1

try:
    w = integrate(w, z)
    print(f"Integrated w: {w}")
except Exception as e:
    print(f"Error during integration: {e}")

M = w.subs(z, A[0]) - w.subs(z, A[1])
M1 = a[0] * a[1]
M2 = w.subs(z, A[0])*a[1] - w.subs(z, A[1])*a[0]
c1 = M1 / M
c2 = M2 / M

w = simplify(c1*integrate(w, z) + c2)

print("\n", w)

值得一提的是目前只能计算实数的,不然阿尔法太难求了

其中36到40行是用线性代数解二元方程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值