2015-01-10 16 views
5

Tôi đang tìm cách để thực hiện thao tác cộng/trừ trong python 2 hoặc 3. Tôi không biết lệnh hoặc toán tử, và tôi không thể tìm thấy lệnh hoặc toán tử để thực hiện điều này.plus/minus operator cho python ±

Tôi có thiếu gì đó không?

+2

um, một cộng/trừ hoạt động là gì? Ghi nhớ: Trong toán học, một hàm ánh xạ một giá trị (hoặc một tập hợp các giá trị) từ định nghĩa của nó đến chính xác một giá trị ... –

+0

Tôi nghĩ bạn có thể muốn sympy cho việc này. – tox123

+0

@ MarcusMüller có nghĩa là khi bạn làm một căn bậc hai, nó có giá trị âm và dương cùng một lúc. – tox123

Trả lời

8

Một khả năng khác: uncertainties là một mô-đun để thực hiện các phép tính với dung sai lỗi, tức là

(2.1 +/- 0.05) + (0.6 +/- 0.05) # => (2.7 +/- 0.1) 

đó sẽ được viết như

from uncertainties import ufloat 

ufloat(2.1, 0.05) + ufloat(0.6, 0.05) 

Edit: Tôi đã nhận được một số kết quả lẻ, và sau một chút chơi với điều này tôi đã tìm ra lý do tại sao: lỗi được chỉ định không phải là một sự khoan dung (giới hạn phụ gia cứng như trong bản thiết kế kỹ thuật) nhưng giá trị độ lệch chuẩn - đó là lý do tại sao tính toán trên kết quả ion trong

ufloat(2.7, 0.07071) # not 0.1 as I expected! 
+0

Đây không phải là yêu cầu OP mà tôi nghĩ, đầu ra phải là '2.1+ 0,05 = 2,15/2,1-0,5 = 2,05 và 0,55/0,65' cách bạn nhận được kết quả đó? –

2

Tôi nghĩ bạn muốn điều đó cho một phương trình như thế này;

enter image description here

Vâng không có nhà điều hành cho rằng trừ khi bạn không sử dụng SymPy, chỉ có bạn có thể làm là làm cho một tuyên bố if và tìm thấy nhau nhân.

1

Hiện chưa có đối tượng nào trong SymPy (như bạn thấy, có một vấn đề gợi ý một trong số https://github.com/sympy/sympy/issues/5305). Mặc dù vậy không khó để mô phỏng. Chỉ cần tạo một Symbol, và trao đổi nó với +1 và -1 một cách riêng biệt ở cuối. Giống như

pm = Symbol(u'±') # The u is not needed in Python 3. I used ± just for pretty printing purposes. It has no special meaning. 
expr = 1 + pm*x # Or whatever 
# Do some stuff 
exprpos = expr.subs(pm, 1) 
exprneg = expr.subs(pm, -1) 

Bạn cũng có thể chỉ theo dõi hai phương trình ngay từ đầu.

3

Nếu bạn tình cờ sử dụng matplotlib, bạn có thể in các biểu thức toán học tương tự như biểu thức bằng Latex. Đối với +/- biểu tượng, bạn sẽ sử dụng:

print(r"value $\pm$ error") 

Trường hợp r chuyển đổi chuỗi sang một định dạng thô và $ -signs là xung quanh một phần của chuỗi đó là một phương trình toán học. Bất kỳ từ nào trong phần này sẽ có phông chữ khác và sẽ không có khoảng trắng giữa chúng trừ khi được ghi chú rõ ràng bằng mã đúng. Điều này có thể được tìm thấy trên trang relavent của matplotlib documentation.

Xin lỗi nếu điều này là quá thích hợp, nhưng tôi đã vấp phải câu hỏi này đang cố tìm câu trả lời sau đây.

0

Thay vì biểu thức tính toán như

s1 = sqrt((125.0 + 10.0*sqrt(19))/366.0) 
s2 = sqrt((125.0 - 10.0*sqrt(19))/366.0) 

bạn có thể sử dụng

pm = numpy.array([+1, -1]) 
s1, s2 = sqrt((125.0 + pm * 10.0*sqrt(19))/366.0)