2013-08-16 161 views
5

Vì vậy, tôi đã cố gắng một ví dụ trực tiếp từ tài liệu sympy và tôi nhận được một lỗi lạ. Tôi đang sử dụng python 3.2 với sympy 0.7.3. Tôi đã làm việc trong máy tính xách tay ipython, mặc dù tôi không nghĩ rằng nên tạo sự khác biệt. Lỗi là bất cứ khi nào tôi tạo biểu tượng "x" và cố gắng tích hợp math.cos (x), tôi nhận được thông báo lỗi "không thể chuyển đổi biểu thức thành nổi".lỗi với python sympy tính toán tích phân cho hàm cosin

Dưới đây là ví dụ về mã. Điều này được lấy từ sympy documentation.

import sympy 
import math 
x = sympy.Symbol('x') 
sympy.integrate(x**2 * math.exp(x) * math.cos(x), x) 

Các thông báo lỗi mà kết quả là:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-123-84e55454fb60> in <module>() 
----> 1 sympy.integrate(x**2 * math.exp(x) * math.cos(x), x) 

/usr/local/lib/python3.2/dist-packages/sympy/core/expr.py in __float__(self) 
242   if result.is_number and result.as_real_imag()[1]: 
243    raise TypeError("can't convert complex to float") 
--> 244   raise TypeError("can't convert expression to float") 
245 
246  def __complex__(self): 

TypeError: can't convert expression to float 

Bất kỳ đề xuất sẽ được đánh giá cao.

+1

Thử sử dụng 'sympy.exp' và' sympy.cos' thay vì 'math.exp' và' math.cos'. –

Trả lời

7

Bạn không thể trộn lẫn các biểu thức toán học mang tính biểu tượng được tạo ra bởi sympy thư viện với các chức năng bình thường mà chỉ tính toán một giá trị (như những người từ thư viện math. Nếu bạn đang tạo một biểu hiện mang tính biểu tượng, bạn luôn nên sử dụng sympy chức năng (sympy.exp, sympy.cos, sympy.log, vv):

x = sympy.Symbol('x') 
sympy.integrate(x**2 * sympy.exp(x) * sympy.cos(x), x) 

nhà khai thác như *, +, - ... đang quá tải bởi các đối tượng trong thư viện sympy để bạn có thể sử dụng chúng trong ExpressTôi của bạn nhưng bạn không thể sử dụng các hàm bình thường để tính toán trực tiếp các giá trị.

+0

Ahh, tuyệt vời. Cảm ơn, đã giải quyết được vấn đề. – krishnab