- Solve, Reduce, FindRoot
- Tạo phương trình khi biết nghiệm
- Biến đổi biểu thức khi giải phương trình
- Chia đa thức cho đa thức
GIẢI CÁC PHƯƠNG TRÌNH, HỆ PHƯƠNG TRÌNH ĐẠI SỐ
Hàm Solve
Giải các phương trình (bất phương trình) đại số bằng hàm Solve[]
tham số thứ nhất là phương trình (hoặc danh sách phương trình) dạng biểu-thức-trái == biểu-thức-phải
chú ý dấu ==
, tham số thứ 2 chỉ ra rõ ràng tên biến cần tìm nghiệm như x
hay {x, y ...}
, nếu cần thì tham số thứ ba chỉ ra miền của biến (Reals, Complexes ...)
Ví dụ giải phương trình \(x^2 - 2 x - 3 = 0\)
Out[1]:= {{x -> -1}, {x -> 3}}
Giải nhiều phương trình (hệ phương trình) thì chỉ ra danh sách các phương trình {f1, f2, ...}
hoặc dùng ký hiệu &&
dạng: f1 & f2 ...
Giải hệ phương trình:
Out[1]:= \(\left\{\left\{x\to \frac{9}{a+6 b},y\to -\frac{a-21 b}{a+6 b}\right\}\right\}\)
Nếu viết Solve[a x + 2 y == 7 && 3 b x - y == 1, {x, y}]
kết quả tương tự.
Để tìm miền xác định của một hàm số, dùng hàm FunctionDomain[f, x]
Hàm Reduce
Khi giải phương trình (bất phương trình) thì hàm Solve phù hợp với các bài toán lớn, phức tạp. Khi bài toán nếu đánh giá không quá phức tạp thì có thể dùng hàm Reduce
Ví dụ phương trình \(x^2 - 3 x - 4 = 0\), lấy các nghiệm lớn hơn 0.
Out[1]:= x == 3
Giải hệ 2 bất phương trình \(3 x+4>0; 2 x^2+5 x+3<0\)
Out[1]:= \( -\frac{4}{3}<x<-1\)
Hàm FindRoot
Nếu muốn giải phương trình với nghiệm số cụ thể hàm FindRoot
sẽ tiến hảnh giải gần đúng (thử).
Tìm nghiệm gần điểm x = -3 của phương trình \(x^2 - 2 x - 4 = 0 \)
Out[1]:= {x -> -0.791288}
TÌM PHƯƠNG TRÌNH KHI BIẾT NGHIỆM
Nếu có một số số đại số
(số là nghiệm của một đa thức mà các hệ số là số nguyên - các số hữu tỉ là số đại số), để tìm phương trình có nghiệm là số đó thì dùng hàm MinimalPolynomial
Ví dụ, tìm một phương trình với biến số là x, có nghiệm bằng \(\sqrt{2}+1\)
Out[1]:= \( x^2-2 x-1\)
Nếu một số nhập vào không phải là số đại số thì không tìm được, ví dụ tìm phương trình có nghiệm bằng 3.5
Khi giải sẽ có thông báo MinimalPolynomial::nalg: 3.5` is not an explicit algebraic number.
Lúc này có thể chuyển số 3.5 thành dạng số hữu tỷ (số đại số) bằng hàm Rationalize[3.5]
In[2]:= phuongtrinh = MinimalPolynomial[so, x]
Out[1]:= \(\frac{7}{2}\)
Out[2]:= -7 + 2 x
BIẾN ĐỔI BIỂU THỨC
Đơn giản hóa biểu thức
Khi có một biểu thức đại số với các ký hiệu đại diện và bạn muốn chuyển nó sang một dạng khác. Phổ biến đó là việc đơn giản hóa biểu thức. Có hai hàm để đơn giản hóa biểu thức là Simplify
và FullSimplify
, chúng đều cố gắng biến đổi biểu thức về dạng đơn giản nhất (sử dụng ít ký hiệu đại diện trong công thức). FullSimplify
thì chạy chậm hơn, do Mathematica xây dựng hàm này dùng nhiều thuật toán phức tạp để tìm giải pháp.
Ví dụ sử dụng hai hàm này để biến đổi một biểu thức, trong đó có sử dụng hàm Timing[]
để đo hoảng thời gian mà mỗi hàm hoàn thành, bạn sẽ thấy thời gian (theo giây) thi hành của một hàm.
In[2]:= Timing[Simplify[f]]
In[3]:= Timing[FullSimplify[f]]
Out[1]:= \(\sin \left((x+y+z)^2\right) \cos \left((x+y+z)^2\right)\)
Out[2]:= \(\left\{0.576425,\frac{1}{2} \sin \left(2 (x+y+z)^2\right)\right\}\)
Out[3]:= \(\left\{29.6506,\frac{1}{2} \sin \left(2 (x+y+z)^2\right)\right\}\)
Kết quả nhiều trường hợp là giống nhau nhưng FullSimplify
mất nhiều thời gian thi hành hơn rất nhiều, tuy vậy nhiều trường hợp thì FullSimplify
sẽ cho kết quả tốt hơn
Nhóm bằng quy đồng với Together
Out[1]:= \(\frac{3 x^2-9 x+8}{2 (x-3) (x+3)}\)
Chuyển biểu thức thành tổng các tỷ số
Out[1]:= \(\frac{1}{x+1}-\frac{1}{x-1}\)
Ngoài ra còn các hàm khác như Factor, Expand ...
xem thêm tại Biến đổi biểu thức trong Mathematica
CHIA ĐA THỨC CHO ĐA THỨC
Chia 2 đa thức lấy phần nguyên (bỏ phần dư)
Out[1]:= \(x^2-1\)
Chia 2 đa thức lấy phần dư (bỏ phần nguyên)
Out[1]:= 2
Chia 2 đa thức, lấy cả nguyên và dư
Out[1]:= {\({-1 + x^2, 2}\)}