PDA

View Full Version : Có ai biết viết chương trình giải phuơng trình bậc 3 không?



avpviva
29-09-2002, 11:20
hi,
Có quynh nào biết viết chuơng trình giải phương trình bậc 3 cho mỉnh xin, hoặc thuật toán cũng được. Nếu quynh nào biết gửi mail cho mình theo dia chỉ avpviva@yahoo.com.
Rất cám ơn.

KEM_WALL
29-09-2002, 16:11
Bạn cứ xắp xếp giải thuật sao cho máy thực hiện cộng việc như chính bạn đang làm. walls ở đây mới học giải phương trình bậc 2 thui nhưng đại khái bạn làm như vậy nè ( sửa lại code để giải bậc 3, ở đây walls làm bậc 2 ) :

sub Cal(a as integer,b as integer, c as integer,txtReturn1 as textbox, txtReturn2 as textbox)
dim delta as single
delta = b*b - 4*a*c ' theo công th?c delta b?ng b bình
' phuong tr? 4 a c
txtreturn1 = (-b - delta)/(2*a)
txtreturn2 = (-b+delta)/(2*a)
end sub

phangtomat
29-09-2002, 19:45
Sao vớ vẩn thế, muốn giải phương trình bậc ba thì phải làm nhiều công thức lắm, còn phải tính cả số phức cơ. chứ đâu có đơn giản như bác Wall bảo.

Ghostlake114
29-09-2002, 19:53
Bác wall chắc là chưa biết công thức tq ftbậc 3 mới bảo thế
Mà giải ftb3 có cách ko cần dùng đến số fức đâu(nhưng nôm na vẫn thế)
Mà tốt nhất là thôi đừng viết,vì chỉ thuật toán trên giấy mà cũng đã 4-5 trang rồi

KEM_WALL
29-09-2002, 20:25
oh, sorry nha, walls chưa học bậc 3 nó ra làm sao nên mới thế, cáo lỗi cáo lỗi ;)

Nguyen Thanh Binh
02-10-2002, 12:27
À các bạn ơi. Hôm bữa mình có đọc trong một cuốn sách về cách giải phương trình bậc ba dùng công thức và không đoán nghiệm. Mình quên cách đó rồi nhưng để mình xem lại. Có điều cách đó có dùng đến hàm arccos mà mình thì không biết cách viết hàm arccos. Hôm trước Hai Bang có hỏi cách viết hàm arccos nhưng hình như không có ai trả lời. (Mình và Hải Bằng học chung lớp mà !). Chỉ cần tìm cách viết hàm arccos thôi thì chuyện giải phương trình bậc ba sẽ được hoàn thành nhanh chóng. Mình phải viết hàm arccos như thế nào đây. Các bạn nghĩ xem chứ mình thì chịu thua.

avpviva
06-10-2002, 09:16
Bài viết được gửi bởi Nguyen Thanh Binh
À các bạn ơi. Hôm bữa mình có đọc trong một cuốn sách về cách giải phương trình bậc ba dùng công thức và không đoán nghiệm. Mình quên cách đó rồi nhưng để mình xem lại. Có điều cách đó có dùng đến hàm arccos mà mình thì không biết cách viết hàm arccos. Hôm trước Hai Bang có hỏi cách viết hàm arccos nhưng hình như không có ai trả lời. (Mình và Hải Bằng học chung lớp mà !). Chỉ cần tìm cách viết hàm arccos thôi thì chuyện giải phương trình bậc ba sẽ được hoàn thành nhanh chóng. Mình phải viết hàm arccos như thế nào đây. Các bạn nghĩ xem chứ mình thì chịu thua.
Bình ơi, bạn có thể mail cho mình bài viết đó không? tớ đang cần gấp lắm, chẳng là ông thầy của mình cho ra một bài mà trong đó cần phải giải phương trình bậc ba. Vì vậy rất mong nhận được bài của bạn.
bạn có thể mail cho mình tại: avpviva@yahoo.com
rất cám ơn.

haopqh
11-10-2002, 22:44
Phuc tap the cac ban , cac ban ko biet dung phuong phap tinh hay giai tich so hay sao , it nhat cung phai co den 2, 3thuat toan
ban nao can chuong trinh nguon bang C , lien he voi minh
haopqh@vol.vnn.vn

vth_bk
12-10-2002, 17:07
đúng đấy, dùng phương pháp tính như haopqh thì hay hơn, chúng ta sẽ được nghiệm gần đúng

avpviva
13-10-2002, 10:16
Bài viết được gửi bởi haopqh
Phuc tap the cac ban , cac ban ko biet dung phuong phap tinh hay giai tich so hay sao , it nhat cung phai co den 2, 3thuat toan
ban nao can chuong trinh nguon bang C , lien he voi minh
haopqh@vol.vnn.vn

Mình cũng biết các phương pháp đó,
mình đã lập thử chương trình giải bằng phương pháp chia đôi nhưng ra nghiệm chỉ gần dúng, sai số cũng khá lớn.
Nếu bạn nào biết lập trình giải bằng phương pháp Newton cho minh source với.
Các bạn có thể gửi cho mình theo dia chi avpviva@yahoo.com
cám ơn nhiều

Nguyen Thanh Binh
13-10-2002, 18:20
Các bạn ơi, mình tìm ra được cuốn sách đó rồi đây. Các bạn xem thử (mình viết nguyên văn):

' ------------------------------------
Giải phương trình bậc ba dạng x^3 + b*x^2 + c*x + d = 0 (1)

Bằng cách đặt ẩn phụ x = X - b/3 bao giờ ta cũng được (1) về dạng thiếu :
X^3 + p*X + q = 0

Với p = c - (b^2)/3 ; q = d + (2*b^3)/27 - b*c/3

Do đó : Ta chỉ cần giải X^3 + p*X + q = 0

delta = q^2 + (4*p^3)/27

@ Nếu delta > 0 : nghiệm duy nhất.

X = căn bậc ba của ((-q + căn bậc hai của delta)/2) + _
căn bậc ba của ((-q - căn bậc hai của delta)/2)

@ Nếu delta < 0 : phương trình có ba nghiệm

X1 = (căn bậc hai của (-4*p/3))*cos(G/3)
X2 = (căn bậc hai của (-4*p/3))*cos((G + 2*pi)/3)
X3 = (căn bậc hai của (-4*p/3))*cos((G + 4*pi)/3)

với G = arccos((3*q*căn bậc ba của 3)/(p*căn bậc hai của(-4*p)))

@ Nếu delta = 0 : phương trình có :

# Nghiệm đơn : X1 = 3*q/p
# Nghiệm kép : X2 = X3 = -3*q/(2*p)
' -------------------------------END-----------------------------

Chỉ có thế thôi bạn ạ, nhưng mình thấy nó phức tạp quá. Mình thì bí ở chổ "arccos". Vả lại cho dù giải được thì cũng toàn số lẻ. Các bạn thử xem. Haopqh ơi, bạn có thể cho mình thuật toán của bạn được không ? Mình đã gởi mail cho bạn rồi. Địa chỉ của mình là "ah_adodc2002@hotmail.com". Cám ơn bạn !

Thôi xin chào tạm biệt các bạn. Hẹn gặp lại !

Ghostlake114
14-10-2002, 17:48
Mình ko biết across là cái gì,nhưng nó đã rút gọn đi cách giải ftb3 đến hàng chục lần
Tất nhiên là có thể viết mà ko cần across và chỉ dùng if,then mà thôi,nhưng dài kinh khủng

Nguyen Thanh Binh
16-10-2002, 12:18
Làm sao có thể chỉ dùng If...then thôi ? Khó đấy !

avpviva
20-10-2002, 11:22
Bài viết được gửi bởi Nguyen Thanh Binh
Các bạn ơi, mình tìm ra được cuốn sách đó rồi đây. Các bạn xem thử (mình viết nguyên văn):

' ------------------------------------
Giải phương trình bậc ba dạng x^3 + b*x^2 + c*x + d = 0 (1)

Bằng cách đặt ẩn phụ x = X - b/3 bao giờ ta cũng được (1) về dạng thiếu :
X^3 + p*X + q = 0

Với p = c - (b^2)/3 ; q = d + (2*b^3)/27 - b*c/3

Do đó : Ta chỉ cần giải X^3 + p*X + q = 0

delta = q^2 + (4*p^3)/27

@ Nếu delta > 0 : nghiệm duy nhất.

X = căn bậc ba của ((-q + căn bậc hai của delta)/2) + _
căn bậc ba của ((-q - căn bậc hai của delta)/2)

@ Nếu delta < 0 : phương trình có ba nghiệm

X1 = (căn bậc hai của (-4*p/3))*cos(G/3)
X2 = (căn bậc hai của (-4*p/3))*cos((G + 2*pi)/3)
X3 = (căn bậc hai của (-4*p/3))*cos((G + 4*pi)/3)

với G = arccos((3*q*căn bậc ba của 3)/(p*căn bậc hai của(-4*p)))

@ Nếu delta = 0 : phương trình có :

# Nghiệm đơn : X1 = 3*q/p
# Nghiệm kép : X2 = X3 = -3*q/(2*p)
' -------------------------------END-----------------------------

Chỉ có thế thôi bạn ạ, nhưng mình thấy nó phức tạp quá. Mình thì bí ở chổ "arccos". Vả lại cho dù giải được thì cũng toàn số lẻ. Các bạn thử xem. Haopqh ơi, bạn có thể cho mình thuật toán của bạn được không ? Mình đã gởi mail cho bạn rồi. Địa chỉ của mình là "ah_adodc2002@hotmail.com". Cám ơn bạn !

Thôi xin chào tạm biệt các bạn. Hẹn gặp lại !

tớ đã viết được chương trình bằng thuật toán này rồi, nó cho ra nghiệm chính xác hơn phương pháp tính nhưng cũng chỉ gần đúng . ai cần thì cứ mail cho mình theo dia chỉ avpviva@yahoo.com:D

louis_nguyen
20-10-2002, 16:40
Trui giai pt bậc 3 thì chắc chắn ko có cách giải chuẩn đâu ,but pp lặp chính xác thì có nhiều , dùng pp Ruta thử xem ,để tối nay về viétt giải thuật cho ban nhen :D

louis_nguyen
22-10-2002, 12:24
sorry , cach lam cua minh phai ve ddo thi tho nen nghi la ko thich hop hic sorry