Kiểu dữ liệu phức
Một số ngôn ngữ lập trình cung cấp kiểu dữ liệu phức để lưu và thực hiện các phép toán số học số phức dưới dạng một kiểu dữ liệu có sẵn (cơ bản).
Trong một số môi trường lập trình, thuật ngữ kiểu dữ liệu phức có thể được dùng đồng nghĩa với kiểu dữ liệu phức hợp (trái với kiểu dữ liệu cơ bản).[1][2]
Số học số phức
[sửa | sửa mã nguồn]Một biến hoặc giá trị phức thường được biểu diễn dưới dạng một cặp số thực dấu phẩy động. Các ngôn ngữ hỗ trợ kiểu dữ liệu phức thường cung cấp các cú pháp đặc biệt để xây dựng các giá trị này, đồng thời mở rộng các phép toán số học cơ bản ('+', '−', '×', '÷') để áp dụng với số phức. Các phép toán này thường được biên dịch thành một chuỗi mã lệnh dấu phẩy động hoặc thành các lệnh gọi thư viện. Những ngôn ngữ này cũng có thể hỗ trợ các thao tác khác như định dạng, kiểm tra bằng nhau, v.v. Giống như trong toán học, những ngôn ngữ này thường biểu diễn một giá trị dấu phẩy động tương đương với một giá trị phức có phần ảo bằng không.
Ngôn ngữ hỗ trợ
[sửa | sửa mã nguồn]Phần này cần được mở rộng. Bạn có thể giúp bằng cách mở rộng nội dung của nó. |
- Kiểu COMPLEX trong FORTRAN.[3]
- Chuẩn C99 của ngôn ngữ lập trình C cung cấp các kiểu dữ liệu phức và các hàm toán học phức trong thư viện
<complex.h>
. - Thư viện chuẩn của C++ cũng cung cấp lớp mẫu
complex
và các hàm toán học phức trong tệp tiêu đề<complex>
. - Ngôn ngữ lập trình Go có sẵn các kiểu
complex64
(mỗi thành phần là một số float 32 bit) vàcomplex128
(mỗi thành phần là một số float 64 bit). - Mô đun Math::Complex trong Perl cung cấp khả năng hỗ trợ các số phức.
- Python cung cấp kiểu
complex
được xây dựng sẵn. Các hằng số phức có thể được xác định bằng cách gắn thêm ký tự "j". Các hàm toán học số phức được cung cấp trong mô đun thư viện chuẩncmath
.[4] - Ruby cung cấp lớp Complex trong mô đun thư viện chuẩn complex.
- OCaml hỗ trợ số phức thông qua mô đun thư viện chuẩn Complex.
- Haskell hỗ trợ số phức thông qua mô đun thư viện chuẩn Data.Complex (tên cũ là Complex).
- Mercury cung cấp khả năng hỗ trợ số phức và nạp chồng toán tử đầy đủ trong bản phân phối mở rộng, sử dụng thư viện libcomplex_numbers.
- Java không có lớp số phức chuẩn, nhưng cũng có một số giải pháp triển khai lớp số phức:
- Thư viện Apache Commons Math cung cấp khả năng hỗ trợ số phức cho Java thông qua lớp Complex.
- Thư viện JScience có chưa lớp số phức Complex.
- Thư viện JAS cho phép sử dụng số phức.
- Netlib có sẵn một lớp số phức cho Java.
- javafastcomplex cũng bổ sung khả năng sử dụng số phức cho Java
- jcomplexnumber là một dự án triển khai số phức bằng Java.
- JLinAlg hỗ trợ các giá trị phức với độ chính xác tùy ý.
- Common Lisp: Chuẩn ANSI Common Lisp hỗ trợ các giá trị phức có các thành phần là số dấu phẩy động, số hữu tỉ hay số nguyên có độ chính xác tùy ý. Các hàm toán học cơ bản đều được định nghĩa cho số phức nếu có thể. Ví dụ, căn bậc hai của -1 là một số phức:
? (sqrt -1) #C(0 1) ; kết quả của (sqrt -1)
- Scheme: Số phức cùng các hàm (v.d.
sin
) đều có sẵn trong ngôn ngữ này. Tuy nhiên việc triển khai chúng chỉ là tùy chọn trong chuẩn R5RS, còn với chuẩn R6RS là bắt buộc. - .NET Framework cung cấp thư viện System.Numerics.Complex kể từ phiên bản 4.0.
- smart BASIC dành cho iOS hỗ trợ sẵn số phức theo ký hiệu a + bi. Bất cứ biến, phép toán hay hàm nào đều có thể chấp nhận cả các đối số thực và phức và trả về giá trị thực hoặc phức tùy vào kết quả tính toán. Ví dụ, căn bậc hai của -4 là một số phức:
PRINT SQRT(-4) 2i
- Julia có sẵn các kiểu được định trước cho cả số phức và số hữu tỉ kể từ phiên bản 0.3[5]
- R cung cấp kiểu dữ liệu cơ bản
complex
[6]
Tham khảo
[sửa | sửa mã nguồn]- ^ IBM Informix Database Design and Implementation Guide
- ^ “Flash 8 Documentation”. Bản gốc lưu trữ ngày 27 tháng 4 năm 2009. Truy cập ngày 11 tháng 5 năm 2009.
- ^ A guide to Fortran IV programming Daniel D. McCracken - 1972 - 288 pages. "The capability provided by Fortran complex operations is a great savings in programming effort in certain problems. "
- ^ Python v2.6.5 documentation
- ^ “Complex and Rational Numbers — Julia Language 0.3.13-pre documentation”.
- ^ “R Data Types”. www.w3schools.com (bằng tiếng Anh). Truy cập ngày 26 tháng 4 năm 2022.