Đại diện cho số Eisenstein không có phao


9

Tôi có một dự án mà tôi cần phải sử dụng các lĩnh vực bậc hai Cụ thể số có dạng vớimột,bQ.một+b-3một,bQ

Ví dụ ở đây là các số nguyên tố trong số nguyên Eisenstein :

Tôi không muốn sử dụng cây xô thơm. Tôi muốn viết kiểu dữ liệu của riêng tôi để kết hợp numpy. PARI sẽ hữu ích - nhưng nó không tương thích với Python.

  • Ngoài ra đối với các đối tượng này là khá rõ ràng
    (một1+b1-3)+(một2+b2-3)= =(một1+một2)+(b1+b2)-3
  • Nhân là một chút tinh tế hơn, nhưng chúng ta có thể cứng mã nó là tốt
    (một1+b1-3)×(một2+b2-3)= =(một1một2-3b1b2)+(một1b2+một2b1)-3
  • Kiểu dữ liệu của tôi cũng cần phải phân chia. Để đơn giản, hãy lấy đối ứng:
    1một+b-3= =một-b-3một2+3b2

Có cách nào ma trận dựa trên tự nhiên để mã hóa các hoạt động này, tương tự như cách có thể được viết về 2 × 2 ma trận?C2×2

(mộtb-bmột)

Có lẽ tôi sẽ chỉ mã hóa các hoạt động như ba lần với ba thao tác được nêu ở trên. Có ý kiến ​​gì không?

Câu trả lời:


10

một+b-3

(một-3bbmột)
(một1-3b1b1một1)(một2-3b2b2một2)= =(một1một2-3b1b2-3(một1b2+b1một2)một1b2+b1một2một1một2-3b1b2)

một2+3b2

Bạn đã cân nhắc sử dụng bộ ba , theo đó tôi giả sử bạn sử dụng số nguyên và mẫu số chung. Cách tiếp cận đó cũng có thể hữu ích trong biểu diễn ma trận.

một+bωω= =điểm kinh nghiệm(2πTôi3)ω2+ω+1= =0ω(0-11-1)ω1(1001)một+bω

(một-bbmột-b)
(một1+b1ω)(một2+b2ω)= =(một1một2-b1b2)+(một1b2+b1một2-b1b2)ω(một1-b1b1một1-b1)(một2-b2b2một2-b2)= =(một1một2-b1b2-(một1b2+b1một2-b1b2)một1b2+b1một2-b1b2một1một2-một1b2-b1một2)

2

1/zQ[-3]z

Bất kể bạn đại diện cho các thành phần của trường như thế nào, bạn có thể quá tải toán tử trong Python bằng "phương thức ma thuật". Xem thêm bài viết SO này về việc tạo kiểu số của riêng bạn trong Python.

Tôi không nghĩ sẽ có nhiều công việc mã hóa đại diện cho một phần tử của trường bậc hai như là ma trận 2 x 2 của số hữu tỷ hoặc là một cặp số hữu tỷ, vì các phép toán số học không phức tạp lắm. Tuy nhiên, tôi nghi ngờ cách tiếp cận thứ hai sẽ nhanh hơn.


1
Thật thú vị khi so sánh hiệu suất thực tế của numpyops ma trận -accelerated với các kiểu dữ liệu do người dùng định nghĩa. Không chắc chắn về những gì người chiến thắng sẽ được.
ccorn

Đúng vậy, numpy có rất nhiều tối ưu hóa mã hóa Cython + ở bên C để làm cho mọi thứ nhanh hơn. Bạn sẽ phải tự làm lại một số điều đó để đạt được hiệu quả tương tự. Tuy nhiên, chức năng nên đến trước và sau này người ta có thể lo lắng về tốc độ.
Daniel Shapero
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.