• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Một số mã tính công thức toán học đơn giản

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Sat 12/03/2011 9:45 pm

Tên bài viết: Một số mã tính công thức toán học đơn giản
Tác giả: VuVanHoanh
Cấp độ bài viết: Dành cho học sinh lớp 8 trở xuống hoặc lớp 8 trở lên ;))
Tóm tắt: Hôm nay, sau khi đọc thấy một số bạn trên diễn đàn có hỏi về một vài thuật toán, em quyết định mạo muội viết lên một số bài để giúp các bạn học sinh giải toán trên máy tính dễ dàng, thuận tiện hơn. Và cũng có lẽ vì em mới học lớp 8 nên chưa thể hiểu hết và viết được nhiều mã giải toán có ích nên mong các anh "lớp lớn" góp vui để topic này thực sự hữu ích, các anh nhé :x


Nào, bắt đầu với học sinh cấp 2:

Giải phương trình bậc nhất:
  1. Public Function GiaiPTBacNhat(a As Long, b As Long) As Long
  2.     If a = 0 Then MsgBox "Day khong phai la phuong trinh bac nhat" : Exit Function
  3.     GiaiPTBacNhat = -b/a
  4. End Function
  5.  


Giải phương trình bậc hai:
[vb]
Public Function GiaiPTBacHai(a As Double, b As Double, c As Double) As String
If a = 0 Then MsgBox "Day khong phai la phuong trinh bac hai" : Exit Function
Dim n1 As Double, n2 As Double
n1 = (-b + sqr( b * b - 4 * a * c))/(2 * a)
n2 = (-b - sqr( b * b - 4 * a * c))/(2 * a)
If n1 = n2 Then
MsgBox "Phương trình có nghiệm số kép"
GiaiPTBacHai = n1 & ";" & n2
Else
GiaiPTBacHai = n1 & ";" & n2
End If
End Function
[/vb]
p/s: Vì em chưa học đến phương trình bậc hai nên chỉ có thể học theo công thức giải PT bậc hai trên mạng rồi chế code thôi.
Kết quả trả về là hai nghiệm n1 và n2, được phân cách với nhau bằng dấu ";", bạn có thể dùng hàm Split để lấy từng nghiệm.

Tính giai thừa đơn n! :
[vb]
Public Function TinhGiaiThua(n As Long) As Decimal
If n = 0 Then TinhGiaiThua = 1 : Exit Function
Dim i As Long, kq As Decimal
For i = 1 To n
kq = kq * i
Next
TinhGiaiThua = kq
End Function
[/vb]

Tính giai thừa kép n!! :
[vb]
Public Function TinhGiaiThuaKep(n As Long) As Decimal
If n <=1 Then TinhGiaiThuaKep = 1 : Exit Function
Dim i As Long, kq As Decimal
If n mod 2 = 1 Then
For i = 1 To n Step 2
kq = kq * i
Next
Else
For i = 2 to n Step 2
kq = kq * i
Next
End If
TinhGiaiThuaKep = kq
End Function
[/vb]

Tìm số nguyên tố:
[vb]
Public Function TimSoNguyenTo(n As Long) As String
Dim kq, i As Long, j As Long, k As Long
For i = 2 To n
k = 1
For j = 2 To i - 1
If i mod j = 0 Then k = 0
Next
If k = 1 Then kq = kq & i & ";"
Next
TimSoNguyenTo = Left$(kq, Len(kq) - 1)
End Function
[/vb]
Tương tự, bạn có thể dùng hàm Split để gán các giá trị vào mảng tùy thích.
Thú thực với các bạn là mình cũng không phải là giỏi VB6, nhưng cái quan trọng là chúng ta biết đưa nó vào để sử dụng đạt được mục đích đúng không các bạn :x

Kiểm tra dãy có phải là cấp số cộng hay không:
[vb]
Public Function KTDayCPLaCapSoCong(a As Variant, congsai As Integer) As Boolean
On Error Resume Next
Dim i As Integer, k As Integer, cur As String
i = 1: cur = a(i)
Do
If cur = a(i - 1) + congsai Then
k = 1
Else
KTDayCPLaCapSoCong = False
Exit Do
End If
i = i + 1
cur = a(i)
Loop Until cur = ""
If k = 1 Then KTDayCPLaCapSoCong = True
End Function
[/vb]
Oáp, mình đi ngủ đã, nào rảnh mình sẽ tiếp tục post tiếp mấy bài về tìm ước, bội, một vài bài về tính giai thừa, kiểm tra dãy số là cấp số nhân nữa.
Last edited by VuVanHoanh on Mon 14/03/2011 10:22 am, edited 2 times in total.


Since 2008...
One love! :x

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Sun 13/03/2011 7:57 pm

Dà, thưa Peter, Hoành rất cảm ơn những đóng góp, ý kiến của Peter. Nhưng vì Hoành chỉ mới lớp 8 :( , đầu óc chưa thực sự sáng suốt, chưa nghĩ ra được các code thực ngắn gọn, tối ưu. Vì vậy, Hoành cũng đã ghi ở trên, đại ý là: mong các bạn đóng góp thêm để topix được hoàn thiện hơn, nếu Peter có ý kiến hay làm được code ngắn gọn hơn, Peter cứ post lên đây để tiện thể Hoành cũng được tham khảo. ;)
Còn về thuật toán thì Hoành lấy những thuật toán tiêu biểu, dễ tính nhất mà Hoành từng biết, từng đọc được.
p/s: Hoành đã thử tìm kiếm với từ khóa "Một số mã tính toán" trước khi post bài này để tránh trùng lặp, và không có bài nào như ý Hoành muốn nên Hoành mới mạnh dạn post topix này. ;)


Tiếp tục :x :
Tìm bội theo số lượng cho trước:
  1. Public Function TimBoi(n As Long, soluong As Integer) As String
  2.     Dim i As Integer, kq As String
  3.     For i = 1 To soluong
  4.         kq = kq & n * i & ";"
  5.     Next
  6.     TimBoi = Left(kq, Len(kq) - 1)
  7. End Function
  8.  


Tìm ước:
[vb]
Public Function TimUoc(n As Long) As String
Dim i As Long, kq As String
For i = 1 To n
If n mod i = 0 Then kq = kq & i & ";"
Next
TimUoc = Left(kq, Len(kq) - 1)
End Function
[/vb]

Tính giai thừa nguyên tố:
kết hợp hai đoạn mã ở trên của mình lại vậy. Viết code ngại lắm :(
[vb]
Public Function TinhGiaiThuaNgTo(n As Integer) As Long
Dim kq As String, i As Long, snt As Variant
snt = Split(TimSoNguyenTo(n),";")
For i = 0 To InStr(TimSoNguyenTo(n))
kq = kq + TinhGiaiThua(snt(i))
Next
TinhGiaiThuaNgTo = kq
End Function
[/vb]

Kiểm tra tính hợp lệ của tam giác, tính chu vi, diện tích:
[vb]
Public Function KTTinhHLCuaTamGiac(a As Double, b As Double, c As Double, chuvi As Double, S As Double) As Boolean
Dim p As Double
p = (a + b + c)/2
If a + b > c And a + c > b And b + c > a And a > 0 And b > 0 And c > 0 Then
KTTinhHLCuaTamGiac = True
chuvi = a + b + c
S = sqr(p * (p - a) * (p - b) * (p - c))
Else
KTTinhHLCuaTamGiac = False
End If
End Function
[/vb]
Since 2008...
One love! :x

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Mon 14/03/2011 10:15 am

Cảm ơn ý kiến đóng góp của Peter, Hoành sẽ sửa lại code.
Và Hoành cũng đã nói ở trên: vì Hoành mới chỉ học lớp 8, chưa hiểu, chưa biết hết được. Hoành mới chỉ học cách để xác định một số nguyên tố thì cần chia số đó cho từng số từ hai đến chính nó - 1 mà thôi, Hoành chưa biết được là chỉ cần so sánh với căn của p. Dù sao cũng cảm ơn Peter vì đã cho Hoành biết thêm một công thức mới.
Và có lẽ topic này không còn ý nghĩa nữa, nên lock ngang đây.
Since 2008...
One love! :x

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Thu 17/03/2011 11:27 am

Sau khi được một số anh em động viên, em quyết định tiếp tục phát triển topic.
Mong anh em và các bạn tham gia đóng góp nhiệt tình...!! :x


Giải phương trình bậc ba:
  1. Const Pi = 4 * Atn(1)
  2. Public Function GiaiPTBacBa(a As Integer, b As Integer, c As Integer, d As Integer) As String
  3.     Dim u As Double, k As Double, delta As Double
  4.     Dim n1 As Double, n2 As Double, n3 As Double
  5.     delta = (b * b) - (3 * a * c)
  6.     If delta = 0 Then MsgBox "Delta = 0" : Exit Function
  7.     k = (9 * a * b * c - 2 * b^3 - 27 * a^2 * d)/(2 * sqr(Abs(delta)^3))
  8.     If delta > 0 Then
  9.         If Abs(k) <= 1 Then
  10.             MsgBox "Phương trình có ba nghiệm"
  11.             n1 = (2 * sqr(delta) * cos(acos(k)/3) - b)/(3 * a)
  12.             n2 = (2 * sqr(delta) * cos((acos(k)/3) - (2 * pi)/3) - b)/(3 * a)
  13.             n3 = (2 * sqr(delta) * cos((acos(k)/3) + (2 * pi)/3) - b)/(3 * a)
  14.             GiaiPTBacBa = n1 & ";" & n2 & ";" & n3
  15.         Else
  16.             MsgBox "Phương trình có một nghiệm duy nhất"
  17.             GiaiPTBacBa = ((sqr(delta) * Abs(k))/(3*a*k)*((Abs(k) + sqr(k^2 - 1))^(1/3) + (Abs(k) - sqr(k^2 - 1))^(1/3)) - (b/3*a)
  18.         End If
  19.     ElseIf delta = 0 Then
  20.         MsgBox "Phương trình có một nghiệm bội"
  21.         GiaiPTBacBa = (-b + (b^3 - 27* a^2 * d)^(1/3))/(3*a)
  22.     Else
  23.         MsgBox "Phương trình có một nghiệm duy nhất"
  24.         GiaiPTBacBa = (sqr(Abs(delta))/(3*a))*((k+sqr(k^2 + 1))^(1/3) + (k - sqr(k^2 + 1))^(1/3)) - (b/(3*a))
  25.     End If
  26. End Function
  27.  
  28. Pubic Function acos(x As Double) As Double
  29.     acos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
  30. End Function
  31.  
Last edited by VuVanHoanh on Thu 19/05/2011 8:51 pm, edited 3 times in total.
Since 2008...
One love! :x

User avatar
bangnhatquang68
Guru
Guru
Posts: 791
Joined: Tue 26/01/2010 12:44 pm
Location: Vĩ tuyến 17
Has thanked: 20 times
Been thanked: 38 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby bangnhatquang68 » Thu 17/03/2011 3:19 pm

Mời anh em lên facebook giao lưu nào!
http://www.facebook.com/groups/145823032176611/

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Sun 20/03/2011 1:38 pm

Dạ, vì em chưa học đến nên đành đọc mà tự code lấy thôi.
Since 2008...
One love! :x

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Fri 08/04/2011 9:16 pm

Đưa thêm cái tìm USCLN và BSCNN nữa nè:

1. ƯSCLN:
  1. Public Function USCLN(a As Long, b As Long) As Long
  2.     Dim a1 As Long, a2 As Long, n As Long
  3.     a1 = a: a2 = b
  4.     If a2 = 0 Or a1 = 0 Then USCLN = 0: Exit Function
  5.     Do
  6.         n = a2
  7.         a2 = a1 mod a2
  8.         a1 = n
  9.     Loop Until a2 = 0
  10.     USCLN = a1
  11. End Function
  12.  

///
* Đã sửa lại code và test. Ngày 13 tháng 04 năm 2011
///
2. BSCNN:
[vb]Public Function BSCNN(a As Long, b As Long) As Long
'Dùng kèm với hàm trên
If a = 0 Or b = 0 Then BSCNN = 0: Exit Function
BSCNN = (a * b)/USCLN(a, b)
End Function[/vb]
Last edited by VuVanHoanh on Wed 13/04/2011 10:28 am, edited 1 time in total.
Since 2008...
One love! :x

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Một số mã tính công thức toán học đơn giản

Postby truongphu » Sat 09/04/2011 4:26 pm

VuVanHoanh wrote: Loop Until a2 = 0
USCLN = a2

Vậy thì USCLN luôn luôn =0

Bạn nên test lại các code của mình

Tìm ước số chung lớn nhất và Bội số chung nhỏ nhất
http://www.caulacbovb.com/mp_details.php?pid=36765
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Wed 13/04/2011 10:34 am

Dạ, thưa bác Phú đáng kính của diễn đàn:
Đoạn code tìm ƯSCLN ở trên, cháu đã test :)
Cảm ơn bác đã góp ý! :)
Tất cả các Function trên, nhiều cái cháu tính bằng tay còn không ra :)
Nên cháu mới chỉ viết code dựa trên bài viết có giới thiệu công thức tính toán. :)
À, bác đã biết qua, vậy bác test hộ cháu nhé. Có lỗi gì để cháu khắc phục luôn :)
Thân gửi bác !!... :x
Since 2008...
One love! :x

User avatar
vuathongtin
Điều hành viên
Điều hành viên
Posts: 1028
Joined: Sun 02/05/2010 10:03 pm
Location: Xứ sở DG
Has thanked: 2 times
Been thanked: 105 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby vuathongtin » Sat 21/05/2011 6:30 am

Một số bài khác :
1. Đổi cơ số (chuyển nhanh giữa các cơ số: 8, 10, 16)
http://www.caulacbovb.com/forum/viewtopic.php?f=30&t=1174

hoặc
  1. Public Function doiso(ByVal k As Byte) As String
  2. Select Case k
  3.      Case 10: doiso = "A"
  4.      Case 11: doiso = "B"
  5.      Case 12: doiso = "C"
  6.      Case 13: doiso = "D"
  7.      Case 14: doiso = "E"
  8.      Case 15: doiso = "F"
  9.      Case Else '0..9'
  10.         doiso = Str(k)
  11. End Select
  12. End Function
  13. Public Function doichu(ByVal k As String) As Byte
  14. Select Case UCase(k)
  15.      Case "A": doichu = 10
  16.      Case "B": doichu = 11
  17.      Case "C": doichu = 12
  18.     Case "D": doichu = 13
  19.      Case "E": doichu = 14
  20.      Case "F": doichu = 15
  21.      Case Else '0..9'
  22.        doichu = Val(k)
  23. End Select
  24. End Function
  25. Public Function doi(ByVal n As Long, h As Byte) As String
  26.    doi = ""
  27. Do While n > 0
  28.    doi = Trim(doiso(n Mod h)) + doi
  29.    n = n \ h
  30. Loop
  31. End Function
  32. Public Function chuyen(ByVal s As String, h As Byte) As Long
  33. chuyen = 0
  34.        For i = 1 To Len(s)
  35.             chuyen = chuyen + doichu(Mid(s, i, 1)) * h ^ (Len(s) - i)
  36.       Next i
  37. End Function
  38.  
  39.  


2. Phân tích thừa số nguyên tố
[vb]Function phantichthuaso_ngto(ByVal n As Integer) As String
i = 2
Dim S As String
While (i <= n)
If ((n Mod i = 0)) Then
n = n \ i
If (n = 1) Then
S = S & i & " "
Else
S = S & i & " " & "*" & " "
End If
Else
i = i + 1
End If
Wend
phantichthuaso_ngto = S
End Function[/vb]

3. Kiểm tra số chính phương
là số có bình phương căn bậc 2 của nó bằng chính nó . Ví dụ : 9 = 3*3

Cách 1:
[vb]Function ChinhPhuong(n As Integer) As Boolean
ChinhPhuong = False
For i = 1 To n / 2
If i * i = n Then
ChinhPhuong = True
End If
Next
End Function[/vb]

Cách 2:dựa vào công thức :
n là chính phương <=> n= căn(n)^2

[vb]Function ChinhPhuong(n As Integer) As Boolean
ChinhPhuong = False
If n = (Fix(sqr(n)))^2 Then
ChinhPhuong = True
End If
End Function[/vb]

(chú ý : đừng nhầm căn(n)^2 với (căn(n))^2)

4. Số pitago : là số bình phương của số đó bằng tổng bình phương của 2 số nguyên khác
Ví dụ: 10 là số pitago vì 10^2=6^2 + 8^2

[vb]Function sopitago(n As Integer) As Boolean
For i = 1 To n – 2
For j = i+1 To n – 1
If (i ^ 2 + j ^ 2 = n ^ 2) Then sopitago = True: Exit Function
Next j
Next i
sopitago = False
End Function[/vb]
Bùi Thành Nhân
* Chuyên gia MMO
congtacvien.online

User avatar
bangnhatquang68
Guru
Guru
Posts: 791
Joined: Tue 26/01/2010 12:44 pm
Location: Vĩ tuyến 17
Has thanked: 20 times
Been thanked: 38 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby bangnhatquang68 » Thu 16/06/2011 6:31 am

UCLN
dùng đệ quy tính thử xem thế nào? :(
  1.  Function UCLN(ByVal a As Long, ByVal b As Long) As Long
  2.     If ((a = 0) Or (b = 0)) Then  USCLN = 1: Exit Function
  3.     Dim num As Long = (b Mod a)
  4.     If (num = 0) Then  USCLN = a: Exit Function
  5.     UCLN(num, a)
  6. End Function
  7.  
Mời anh em lên facebook giao lưu nào!
http://www.facebook.com/groups/145823032176611/

User avatar
bangnhatquang68
Guru
Guru
Posts: 791
Joined: Tue 26/01/2010 12:44 pm
Location: Vĩ tuyến 17
Has thanked: 20 times
Been thanked: 38 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby bangnhatquang68 » Fri 12/08/2011 8:04 pm

@Hoành:
rảnh thì em test lại cái phương trình bậc 3 ấy. anh kiểm tra thấy thằng này là hàng tự chế MADE TIN VỊT đó
anh test thử mà hình như nó ko chính xác cho lắm. có thể có vấn đề
Mời anh em lên facebook giao lưu nào!
http://www.facebook.com/groups/145823032176611/

shilroad
Posts: 1
Joined: Wed 28/12/2011 3:02 am

Re: Một số mã tính công thức toán học đơn giản

Postby shilroad » Wed 28/12/2011 6:25 pm

bạn VuVanHoanh ơi cho mình xin nick yahoo với nha , mình có 1 số vấn đề hok hiễu lắm ỡ code " Tìm USCLN và BSCNN " nick mình là : maximas1900 . mong bạn giúp đỡ mình , thank bạn

thuthuy.vitcon
Posts: 1
Joined: Tue 17/01/2012 10:26 am

Re: Một số mã tính công thức toán học đơn giản

Postby thuthuy.vitcon » Tue 17/01/2012 10:48 am

Tính giá trị biểu thức:
tg(x) - 3 Nếu x < 0
S = sin(x) + 2cos(y) Nếu 5 > x > 0
2x3 + y Trong các trường hợp còn lại
ai bit lam,giup t voi!
thank nhiu!

OKMimo
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 447
Joined: Fri 11/02/2011 3:36 pm
Has thanked: 107 times
Been thanked: 56 times

Re: Một số mã tính công thức toán học đơn giản

Postby OKMimo » Tue 17/01/2012 11:31 am

Tính giá trị biểu thức:
tg(x) - 3 Nếu x < 0
S = sin(x) + 2cos(y) Nếu 5 > x > 0
2x3 + y Trong các trường hợp còn lại
ai bit lam,giup t voi!
thank nhiu!


bạn thử nhé
  1. Private Sub Command1_Click()
  2. Dim x As Double, y As Double
  3. x = InputBox("nhap x=")
  4. y = InputBox("nhap y=")
  5. If Val(x) < 0 Then
  6. MsgBox "S= tan(x)-3 = tan(" & x & ")-3 = " & Tan(x) - 3
  7. ElseIf (Val(x) > 0 Or Val(x) < 5) Then
  8. MsgBox "S= sin(x)+2cos(y) = sin(" & x & ")+2cos(" & y & ") = " & Sin(x) + 2 * Cos(y)
  9. Else
  10. MsgBox "S= 2x^3+y = 2" & x & "^3+" & y & ") = " & 2 * x ^ 3 + y
  11. End If
  12. End Sub

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Tue 17/01/2012 12:31 pm

:D Đã hơn 3 hay 4 tháng rồi, VuVanHoanh không thể lên diễn đàn sinh hoạt cùng với câu lạc bộ được vì bận ôn thi :D giờ thi xong rồi thì VuVanHoanh lại trở lại :D
@shilroad: :D có gì thì bạn cứ trao đổi trực tiếp trên đây, mình giải thích cho :D chứ đừng pm Yahoo mình nha :D
@thuthuy.vitcon: code bạn OK Mimo đã giải rồi đó :D Mình không còn ý kiến gì. :D
Since 2008...
One love! :x

User avatar
bangnhatquang68
Guru
Guru
Posts: 791
Joined: Tue 26/01/2010 12:44 pm
Location: Vĩ tuyến 17
Has thanked: 20 times
Been thanked: 38 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby bangnhatquang68 » Tue 15/05/2012 6:21 pm

Chấc ngồi chơi tự dưng nghĩ cách giải pt bậc 3. tuy nó hơi chậm chậm :D đơn thuần về toán sơ cấp thôi

AX^3 + BX^2+ CX + D =0

<=>(x- k)(ax^2 + bx + c ) =0
a= A
b = B - kA
c = D/k
hệ số k được xác định bằng

chạy vòng lặp:
x(i+1) = xi - (AXi^3 + BXi^2+ CXi + D)/(3Axi^2 + 2Bxi + C)

giá trị được chấp nhận khi (x(i+1) - xi )<= esilon

tA có k vậy sẽ thu được pt bậc 2, giải pt bậc 2 thì OK rồi nhỉ?


tương tụ nếu với hàm f(x) =Ai*X^n +A(i-1)*X^(n-1)+..... +A0
<=> f(x)= (X - B0)g(x) = (X-B0)(X- B1)h(x)=....
<=> f(x)=(X-B0)(X-B1)(...)(X-Bn)

có thể giải được theo cách này, mặt dù rất phức tạp phải tại đệ quy hoặc vòng lặp khi giải nghiệm nhưng sẽ ra :)
Mời anh em lên facebook giao lưu nào!
http://www.facebook.com/groups/145823032176611/

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

Re: Một số mã tính công thức toán học đơn giản

Postby VuVanHoanh » Tue 15/05/2012 6:24 pm

haizz, em mò wikipedia, rồi chế biến code theo công thức cả... :|
Since 2008...
One love! :x

century
Posts: 1
Joined: Wed 04/11/2015 8:47 am

Re: Một số mã tính công thức toán học đơn giản

Postby century » Wed 04/11/2015 8:53 am

Anh chị ơi, em đang làm bài tập phải nộp ạ, đề : xác định xem AB có cắt đường tròn (0;R) không, biết tọa độ A,B,O và bán kính R. Mong anh chị giúp đỡ em ạ, em cảm ơn !!!


Return to “[VB] Bài viết hướng dẫn”

Who is online

Users browsing this forum: No registered users and 0 guests