簡體   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