2012-09-21 43 views
6

Làm cách nào để xác định một hàm tổng quát mà không có biểu thức chính xác trong Mathematica? Ví dụ, tôi không cần điều này:Làm thế nào để xác định một hàm tổng quát trong toán học?

a[x_, y_]:= 2x + 3y, 

tôi cần phải làm việc với một tham số chung một (x, y) thay vì:

a[x_, y_]:= a[x, y]. 

Tất nhiên, dòng này không hoạt động quá tốt.

Edit1:

Vâng, tôi đang sử dụng các tham số trong một chức năng chưa biết (biết bởi vì nó được xác định duy nhất trong gói), hoạt động cơ bản như một phái sinh, tức là nó là một hỗn hợp rất phức tạp đầu tiên và thứ hai các dẫn xuất.

Dòng này

a[x_, y_]:= a[x, y], 

thực sự hoạt động (loại), bởi vì các thông số 'sống sót' gói như một chức năng, ngoại trừ trong kết quả tôi nhận được gây phiền nhiễu "Hold[a[x,y]]" thay vì chỉ a[x,y], và tôi không thể sử dụng kết quả dưới dạng hàm nữa.

+1

Bước tiếp theo của bạn là gì? Bạn sẽ làm gì với thông số chung như vậy a (x, y)? –

Trả lời

6

Cách để "xác định" hàm mà không chỉ định biểu thức là không phải là xác định. Chỉ cần sử dụng nó.

Ví dụ:

D[f[x] g[x],x] 
(* 
==> g[x] f'[x] + f[x] g'[x] 
*) 

Như bạn thấy, tôi không xác định f hoặc g, nhưng Mathematica không có vấn đề tính toán với họ.

Lưu ý rằng bạn cũng có thể tạo các định nghĩa bằng cách sử dụng các chức năng đó. Ví dụ:

modify[a[x_,y_]]:=a[y,x+y] 
modify[a[2,3]] 
(* 
==> a[3, 5] 
*) 

Bạn thậm chí có thể xác định các phép tính số học trên chúng. Ví dụ, bạn có thể định nghĩa một hàm exp để tượng trưng tính toán với hàm mũ (chú ý chữ thường, vì Exp là đã được xây dựng trong hàm mũ), và sau đó xác định

exp/: exp[a_] exp[b_] := exp[a+b] 
exp/: exp[a_]^n_Integer := exp[n a] 

và sau đó viết

expression = 3 exp[x] exp[y+z]^3 
(* 
==> 3 exp[x + 3 (y + z)] 
*) 
+0

Cảm ơn bạn, celtschk, điều này đã giải quyết được vấn đề cho tôi. – Dee