[英]How to obtain derivative from a polynomial equation?
我只是在做自己的方法來解決多項式問題的導數。 但是我提出了一個問題。 我無法從array_1 = '3*x**3 + 2*x**2 + 3*x + 5'
刪除或刪除'*x**2'
array_1 = '3*x**3 + 2*x**2 + 3*x + 5'
來獲得像這樣的數組; array = [3, 2, 3, 5]
array_1 = '3*x**3 + 2*x**2 + 3*x + 5'
def converter(array_1):
array_1 = array_1.split(' + ')
return str(array_1)
array = [5, 3, 2] # for testing ( I reversed order of an array.)
def derivative(array):
new_array = []
for x, elem in enumerate(array):
z = x*elem
new_array.append(z)
return new_array[1:]
result = derivative(array)
print(result)
print(converter(array_1))
您的array
只是一個字符串-只是一個字符序列而已。 因此,每個elem
都只是一個字符。 您需要做的是編寫一個解析器 。
對於這么簡單的事情,您可以僅使用字符串操作或正則表達式來解析所有內容,如果您知道如何使用它們或想閱讀有關它們的教程。 這是一個僅包含str
類的方法的示例:
s = '3*x**3 + 2*x**2 + 3*x + 5'
for term in s.split('+'):
coefficient, _, factor = term.partition('*')
variable, power = factor.partition('**')
do_something_with(coefficient, variable, power)
(當然,您可能希望在do_something_with
代碼中將coefficient
和power
轉換為數字,但這很容易;只需使用int
或float
。)
但這會有些脆弱。 它會處理您擁有的確切格式(只要do_something_with
可以處理額外的空格,並使用空字符串作為variable
和power
僅調用int
或float
可以處理前者,但不能處理后者)。 但是,如果嘗試使用3 * x**3 + 2 * x**2 + 3 * x + 5
嘗試,它將失敗。
更好的選擇是使用解析或解析器生成庫。 有一些學習曲線,但這是值得做的。 例如, pyparsing
是一種相當容易學習的方法,那里有一些很棒的教程,並且附帶了大量示例 ,我認為其中之一與您正在做的非常接近。
最后,您的格式碰巧是Python語法的子集。 您可以通過使用ast
(Python附帶的Python解析器)來利用它。 但是,這並不是一個適合新手的選項。
這是我所做的。 我知道它不起作用。 我會嘗試改善它。
array_1 = '3*x**3 + 2*x**2 + 3*x + 5'
def converter(array_1):
array_1 = array_1.split(' + ')
print(array_1)
new_array = []
for x in array_1:
new_array.append(x[-0])
return new_array
array = [5, 3, 2] # for testing
def derivative(array):
new_array = []
for x, elem in enumerate(array):
z = x*elem
new_array.append(z)
return new_array[1:]
result = derivative(array)
print(result)
print(converter(array_1))
輸出:
[3, 4]
['3*x**3', '2*x**2', '3*x', '5']
['3', '2', '3', '5']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.