Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Như tiêu đề mình vấn đề về tính đạo hàm các phép tính VD:3*x+4*x*x sẽ có đạo hàm 3+8*x ( không có phép toán đặc biệt như sin cos ).Nhưng mình không biết thuật toán nào hay thư viện nào của C# hỗ trợ ; xin được mọi người chỉ giáo .Cảm ơn mọi ngừơi nhiều.
1) đổi biểu thức dạng chuỗi sang dạng cây nhị phân
Ví dụ:
Code:
2) Duyệt cây để lấy đạo hàm theo các quy tắc đã biết => tạo ra 1 cây cho đạo hàm:
a) gặp nút '*': ứng với (L * R) => xài qui tắc (L'*R + R'*L)
b) gặp nút '+': ứng với (L + R) => xài qui tắc (L' + R')
c) gặp nút '-': ứng với (L - R) => xài qui tắc (L' - R')
Ví dụ:
Code:
3) rút gọn cây đạo hàm
Ví dụ:
Code:
4) Duyệt cây đạo hàm và đổi ra dạng chuỗi
Ví dụ với cây đạo hàm trên thì sẽ có chuỗi: "-2x"
Phần 2 (-> cây đạo hàm) có vẻ khó nhưng mình đã có các qui tắc lấy đạo hàm trong sách
Nếu không cần in biểu thức đạo hàm ra cho người dùng coi mà chỉ cần có đạo hàm để tính toán tiếp thì có thể bỏ qua phần 3 (rút gọn cây). Phần 3 thì phải dựa trên kinh nghiệm để có danh sách các qui tắc rút gọn, đại khái:
0+x = x
1*x = x
mx+nx = (m+n)x
xy = yx
......................