繁体   English   中英

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

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

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

我试图找到y = x和 function 无法解析的交集(图中有一个)。

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

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 方法

>>> 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,在您的示例中它也是一个根。

我不是数学家,所以也许你可以在这里解释一下,但我不明白你所说的“无法解析”到底是什么意思。

这就是 sympy 返回的内容:

from sympy import *

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

# [0.874217465798717]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM