Bạn chạy code createP() thì nó sẽ lấy số liệu (3 điềm) từ 1 đồ thị trước đó là (Xb, Yb) để tìm ra a,b,c (ax^2 + bx + c=y) rùi tạo ra 1 dãy số liệu mới ở cột Ya. Nếu 2 dãy số giống nhau thì Oki ^^
Vấn đề là cái hàm FindParabol([A4], [B4], [A14], [B14], [A40], [D40]) hok cho ra a,b,c đúng.
E cố tình lấy cột Yb là từ 1 hàm Parabol để chắc chắn là tồn tại 1 Parabol chứ hok phải số liệu ma. Rùi nếu mà hàm FindParabol tìm được thì ít nhất nó phải giống hàm Parabol có trước đó chứ? Đằng này nó lại hok giống?
E phải làm sao cho kết quả tìm đc a,b,c là A,B,C ban đầu vậy anh?
Tôi sửa toàn bộ FindParabol và sửa lại lỗi trong createP
[GPECODE=vb]
Function FindParabol(x1 As Long, y1 As Long, x2 As Long, y2 As Long, x3 As Long, y3 As Long)
Dim A(3), det As Long
' det = (x1 ^ 2 - x3 ^ 2) * (x2 - x3) - (x2 ^ 2 - x3 ^ 2) * (x1 - x3) = (x1 - x3) * (x2 - x3) * (x1 - x2)
det = (x1 - x3) * (x2 - x3) * (x1 - x2)
If det = 0 Then
A(0) = "N/A"
A(1) = "N/A"
A(2) = "N/A"
Else
A(0) = ((y1 - y3) * (x2 - x3) - (y2 - y3) * (x1 - x3)) / det
A(1) = ((y1 - y3) * (x3 - x2) * (x3 + x2) + (y2 - y3) * (x1 - x3) * (x1 + x3)) / det
A(2) = y1 - x1 * (A(0) * x1 + A(1))
End If
FindParabol = A
End Function
Sub createP()
Dim A As Variant
A = FindParabol([A4], [B4], [A14], [B14], [A40], [B40]) ' <-- truoc do la D40
For i = 2 To 43
Cells(i, 3) = A(0) * Cells(i, 1) ^ 2 + A(1) * Cells(i, 1) + A(2)
Next i
End Sub
[/GPECODE]
-------------
Vài lời:
Rút c từ pt. 3 thế vào pt. 1, pt.2 ta có hệ 2 pt. và 2 ẩn a, b
Để giải hệ ta tính ĐỊNH THỨC --> ôn lại nhé