如何在不使用 numpy.linspace() 的情况下在 Python 中创建线性函数

How to create linear function in Python without using numpy.linspace()

所以,我试图在 python 中创建一个线性函数,例如 y = x,而不使用 numpy.linspace()。在我的理解中 numpy.linspace() 给你一个不连续的数组。但是为了

我试图找到 y = x 和一个无法解析的函数的交集(如图中所示)。

这是我的代码 我不知道如何定义 x。有没有办法表达 y 有一个简单的连续函数?

import random as rd
import numpy as np

a = int(input('choose a :'))
eps = abs(float(input('choose epsilon :')))

b = 0
c = 10
x = ??????

y1 = x
y2 = a*(1 - np.exp(x))

z = abs(y2 - y1)
while z > eps :
    d = rd.uniform(b,c)
    c = d
    print(c)
print(y1 , y2 )

因为你的函数是可微分的,你可以使用 scipy.optimize 实现的 Newton-Raphson method:

>>> scipy.optimize.newton(lambda x: 1.5*(1-math.exp(-x))-x, 10)
0.8742174657987283

计算误差非常简单:

>>> def f(x): return 1.5*(1-math.exp(-x))
...
>>> x = scipy.optimize.newton(lambda x: f(x)-x, 10)
>>> error = f(x) - x
>>> x, error
(0.8742174657987283, -4.218847493575595e-15)

我有点武断地选择 x0=10 作为起点。此处需要注意确保该方法不会收敛到 x=0,在您的示例中它也是一个根。

我不是数学家所以也许你可以在这里解释一下,但我不明白你所说的 "unsolvable analytically".

到底是什么意思

这就是同情 returns:

from sympy import *

x = symbols('x')
a = 1.5
y1 = x
y2 = a*(1 - exp(-x))
print(solve(y1-y2))

# [0.874217465798717]

“Not solvable analytically”表示没有closed-form解。换句话说,你不能在纸上写下一个单一的答案,比如数字或方程式,然后把它圈起来,然后说“这就是我的答案”。对于某些数学问题,这样做是不可能的。相反,对于这类问题,我们可以通过 运行 模拟并获取值或解决方案的图表来近似解决方案。