2015-04-24 108 views
0

我正在犯一個語法錯誤,一些如何我的語法導致Python認爲我正在寫+ .log一些地方?
請看看代碼並讓我知道。 任何一個可以建議,可以代替用來解決這個算法AttributeError:'添加'對象沒有屬性'log'Python

import numpy as np 

import sympy as sp 

answer = 0 

x = sp.Symbol('x') 

y = sp.Symbol('y') 

W = sp.Symbol('W') 

R = sp.Symbol('R') 

a = sp.Symbol('a') 

n = sp.Symbol('n') 

m = sp.Symbol('m') 

O = sp.Symbol('O') 

''' 
answer = sp.solve(((((-1* (np.log(1+(x/R))))/(np.log(1+((10**6)/R))))+1)*(Os/((np.log(np.exp(1)+(x/a)**n))**m)))-W,x) 
''' 

answer = sp.solve(((((-1* (sp.log(1+(x/R))))/(sp.log(1+((10**6)/R))))+1)*(O/((sp.log(np.exp(1)+(x/a)**n))**m)))-W,x) 

print(answer) 

結果的函數: OLD

line 15, in <module> 
    answer = sp.solve(((((-1* (np.log(1+(x/R))))/(np.log(1+((10**6)/R))))+1)*(Os/((np.log(np.exp(1)+(x/a)**n))**m)))-W,x) 
AttributeError: 'Add' object has no attribute 'log' 

Process finished with exit code 1 

結果: 新

Continuum\Anaconda3\lib\site-packages\sympy\solvers\solvers.py", line 1414, in _solve 
    "\nNo algorithms are implemented to solve equation %s" % f) 
NotImplementedError: multiple generators [log((x/a)**n + 54365636569181/20000000000000)**m, log(1 + x/R)] 
No algorithms are implemented to solve equation O*(1 - log(1 + x/R)/log(1 + 1000000/R))*log((x/a)**n + 54365636569181/20000000000000)**(-m) - W 

Process finished with exit code 1 
+0

看來你對括號感到困惑。嘗試將它們分成多行,並分步執行第一步 – RafaelC

+0

我可以嘗試一下。 – SDS

+0

任何人都可以建議,一個可以用來解決這個算法的函數。 – SDS

回答

1

我想你應該使用sp.log而不是np.log。我運行你的代碼,但似乎這個方程太複雜了,沒有算法來解決它。

+0

我只是想解決x。你可以分享更多關於沒有算法正在實施來解決方程。 – SDS

+0

@SDS你想解決一個符號方程,所以你需要使用sympy給出的'log'函數。將代碼中的所有'np.log'更改爲'sp.log'。通常這可以工作,但對於你的等式,我得到一個錯誤'NotImplementedError:多個生成器[log((x/a)** n + 54365636569181/20000000000000)** m,log(1 + x/R)]'。通常這意味着解決方案不能用符號表示。請參閱http://docs.sympy.org/dev/tutorial/solvers.html – locoyou

+0

我不確定是否sp.log = ln或log10,因爲我想使用ln。 – SDS

相關問題