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\)

In[1]:= Solve[x^2 - 2 x - 3 == 0, x]
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:

In[1]:= Solve[{a x + 2 y == 7, 3 b x - y == 1}, {x, y}]
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.

In[1]:= Reduce[x^2 - 2 x - 3 == 0 && x > 0, x]
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\)

In[1]:= Reduce[3 x + 4 > 0 && 2 x^2 + 5 x + 3 < 0, x]
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 \)

In[1]:= FindRoot[x^2 - 3 x - 3 == 0, {x, -3}]
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\)

In[1]:= phuongtrinh = MinimalPolynomial[Sqrt[2] + 1, x]
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[1]:= so = 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à SimplifyFullSimplify, 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[1]:= f = Sin[(x + y + z) ^ 2] Cos [(x + y + z) ^2]
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

In[1]:= Together[3 x / (2 x + 6) + 4 /(x^2 - 9)]
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ố

In[1]:= Apart[2/((1 + x) (1 - x))]
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ư)

In[1]:= PolynomialQuotient[x^3 + x^2 - x + 1 , x + 1, x]
Out[1]:= \(x^2-1\)

Chia 2 đa thức lấy phần dư (bỏ phần nguyên)

In[1]:= PolynomialRemainder[x^3 + x^2 - x + 1 , x + 1, x]
Out[1]:= 2

Chia 2 đa thức, lấy cả nguyên và dư

In[1]:= PolynomialQuotientRemainder[x^3 + x^2 - x + 1 , x + 1, x]
Out[1]:= {\({-1 + x^2, 2}\)}

Đăng ký nhận bài viết mới