Chuyên gia;Làm thế nào để yêu cầu Mathematica thay thế 0 thành công suất 0 bằng 1?
Với
f = (#1^#2) &
Có cách nào để xác định 'f' ở trên như vậy mà nếu # 1 và # 2 đều bằng không, thì giá trị của hàm thuần túy 'f' nên 1?
để khi tôi viết
f[0,0]
nó sẽ trở lại 1 và không Không xác định?
btw, tôi biết tôi có thể viết
f = (If[#1 == 0 && #2 == 0, 1, #1^#2]) &
Nhưng tôi muốn có một nguyên tắc chung hoặc mẫu, vì vậy tôi không phải viết những séc, như chức năng tinh khiết có thể phức tạp hơn (nhiều # trong nó) và tôi không muốn thực hiện nhiều lần kiểm tra 'nếu có khác' cho mỗi 0 0 0 có thể hiển thị.
nhờ
Cập nhật:
Có thể là tôi nên làm rõ hơn lý do tại sao tôi làm điều này.
Tôi có một người dùng chọn một chức năng từ menu. Chức năng là
a x^n0 + b y^n1 + c x^n2 y^n3
đâu ở trên, các thông số 'n0', 'n1', 'n2' và 'n3' cũng có thể được lựa chọn từ các thanh trượt, và chúng có thể là không.
Bây giờ, 'x' và 'y' là tọa độ và các giá trị này có thể bằng không.
Do đó, có thể gặp phải 0^0 khi đánh giá hàm trên.
Có nhiều trường hợp để kiểm tra, khi tự làm. Ví dụ 'y^n3' có thể là 0^0 và không phải là khác, y^n1 có thể là 0^0 và không phải là khác, x^n2 y^n3 có thể là 0^0 và không phải là số khác, v.v. và vì vậy tôi phải xác định nhiều trường hợp khác nhau. (16 trường hợp có thể tôi nghĩ).
Và tôi đang cố tránh điều này. Nếu tôi có thể nói cho Mathematica thay thế 0^0 bằng 1 ở mức thấp hơn, thì cuộc sống sẽ đơn giản hơn.
Cập nhật 12/7/11 Cảm ơn mọi người đã trả lời và nhận xét, tất cả đều rất hữu ích và giải quyết được vấn đề của tôi và tôi đã học được từ chúng.
Tôi đã chọn câu trả lời Leonid vì nó cho phép tôi giải quyết vấn đề của mình với ít mã hóa bổ sung nhất.
Dưới đây là một ví dụ nhỏ
Manipulate[Row[{format[x, n], "=", eval[x, n]}],
{{x, 0.0, "x="}, 0, 1, .1, Appearance -> "Labeled"},
{{n, 0.0, "n="}, 0, 1, .1, Appearance -> "Labeled"},
Initialization :>
(
format[x_, n_] := HoldForm["(" x ")"^n];
eval = Unevaluated[#1^#2] /. HoldPattern[0.0^0.0] :> 0.0 &
)
]
tôi sử dụng số thực ở khắp mọi nơi trong mã của tôi (đó là một pde số giải), vì vậy đó là lý do tại sao tôi đã sử dụng 0.0 ở trên và không phải 0^0 để phù hợp với với những gì tôi đang làm.
Bạn có chắc chắn muốn các giá trị này được đánh giá là 1 và không 0? Ký hiệu làm cho nó trông như thể bạn đang đánh giá các đa thức trong đó số mũ là int không âm hoặc có lẽ là số thực. Các cân nhắc liên tục sẽ chỉ ra rằng giá trị 0 có thể thích hợp hơn trong kịch bản đó. –
@DanielLichtblau, Ok, cảm ơn, sẽ nhìn vào 0^0 được thay bằng 0 thay vì 1. Nhưng cả hai trường hợp, nếu tôi sử dụng IF THEN ELSE (hoặc tương đương chức năng của nó bằng cách xác định nhiều chữ ký khác nhau cho từng trường hợp có thể), có vẫn còn 16 trường hợp khác nhau. Đã hy vọng có một cách để ngắn mạch này, nhưng nói với Mathematica để thay thế 0^0 bởi X, nơi X là sự lựa chọn đúng (0 hoặc 1 vì nó có thể được). – Nasser
Xem thêm phần thảo luận về nhóm toán này: http://mathforum.org/kb/message.jspa?messageID=6577581&tstart=0 và câu hỏi này trên các lập trình viên SE: http://programmers.stackexchange.com/questions/9788/how- không-ngôn ngữ-x-xử lý-indeterminate-forms-like-00 –