PDA

View Full Version : Hàm để tính arc cosine và arc Sine?



Than Dieu
22-05-2006, 01:26
Các anh giúp em với? Em đang ko biết phải làm thế nào để tính được nó trong Pascal.

bete
22-05-2006, 06:42
Nếu tui không lầm thì:

- Pascal có hàm arctan()
- (sin x)^2 + (cos x)^2 = 1
=> (tg x)^2 + 1 = 1/(cos x)^2
=> tính tg x từ cos x
=> xài hàm argtan() (dĩ nhiên phải tính tới x nằm trong cung phần tư nào; và hàm arctan lấy tham số theo radian chớ không phải theo độ)

(có gì sai sót mong được chỉ giúp, xin cám ơn)

-thân

Than Dieu
22-05-2006, 11:24
Làm sao để xác định được góc đó nằm ở phần tư nào khi mà chỉ biết mỗi giá trị cosine hoặc sine?

Các anh có ai giúp em cách tính cos(x), sin(x) theo cos(3x). Tức là cho biết cos(3x) tính sin(x) và Cos(x) theo cos(3x)?

mtt333
22-05-2006, 14:21
Theo chiều ngược chiều kim đồng hồ:
Nếu sin(x) > 0, cos(x) > 0 thì ở góc phần tư thứ 1
Nếu sin(x) > 0, cos(x) < 0 thì ở góc phần tư thứ 2
Nếu sin(x) < 0, cos(x) < 0 thì ở góc phần tư thứ 3
Nếu sin(x) < 0, cos(x) > 0 thì ở góc phần tư thứ 4

Về cos, sin tốt nhất ra mua sách toán lớp 10, ở đó có đủ các công thức về sin, cos, cũng không quá khó hiểu đâu, nếu em đang học cấp 2 và chịu khó một chút sẽ hiểu thôi.

Than Dieu
22-05-2006, 18:08
Nhưng mà bài toán chỉ cho biết mỗi giá trị Cos(3x) làm sao mà biết được nó nằm ở góc nào.

Bài toán em cần là: Cho giá trị của cos(3x) tính Cos(x) và sin(x) các anh ah. Thế mới khó anh ah.

Các anh cố giúp em với, em đang cần gấp lắm đó.

haphuong
22-05-2006, 22:53
-Nếu trong Pascal đã có sẵn hàm arctanx thì có thể tính arcsinx từ các hệ thức sau:

2arctan[(1+sqrt(1-x^2))/x] + arcsinx = pi nếu 0<x<=1



2arctan[(1+sqrt(1-x^2))/x] + arcsinx = -pi nếu -1<=x<0

Do đó, ta có:

arcsinx = pi - 2arctan[(1+sqrt(1-x^2))/x] nếu 0<x<=1



arcsinx = -pi - 2arctan[(1+sqrt(1-x^2))/x] nếu -1<=x<0

Chú ý rằng arcsin0 = 0.

-Ta có:

arcsinx + arccosx = pi/2 với mọi x thuộc khoảng [-1, 1]

nên suy ra:

arccosx = pi/2 – arcsinx với mọi x thuộc khoảng [-1, 1]

Than Dieu
22-05-2006, 23:51
Cảm ơn các anh. ANh haphuong cho em hỏi một chút. Nếu như x không nằm trong khoảng [-1, 1] thì sẽ như thế nào hả anh.

haphuong
22-05-2006, 23:59
Cảm ơn các anh. ANh haphuong cho em hỏi một chút. Nếu như x không nằm trong khoảng [-1, 1] thì sẽ như thế nào hả anh.
Các hàm arcsinx và arccosx chỉ xác định khi x thuộc khoảng [-1, 1], do đó các công thức đã nêu về arcsinx và arccosx như vậy là đủ dùng rồi.

mtt333
23-05-2006, 11:15
Nhưng mà bài toán chỉ cho biết mỗi giá trị Cos(3x) làm sao mà biết được nó nằm ở góc nào.

Bài toán em cần là: Cho giá trị của cos(3x) tính Cos(x) và sin(x) các anh ah. Thế mới khó anh ah.

Các anh cố giúp em với, em đang cần gấp lắm đó.

Nếu chỉ cho mỗi cos(3x) thì chẳng thể xác định được x thuộc nằm ở góc nào vì kết quả có thể là nhiều góc khác nhau.
Nguyên nhân: nếu cho cos(3x) thì có 6 giá trị x khác nhau thuộc về nhiều góc phần tư khác nhau.
ví dụ:
-- Để ở độ cho dễ hình dung nhé, giới hạn x trong khoảng 0 o đến 360 o
cos(3x) = 0.5 --> x = 20, 140, 260, 100, 220, 340
Đủ cả 4 góc phần tư luôn.

Than Dieu
23-05-2006, 12:50
Cảm ơn các anh nhé.

haphuong
24-05-2006, 21:49
@ Than Dieu: Hôm trước, tui ghi cách tính hàm arcsinx theo hàm arctanx hơi phức tạp. Có công thức tính đơn giản và trực tiếp hơn là công thức sau:

arcsinx = arctan[x/sqrt(1 – x^2)] nếu –1<x<1

Công thức tính arccosx vẫn như trước:

arccosx = pi/2 – arcsinx với mọi x thuộc khoảng [–1, 1]

Suy ra:

arccosx = pi/2 – arctan[x/sqrt(1 – x^2)] nếu –1<x<1

Chú ý là:

arcsin1 = pi/2
arcsin(–1) = –pi/2
arccos1 = 0
arccos(–1) = pi

Cho biết cos3x = m, tính cosx và sinx.
GIẢI
Có các trường hợp sau:
1) cos3x = m (0 < m < 1)
Đặt k = sqrt(1-m^2)/m và t = arctan(k).
Khi đó, các giá trị của cosx là:
cos(t/3), cos(t/3 + 2*pi/3), cos(t/3 + 4*pi/3)
và các giá trị của sinx là:
sin(t/3), sin(t/3 +2*pi/3), sin(t/3 + 4*pi/3), –sin(t/3), –sin(t/3 + 2*pi/3), –sin(t/3 + 4*pi/3).
Vậy trong trường hợp này, có 3 giá trị của cosx và 6 giá trị của sinx.
2) cos3x = m (–1 < m < 0)
Đặt k = sqrt(1–m^2)/(–m) (nghĩa là k = sqrt(1-m^2)/|m|), và t = pi – arctan(k)
Khi đó, các giá trị của cosx là:
cos(t/3), cos(t/3 + 2*pi/3), cos(t/3 + 4*pi/3)
và các giá trị của sinx là:
sin(t/3), sin(t/3 +2*pi/3), sin(t/3 + 4*pi/3), –sin(t/3), –sin(t/3 + 2*pi/3), –sin(t/3 + 4*pi/3).
3) cos3x = 0
Các giá trị của cosx là:
cosx = 0, cosx = sqrt(3)/2, cosx = –sqrt(3)/2
và các giá trị của sinx là:
sinx = 1, sinx = –1, sinx = 1/2, sinx = –1/2.
4)cos3x = 1
Các giá trị của cosx là:
cosx = 1, cosx = –1/2
và các giá trị của sinx là:
sinx = 0, sinx = sqrt(3)/2, sinx = –sqrt(3)/2.
5) cos3x = –1
Các giá trị của cosx là:
cosx = –1, cosx = 1/2
và các giá trị của sinx là:
sinx = 0, sinx = sqrt(3)/2, sinx = –sqrt(3)/2

Chú ý: Trong phần trình bày trên, không có điều kiện ràng buộc đối với x, nghĩa là cho cos3x = m, ta tìm tất cả các giá trị có thể có của cosx và sinx.
@ Than Dieu: Em kiểm tra lại các giá trị tui nêu ra ở phần trên bằng cách cho m là các giá trị cụ thể như: m = 1/2, m = sqrt(3)/2, m = –1/2, m = – sqrt(2)/2, m = 1, v.v… Em viết chương trình và chạy thử xem kết quả ra sao, có gì trục trặc em báo ngay nhé.

Có gì sai sót mong các bạn chỉ giúp, cám ơn các bạn.

Than Dieu
03-06-2006, 14:13
Cảm ơn anh mấy hôm em bận thi ko lên Forum được. Để em về kiểm tra.

Ah, EM thấy ứng với mỗi giá trị của cos(3x )sẽ nhận được 2 giá trị thực Cos(x) và 4 giá trị của sin(x). Vậy ta tìm ra được những 3 giá trị của Cos(x) và 6 giá trị của Sin(x) vậy có bị thừa ko anh nhỉ

haphuong
05-06-2006, 20:29
Ah, EM thấy ứng với mỗi giá trị của cos(3x )sẽ nhận được 2 giá trị thực Cos(x) và 4 giá trị của sin(x). Vậy ta tìm ra được những 3 giá trị của Cos(x) và 6 giá trị của Sin(x) vậy có bị thừa ko anh nhỉ
* Khi 0 < m < 1 hoặc khi -1 < m < 0 thì có 3 giá trị phân biệt của cosx và 6 giá trị phân biệt của sinx.
Ví dụ: m = 1/2. Khi đó k = sqrt(3), t = arctan(k) = pi/3.
Ba giá trị của cosx là:
cos(t/3) = cos(pi/9) = 0,9397
cos(t/3 + 2*pi/3) = cos(7*pi/9) = -0,7660,
cos(t/3 + 4*pi/3) = cos(13*pi/9) = -0,1736
và sáu giá trị của sinx là:
sin(t/3) = sin(pi/9) = 0,3420
sin(t/3 +2*pi/3) = sin(7*pi/9) = 0,6428
sin(t/3 + 4*pi/9) = sin(13*pi/9) = -0,9848
-sin(t/3) = -sin(pi/9)= - 0,3420
-sin(t/3 +2*pi/3) = -sin(7*pi/9) = -0,6428
-sin(t/3 + 4*pi/9) = -sin(13*pi/9) = 0,9848
Chú ý là sáu giá trị phân biệt của sinx lập thành ba cặp đối dấu nhau.
* Khi m = 0, m = 1 hoặc m = -1 thì có những giá trị của sinx trùng nhau nên ta xét riêng cho được rõ ràng.
* Cách kiểm tra kết quả:
Ta có công thức lượng giác sau:
cos(3u) = 4(cosu)^3 – 3cosu
Do đó, để biết ba giá trị cosx nhận được trong các trường hợp -1 < m < 0 hoặc 0 < m < 1 có đúng hay không, em làm như sau: lần lượt gán ba giá trị của cosx vào các biến thực a, b, c rồi em cho xuất ra màn hình giá trị của biểu thức: 4a^3 – 3a
Nếu chương trình em viết là đúng thì giá trị đó sẽ bằng số m mà em đã nhập vào lúc đầu (vì 4a^3 – 3a = 4[cos(t/3)]^3 – 3cos(t/3) = cost = m do t = arccosm).
Tương tự, 4b^3 – 3b và 4c^3 – 3c đều bằng m cả.
Tuy nhiên, có thể xảy ra trường hợp là chúng chỉ gần bằng m mà không đúng bằng m: điều này tùy thuộc vào dạng thức của các biến m, a, b, c khi xuất ra màn hình (điều này thì tui không chắc lắm vì tui không rành về Pascal :)).

--------------------------------

* Xét phương trình bậc ba (ẩn số là t):
4t^3 – 3t – 0,4592 = 0 (1)
Để giải phương trình (1), có thể dùng công thức Cardano, nhưng công thức đó không có trong chương trình Trung học. Nếu cho giải phương trình (1) bằng cách lập trình thì ta giải như sau: Đặt t = cosx (–1 <= t <= 1), phương trình (1) thành:
4(cosx)^3 – 3cosx – 0,4592 = 0.
<=> cos(3x) – 0,4592 = 0
<=> cos(3x) = 0,4592 ( = m)
Bây giờ, chạy chương trình Pascal mà em đã viết, em sẽ nhận được:
t1 = cosx1 = ***
t2 = cosx2 = ***
t3 = cosx3 = ***
Các nghiệm t1, t2, t3 đều nhận được vì thỏa điều kiện –1 <= t <= 1. Mà phương trình bậc ba thì chỉ có tối đa là ba nghiệm phân biệt. Vậy, phương trình (1) có đúng ba nghiệm phân biệt là t1, t2, t3 ở trên. Nói cách khác, ta đã giải phương trình bậc ba (1) bằng cách chuyển qua giải bằng Lượng giác (với sự trợ giúp của ngôn ngữ lập trình Pascal), rồi từ đó tìm được các nghiệm t của phương trình (1), vốn là một phương trình đại số (vế trái là một đa thức). Ý nghĩa của bài tập em đã làm có thể hiểu là như vậy đó.
Dĩ nhiên nếu thay số 0,4592 trong (1) bởi một số bất kỳ m thỏa –1 <= m <= 1 thì chương trình em đã viết vẫn có thể dùng được. Nhưng nếu xét phương trình:
4t^3 – 3t – 3,4592 = 0 (2)
thì không dùng chương trình đó được nữa vì phương trình cos(3x) = 3,4592 (= m) vô nghiệm. Trong trường hợp này, người ta giải phương trình (2) bằng những phương pháp khác.
Chương trình em viết còn một hạn chế khác nữa, đó là nó chỉ giải được duy nhứt một dạng hàm số là:
4t^3 – 3t – m = 0 (3)
với –1 <= m <= 1 mà thôi ( nghĩa là hàm số đó bắt buộc phải là 4t^3 – 3t ). Gặp phương trình bậc ba bất kỳ như:
9t^3 +15t^2 – 2t + 0,2418 = 0
mà không thể biến đổi để đưa về dạng (3) thì chương trình của em ... bótay.com! :).
Nói ra nghe có vẻ nản quá phải không, vì bỏ công sức ra thì nhiều mà thu lại thì hình như hơi ít, nhưng không sao, việc giải những bài tập như vậy rất có lợi cho việc rèn luyện sự suy luận và luyện tập lập trình.
* Tương tự, em có thể giải phương trình dạng
16t^5 – 20t^3 + 5t = m (4)
(với –1 <= m <= 1) bằng cách đặt t = cosx (–1 <= t <= 1) để đưa nó về phương trình lượng giác:
cos5x = m.
Làm tương tự như tui đã trình bày trong bài post trước, em tìm được 5 giá trị phân biệt của cosx (nếu –1 < m < 0 hoặc 0 < m < 1), đó chính là 5 nghiệm phân biệt t1, ..., t5 của phương trình (4).
* Các hàm số f(t) = 4t^3 – 3t, g(t) = 16t^5 – 20t^3 + 5t là 2 đa thức trong các đa thức Tchebyshev . Sau này lên Đại học, có thể em sẽ được học về các đa thức đó.

Than Dieu
05-06-2006, 23:28
Cảm ơn anh haphuong nhiều lắm. Em đã kiểm tra lại em hôm trước do em hiểu sai. Bữa nay rành rồi anh ah.
Có thể ngắn gọn lại như sau:

Ứng với mỗi giá trị Cos(3x) thì góc tương ứng sẽ là:
3x=3x => x=3x/3
3x=360-3x => x=(360-3x)/3
3x=360+3x => x=(360+3x)/3

Từ đó kết luận, ứng với mỗi giá trị Cos(3x) ta sẽ tìm được 3 giá trị khác nhau của Cos(x)

bete
06-06-2006, 02:21
Ứng với mỗi giá trị Cos(3x) thì góc tương ứng sẽ là:
3x=3x => x=3x/3
3x=360-3x => x=(360-3x)/3
3x=360+3x => x=(360+3x)/3

Từ đó kết luận, ứng với mỗi giá trị Cos(3x) ta sẽ tìm được 3 giá trị khác nhau của Cos(x)

Nếu dùng số phức thì sẽ rất đơn giản: tìm căn bậc 3 của 1 số phức => có 3 nghiệm => 3 giá trị của
x (modulo 2*pi) => 3 giá trị của cos(x)

Hơn nữa dùng số phức thì có thể dễ giải được bài toán mở rộng: cho cos(n*x), tìm cos(x). Và cách giải sẽ rất ngắn gọn chỉ vài dòng, và dễ hiểu, không cần biện luận. Tiếc là số phức chưa được dạy ở trung học thì phải. Nhưng tui nghĩ số phức nhập môn (khái niệm & các phép toán cộng, trừ nhân chia, lũy thừa, khai căn) là khá đơn giản, học sinh trung học có thể hiểu được (vì chỉ cần biết hệ tọa độ XY, vectơ & lượng giác)

(có gì sai sót mong được góp ý, xin cám ơn)

-thân

haphuong
06-06-2006, 17:01
Thân gởi bạn bete

* Cách giải mà tui nêu ra trong bài post #11 cũng áp dụng được cho bài toán tổng quát: "Cho cosnx = m, tìm cosx và sinx".
Chẳng hạn, nếu 0 < m < 1 thì sau khi tính k = sqrt(1-m^2)/m và t = arctan(k) (dễ thấy t = arccosm), ta giải phương trình:
cos(nx) = cost
thì sẽ tính được n giá trị phân biệt của cosx. Từ đó suy ra 2n giá trị phân biệt của sinx.
* Bạn trình bày dùm cách giải bài toán tổng quát "Cho cos(nx) = m, tìm cosx và sinx" bằng cách dùng số phức cho mọi người cùng xem. Bạn viết thiệt chi tiết nghe, nếu có ví dụ cụ thể bằng số thì càng tốt. Tui cũng muốn được đọc cách giải bài toán đó theo một cách khác với cách tui đã làm.

Cám ơn bạn.

poly
06-06-2006, 18:57
... cho tui chơi với!

Số phức thì đơn giản nhưng tui thấy nó liên quan đến việc tìm căn bậc n của 1 số phức (ít nhất cũng là cách tui dẫn ra phải xài đến), tức là quay lại bài toán đầu? Bạn bete có phải qua bước này ko?

Theo tui nghĩ thì giải bài toán tìm cos(x) khi biết cos(nx) ko qua hàm lượng giác ngược thì tương đương với giải bài toán T_n(x) = m với T_n(x) là hàm Chebyshev. Bài này tui ko nghĩ giải bằng toán sơ cấp được à.

bete
07-06-2006, 01:44
Cách giải mà tui nêu ra trong bài post #11 cũng áp dụng được cho bài toán tổng quát: "Cho cosnx = m, tìm cosx và sinx".

=> thân gửi haphuong: tui xin lỗi vì đã gây hiểu lầm. Tui không có ý nói cách bạn trình bày là không áp dụng được cho bài toán mở rộng. Tui có cảm giác là với bài toán mở rộng thì bạn phải giải phương trình bậc n, không biết có đúng hay không ? Giải bằng số phức thì chỉ là đơn giản thôi, chớ không phải là cách giải duy nhứt (cũng chưa chắc là cách giải hay nhứt nữa)


Tui cũng muốn được đọc cách giải bài toán đó theo một cách khác với cách tui đã làm.

=> tui rất đồng ý với bạn. Phe ta lên đây không phải là để cãi nhau; mà là để bàn bạc thôi. Tui cũng muốn nói thử cách giải của mình => có sai sót gì anh em chỉ ra cho => tui cũng học hỏi thêm được


Số phức thì đơn giản nhưng tui thấy nó liên quan đến việc tìm căn bậc n của 1 số phức (ít nhất cũng là cách tui dẫn ra phải xài đến), tức là quay lại bài toán đầu? Bạn bete có phải qua bước này ko?

=> tui không rõ bạn poly nói "bước này" là bước nào ? Nhưng dùng số phức là để giải bài toán đầu. Có phải ý của bạn là: cần chứng minh công thức căn bậc n của số phức hay không ? Tui giả định là không cần phải chứng minh lại.


Theo tui nghĩ thì giải bài toán tìm cos(x) khi biết cos(nx) ko qua hàm lượng giác ngược thì tương đương với giải bài toán T_n(x) = m với T_n(x) là hàm Chebyshev. Bài này tui ko nghĩ giải bằng toán sơ cấp được à.

=> Cách của bạn haphuong có điểm hay là giải bằng tay được (ít nhứt là cho bậc 3, bậc 4 thì tui không biết). Nhưng nếu phải giải phương trình bậc n thì hình như không có công thức tổng quát cho n >= 5 ? Giải bằng số phức chỉ có thể áp dụng cho máy tính mà thôi (cần phải có hàm arccos)

Tui đoán thandieu chưa học qua về số phức => tui xin ráng thử nói rất sơ qua về số phức 1 chút; rồi sẽ nói cách giải bằng số phức

1 số thực có thể được biểu diễn bằng 1 điểm trên trục số thực

Số phức là 1 khái niệm mở rộng của số thực: thêm 1 trục số ảo vuông góc với số phức => 1 số phức có thể được biểu diễn bằng 1 điểm trên mặt phẳng tọa độ số phức (2 chiều). Nếu điểm nằm trên trục số thực thì mình có số (thuần) thực (thành phần ảo là 0); nếu điểm nằm trên trục số ảo thì mình có số (thuần) ảo (thành phần thực là 0); còn nếu điểm không nằm trên trục nào hết thì mình có 1 số phức tổng quát (cả 2 thành phần thực / ảo đều khác 0)

1 là đơn vị của số thực; còn i là đơn vị của số ảo
i có tính chất là: i^2 = -1 (i là căn bậc 2 của -1)
(số ảo nói chung: là căn bậc 2 của 1 số (thực) âm nào đó)

1 số phức c sẽ ứng với 1 điểm trên mặt phẳng tọa độ => cũng ứng với 1 vectơ (có gốc là gốc tọa độ, ngọn là điểm đang xét)
Vì nằm trên mặt phẳng tọa độ cho nên mình có thể biểu diễn 1 số phức c (hay vectơ tương ứng) dưới 2 dạng:

a) tọa độ vuông góc (2 trục: thực / ảo)
c = x + y*i (x: thành phần thực; y: thành phần ảo)
(điểm chiếu từ c xuống trục thực cắt tại x, và điểm chiếu từ c xuống trục ảo cắt tại y)

b) tọa độ cực (1 trục thực):
c = (r,alpha): r là độ dài của vectơ; alpha là góc (có hướng) của vectơ so với trục thực

Phép lũy thừa của số phức: cho số phức c=(r,alpha) (tọa độ cực)
c2 = c^n = (r2, beta) thỏa: r2 = r^n; beta = n*alpha
(quay vectơ c quanh gốc tọa độ n-1 lần, mỗi lần quay 1 góc có độ lớn là alpha; rồi lũy thừa độ dài của c => sẽ có c2)

(xét số đơn vị ảo (1, pi/2); i^2: quay 1 lần 1 góc pi/2 => trùng với điểm (-1, pi): chính là -1)

Phép khai căn của số phức: cho số phức c2=(r2, beta)
c = căn_n(c2) = (r, alpha) thỏa: r2 = r^n; beta = n*alpha
Một số phức sẽ có n căn bậc n; các góc alpha ứng với các giá trị căn này sẽ là:
alpha = beta/n + k*2*pi/n (k:0->n-1)
(giá trị căn thứ nhứt có góc là beta/n; các giá trị căn trải đều (xét về góc) trên mặt phẳng tọa độ (như căm xe đạp vậy): cách nhau 1 góc là 2*pi/n)

(xét1 số thực 1 (1,0) => có 2 căn bậc 2: (1,pi/2) và (1,3*pi/2) (i và -i))

Bây giờ mình giải bài toán: cho cos(n*beta) => tính cos(beta) và sin(beta) bằng số phức:

Đặt c2=(1,beta) (tọa độ cực): độ dài là 1 (để mình không bận tâm về độ dài vectơ), góc so với trục thực là beta

c=căn_n(c2)=(1,alpha) thỏa: beta=n*alpha

=> alpha là góc mình muốn tìm
alpha = beta/n + k*2*pi/n (k:0->n-1)

Như vậy: dùng hàm arccos để có beta (nói chung là có 2 giá trị) => alpha[k] = beta/n + k*2*pi/n => cos(alpha[k]) và sin(alpha[k]) là các cặp giá trị mình đang muốn tìm (nói chung là có 6 cặp)

Ví dụ: cos(3x) = 0
=> 3x = pi/2 (modulo 2*pi) hoặc 3x = -pi/2 (modulo 2*pi)
=> các giá trị của x:
pi/6 + k*2*pi/3 (k: 0,1,2) (30 độ, 150 độ, 270 độ)
-pi/6 + k*2*pi/3 (k: 0,1,2) (330 độ, 90 độ, 210 độ)


Tui chỉ nghĩ đến cách giải bằng số phức khi thấy các công thức kết quả của thandieu đưa ra mà thôi

(có gì sai sót mong được góp ý, xin cám ơn)

-thân

poly
07-06-2006, 10:13
bài toán tìm nghiệm của đa thức giải tổng quát được cho bậc 4, nhưng bậc 5 thì ko, nhưng giải số thì được cho cả bậc n (dễ nhất là đưa về bài toán trị riêng giải tổng quát tìm được đủ n nghiệm).

Cách của tui là dựa vô

1) cos(nx) = 1/2*(exp(inx)+exp(-inx)) = t
2) Tìm X = exp(inx) từ PT trên bằng X+1/X = 2t
3) Tìm exp(ix) = X^(1/n)
4) Tính cosx và sinx từ exp(ix).

Trong đó ở bước 3 có phép lấy căn bậc n của 1 số phức... vậy vô tình phải dùng đến phép tính ngược lượng giác và phải dùng giải tích chuỗi để tính số giá trị này (do đó dính đến toán cao cấp).

Cách của bạn haphuong hay nhưng chỉ giải tổng quát trong trường hợp n =3,4... cao hơn cũng ko giải sơ cấp được ;)

(Tui thấy số phức có quá chừng ưu điểm tại sao lại ko dạy ở cấp 3 nhỉ? Đơn cử là tất cả bài toán điện lớp 12 đều có thể dùng số phức mà ko qua cái giản đồ vector gì đó...)

bete
07-06-2006, 10:36
Thân gửi poly: cách của bạn rất độc đáo !
Có lẽ chương trình toán cấp 3 đã đủ nặng rồi nên số phức không được dạy.

Tui nghĩ thiệt sự nói giải bằng số phức nghe ghê gớm, chớ thiệt sự thì:

cos(nx) = A
=> nx = arccos(A) + k2pi hoặc 3x = -arccos(A) + k2pi
=> x = arccos(A)/n + k2pi/n hoặc x = -arccos(A)/n + k2pi/n

(chính là công thức khi giải bằng số phức)

-thân

haphuong
07-06-2006, 14:25
Thân gởi các bạn bete và poly
Tui đã đọc cách giải của bạn bete và nhận thấy cách giải của bạn và của tui là giống nhau ở bước đầu tiên. Cả bạn và tui đều dùng hàm arccosin:


* Cách giải mà tui nêu ra trong bài post #11 cũng áp dụng được cho bài toán tổng quát: "Cho cosnx = m, tìm cosx và sinx".
Chẳng hạn, nếu 0 < m < 1 thì sau khi tính k = sqrt(1-m^2)/m và t = arctan(k) (dễ thấy t = arccosm), ta giải phương trình:
cos(nx) = cost


cos(nx) = A
=> nx = arccos(A) + k2pi hoặc 3x = -arccos(A) + k2pi
=> x = arccos(A)/n + k2pi/n hoặc x = -arccos(A)/n + k2pi/n
Số t = arccosm chính là số arccos(A) cuả bạn đó mà! :)
Ngoài ra, khi giải cho trường hợp 3x hay tổng quát là nx, tuí cũng đều dùng hàm arccos đó.

Có các trường hợp sau:
1) cos3x = m (0 < m < 1)
Đặt k = sqrt(1-m^2)/m và t = arctan(k).
Khi đó, các giá trị của cosx là:
cos(t/3), cos(t/3 + 2*pi/3), cos(t/3 + 4*pi/3)
và các giá trị của sinx là:
sin(t/3), sin(t/3 +2*pi/3), sin(t/3 + 4*pi/3), –sin(t/3), –sin(t/3 + 2*pi/3), –sin(t/3 + 4*pi/3).
Giá trị t = arctan(k) đó chính là arccosm. Sau đó tui giải phương trình cos3x = cost, v.v...
Thêm nữa, những phần tui đã trình bày là để tính trên máy, không tính bằng tay được (ngay cả trường hợp n = 3), vì phài dùng đến hàm arctan(x) và hàm arccos(x).
Nhưng 2 cách giải do bạn và tui nêu ra khác nhau ở bước tiếp theo: sau khi tính arccosm, tui giải phương trình lượng giác, còn bạn dùng số phức để tính tiếp, nghĩa là 2 người đi tiếp theo 2 cách khác nhau để đến cùng một kết quả.


Tui có cảm giác là với bài toán mở rộng thì bạn phải giải phương trình bậc n, không biết có đúng hay không ?
Trong trường hợp 3x hay nx, tui không giải bất kỳ một phương trình bậc 3 hoặc bậc n nào cả vì tui đã đưa bài toán về việc giải một phương trình lượng giàc cơ bản cosu = cosv.



* Bạn trình bày dùm cách giải bài toán tổng quát "Cho cos(nx) = m, tìm cosx và sinx" bằng cách dùng số phức cho mọi người cùng xem. Bạn viết thiệt chi tiết nghe, nếu có ví dụ cụ thể bằng số thì càng tốt. Tui cũng muốn được đọc cách giải bài toán đó theo một cách khác với cách tui đã làm.
Tui nhờ bạn viết lời giải theo cách dùng số phức vì tui không nghĩ ra được. Thiệt ra thì tui đã thử giải bằng số phức như sau:
* cos(nx) = A => sin(nx)= B (hoặc -B)
* (cosx + isinx)^n = cos(nx) + isin(nx) = A + Bi
=> cosx + isinx = căn bậc n của (A + Bi)
Đến đó tui muốn viết A + Bi = cosu + isinu đặng tính tiếp, nhưng u = arccos(A), mà tui muốn giải không dùng tới hàm arccos nữa, nên bị bí ở khúc đó. Đó chính là lý do tui muốn đọc cách giải của bạn :)
Khi vô đây mà được đọc bài của các bạn khác về một vấn đề nào đó mà mình quan tâm, tui rất thích (và chắc các bạn bete và poly cũng vậy) . Các bạn thuận lợi hơn tui vì là dân máy tính nên có nhiều vấn đề để trao đổi, tìm hiểu, còn tui chỉ có thể trao đổi và tìm hiểu các vấn đề về Toán. Cho nên khi có một vấn đề liên quan đến môn Toán, tui rất muốn đọc ý kiến của tất cả các bạn trên diễn đàn này.

Thân mến

bete
08-06-2006, 03:02
Thân gửi haphuong:

Có lẽ cách giải của bạn poly là cách bạn muốn ?

Thiệt sự thì tui nghĩ hàm arccos chắc cũng không "xấu xí" gì. Nếu tui không lầm thì sin và cos cũng phải tính thông qua chuỗi. Nếu không muốn xài chuỗi thì chắc phải đi qua "cos(nx)=f(cos(x), sin(x)); sin(nx)=g(cos(x), sin(x))"; mà như vậy có lẽ lại phải giải hệ bậc n => cũng phải giải gần đúng thôi ?

Tui xin có chút thắc mắc: với 1 giá trị của cos(3x) thì có thể có tới 6 giá trị của cos(x) phải không bạn haphuong:

x=(arccos(A)+k2pi)/3 (k:0,1,2)
x=(-arccos(A)+k2pi)/3 (k:0,1,2)



-thân

haphuong
08-06-2006, 11:43
Thân gởi bạn bete



Tui xin có chút thắc mắc: với 1 giá trị của cos(3x) thì có thể có tới 6 giá trị của cos(x) phải không bạn haphuong:

x=(arccos(A)+k2pi)/3 (k:0,1,2)
x=(-arccos(A)+k2pi)/3 (k:0,1,2)

Bạn nói đúng: phương trình cos(3x) = A có 2 họ nghiệm là:
x = (arccos(A)+k2pi)/3, k thuộc Z
x = (-arccos(A)+k2pi)/3, k thuộc Z
Khi biểu diễn các ngọn cung đó trên đường tròn lượng giác, ta được 6 điểm ứng với các giá trị:
arccos(A)/3, (arccos(A)+2*pi)/3, (arccos(A)+4*pi)/3 (ứng với k = 0, 1, 2 của họ nghiệm thứ nhứt)

-arccos(A)/3, (-arccos(A)+2*pi)/3, (-arccos(A)+4*pi)/3 (ứng với k = 0, 1, 2 của họ nghiệm thứ hai)
Nhưng vì 6 điểm đó chia thành 3 cặp đối xứng với nhau qua trục hoành nên cosine của chúng thực ra chỉ có 3 giá trị phân biệt mà thôi, chỉ có các giá trị sine mới là 6 giá trị phân biệt (nếu |A| < 1 và A khác 0) gồm 3 cặp đối dấu nhau. Bạn có thấy là tui đã viết:


cos3x = m (0 < m < 1)
Đặt k = sqrt(1-m^2)/m và t = arctan(k).
Khi đó, các giá trị của cosx là:
cos(t/3), cos(t/3 + 2*pi/3), cos(t/3 + 4*pi/3)
và các giá trị của sinx là:
sin(t/3), sin(t/3 +2*pi/3), sin(t/3 + 4*pi/3), –sin(t/3), –sin(t/3 + 2*pi/3), –sin(t/3 + 4*pi/3).
Vậy trong trường hợp này, có 3 giá trị của cosx và 6 giá trị của sinx.

Các giá trị của x thỏa phương trình cos(3x) = A thì có vô số , nhưng các giá trị phân biệt của cosx thì chỉ có 3.



Có lẽ cách giải của bạn poly là cách bạn muốn ?



Cách của tui là dựa vô

1) cos(nx) = 1/2*(exp(inx)+exp(-inx)) = t
2) Tìm X = exp(inx) từ PT trên bằng X+1/X = 2t
3) Tìm exp(ix) = X^(1/n)
4) Tính cosx và sinx từ exp(ix).

Trong đó ở bước 3 có phép lấy căn bậc n của 1 số phức... vậy vô tình phải dùng đến phép tính ngược lượng giác và phải dùng giải tích chuỗi để tính số giá trị này (do đó dính đến toán cao cấp).

Bạn poly dùng công thức:
cosx = (exp(ix) + exp(-ix))/2
và dẫn về phương trình bậc 2 đối với X: ý này hay, nhưng như bạn poly đã viết ở trên, vẫn phải dùng hàm lượng giác ngược ở buớc 3, không thể né được!
Dùng các hàm lượng giác ngược (inverse trigonometric functions) thì quá “đẹp đẽ”, đâu có gì “xấu xí”. Chẳng qua là trong cách giải của tui lúc đầu, tui đã dùng rồi nên tui ráng tìm một cách khác mà không dùng đến chúng xem có được không, và giờ thì thấy rằng: có lẽ là không! Các cách giải do bạn, bạn poly và tui đưa ra đều phải dùng đến hàm lượng giác ngược cả.

bete
08-06-2006, 14:03
Nhưng vì 6 điểm đó chia thành 3 cặp đối xứng với nhau qua trục hoành nên cosine của chúng thực ra chỉ có 3 giá trị phân biệt mà thôi

=> bạn nói rất đúng, xin cám ơn

-thân

dally1410
16-01-2011, 10:55
có bạn nào biết công thức tính arcosX từ artan ko?
2 ông thầy mỗi ông đưa 1 ct ko biết đâu mà làm
arcosX=artan(sqr(1-X^2)/X)
arcosX=artan(-X/sqr(1-X^2))
giúp mình nhanh nhé,mai thi rồi