
Tại sao Mathematica không đơn giản hóa sinh(arccosh(x))
Why Mathematica does not simplify sinh(arccosh(x))
Tôi đã viết một số bài viết về việc áp dụng hàm lượng giác cho hàm lượng giác nghịch đảo. Tôi định viết hai bài, một bài về ba hàm lượng giác cơ bản và một bài về các hàm lượng giác tương ứng của chúng. Nhưng...
Tôi đã viết một số bài viết về việc áp dụng hàm lượng giác cho hàm lượng giác nghịch đảo. Tôi định viết hai bài đăng, một bài về ba hàm lượng giác cơ bản và một bài về đối tác hyperbol. Nhưng có nhiều điều để khám phá ở đây hơn tôi nghĩ lúc đầu. Ví dụ: những lỗi tôi mắc phải trong bài đăng đầu tiên sẽ dẫn đến một vài bài đăng khác thảo luận về việc phát hiện và kiểm tra lỗi.
Tôi tò mò về cách Mathematica sẽ xử lý những danh tính này. Đôi khi nó không đơn giản hóa các biểu thức theo cách bạn mong đợi và vì những lý do thú vị. Nó xử lý các hàm tuần hoàn như bạn mong đợi.
Vì vậy, ví dụ: nếu bạn nhập Sin[ArcCos[x]] thì nó sẽ trả về √(1 − x²) như trong bảng trên. Sau đó, tôi thêm một h vào cuối tất cả các tên hàm để xem liệu nó có tái tạo bảng thành phần hyperbol hay không.
Phần lớn thì có, nhưng không hoàn toàn. Kết quả như mong đợi ngoại trừ khi áp dụng sinh học hoặc cosh vào arccosh. Nhưng Sinh[ArcCosh[x]] trả về
và Tanh[ArcCosh[x]] trả về
Tại sao Mathematica không đơn giản hóa như mong đợi?
Tại sao Sinh[ ArcCosh[x] không trả về √(x² − 1)? Biểu thức mà nó trả về tương đương với biểu thức này: chỉ cần bình phương số hạng (x + 1), đưa nó vào trong căn thức và đơn giản hóa. Dòng lý luận đó đúng với một số giá trị của x nhưng không đúng với các giá trị khác. Ví dụ: Sinh[ArcCosh[2]] trả về −√3 nhưng √(2² − 1) = √3. Biểu thức Mathematica trả về cho Sinh[ArcCosh[x]] đánh giá chính xác là −√3.
Định nghĩa ArcCosh
Để hiểu điều gì đang xảy ra, chúng ta phải xem xét kỹ hơn arccosh(x) nghĩa là gì. Bạn có thể nói đây là hàm trả về số có cosin hyperbol bằng x. Nhưng cosh là hàm chẵn: cosh(−x) = cosh(x), vì vậy chúng ta không thể nói giá trị the. Được rồi, vì vậy chúng ta xác định arccosh(x) là số dương có cosin hyperbol bằng x. Cách này áp dụng được với các giá trị thực của x ít nhất là 1. Nhưng chúng ta có ý gì, ví dụ như arccosh(1/2)? Không có số thực nào y sao cho cosh(y) = 1/2.
Để xác định chính xác cosin hyperbol nghịch đảo, chúng ta cần thực hiện phép cắt nhánh. Chúng ta không thể định nghĩa arccosh là hàm giải tích trên toàn bộ mặt phẳng phức. Nhưng nếu loại bỏ (−∞, 1] thì chúng ta có thể. Chúng ta xác định arccosh(x) cho x > 1 thực là số số thực dương y sao cho cosh(y) = x và xác định nó cho phần còn lại của mặt phẳng phức (đã loại bỏ nhánh của chúng ta (−∞, 1]) bằng cách tiếp tục phân tích.
Nếu chúng tôi tra cứu ArcCosh trong tài liệu của Mathematica, nó cho biết “ArcCosh[z] có điểm gián đoạn cắt nhánh trong mặt phẳng z phức chạy từ −∞ đến +1.” Nhưng còn các giá trị của x nằm trên cành bị cắt thì sao? Ví dụ: chúng tôi đã xem xét ArcCosh[-2] ở trên. Chúng ta có thể mở rộng arccosh cho toàn bộ mặt phẳng phức, nhưng không thể mở rộng nó dưới dạng hàm giải tích.
Vậy làm cách nào để xác định arccosh(x) cho x trong (−∞, 1]? Chúng ta có thể định nghĩa nó là giới hạn của arccosh(z) khi z tiến tới x đối với các giá trị của z không nằm trên nhánh cắt. Nhưng chúng ta phải đưa ra lựa chọn: chúng ta tiếp cận x từ trên hay từ dưới? Nghĩa là, chúng ta có thể định nghĩa arccosh(x) cho số thực x 1 by
hoặc bởi
nhưng chúng ta phải đưa ra lựa chọn vì hai giới hạn này không giống nhau. Ví dụ: ArcCosh[-2 + 0,001 I] trả về 1.31696 + 3.14102 I nhưng ArcCosh[-2 - 0,001 I] trả về 1.31696 - 3.14102 I. Theo quy ước, chúng ta chọn giới hạn ở trên.
Xác định căn bậc hai
Chúng ta đã sai ở đâu khi giả sử biểu thức Mathematica cho sinh(arccosh(x))
có thể đơn giản hóa thành √(x² − 1) không? Chúng ta đã ngầm giả định √(x + 1)² = (x + 1). Và điều đó đúng nếu x ≥ − 1, nhưng không đúng với x nhỏ hơn. Giống như việc chúng ta phải cẩn thận trong cách xác định arccosh, chúng ta cũng phải cẩn thận trong cách xác định căn bậc hai.
Quy trình xác định hàm căn bậc hai cho tất cả các số phức tương tự như quy trình xác định arccosh. Đầu tiên, chúng ta định nghĩa căn bậc hai là giá trị mà chúng ta mong đợi đối với các số thực dương. Sau đó, chúng ta thực hiện cắt nhánh, trong trường hợp này là (−∞, 0]. Sau đó, chúng tôi xác định nó bằng cách tiếp tục phân tích cho tất cả các giá trị không nằm trong phần cắt. Sau đó, cuối cùng, chúng tôi xác định nó dọc theo đường cắt bằng tính liên tục, lấy giới hạn từ phía trên.
Sau khi xác định arccosh và căn bậc hai một cách cẩn thận, chúng ta có thể thấy rằng các biểu thức Mathematica trả về cho sinh(arccosh(x)) và tanh(arccosh(x )) đều đúng cho tất cả các dữ liệu đầu vào phức tạp, trong khi các biểu thức đơn giản hơn trong bảng trên ngầm cho rằng chúng ta đang làm việc với các giá trị x mà arccosh(x) là có thật.
Đưa ra các giả định rõ ràng
Nếu chỉ quan tâm đến các giá trị của x ≥ − 1, chúng ta có thể cho Mathematica biết điều này và nó sẽ đơn giản hóa các biểu thức tương ứng. Nếu chúng ta yêu cầu
Đơn giản hóa[Sinh[ArcCosh[x]], Giả định -> {x >= -1}]nó sẽ trả về √(x² − 1).
Tác giả: ibobev