Mấy anh giúp em nội suy 2 chiều với. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

trunglee123

Thành viên chính thức
Tham gia
20/9/12
Bài viết
64
Được thích
2
Anh nào giúp em nội suy 1 số mà dùng hàm trong excel (hoặc viết VBA) giúp em với . Em có file đính kèm đây.
 

File đính kèm

Theo như nội dung trong file bạn gởi, thật tình mình không hiểu đây là kiểu nội suy mấy chiều nữa....
Nếu như nội suy 2 chiều thì bạn làm như sau: (mình chỉ copy của ai đó viết rồi gởi cho bạn thôi, code này không phải của mình hihi)


Public Mang1(1000) As Double
Public Mang2(1000) As Double
Public Const mMax = 1
Public Const nMax = 1
Public bang(mMax, nMax) As Double


Public Function NSTT(Mang1, Mang2, Gia_tri As Double) As Double
Dim i As Integer
Dim delta As Double
If Gia_tri <= Mang1(1) Then
NSTT = Mang2(1)
Else
i = 0
Do
i = i + 1
Loop Until (Mang1(i) >= Gia_tri)
delta = (Mang2(i) - Mang2(i - 1)) / (Mang1(i) - Mang1(i - 1))
NSTT = delta * (Gia_tri - Mang1(i - 1)) + Mang2(i - 1)
End If
End Function
Public Function N2G(X, x1, x2, y1, y2) As Double
N2G = y1 + (X - x1) * (y2 - y1) / (x2 - x1)
End Function
Public Function NS2C(bang, GtTraCotdau As Double, GtTraHangdau As Double) As Double


Dim i, j, nc, nh As Integer
Dim gcc, ghh As Double
Dim Q1, Q2, delt, Qtt, gth1, gth2, gtc1, gtc2 As Double
Dim Gtt, gtt1, gtt2, delta As Double


nc = 1
Do
nc = nc + 1
Loop Until bang(1, nc + 1) < bang(1, nc)


nh = 1
Do
nh = nh + 1
Loop Until bang(nh + 1, 1) < bang(nh, 1)
gcc = GtTraCotdau
ghh = GtTraHangdau
i = 1
Do
i = i + 1
Loop Until (bang(i, 1) > gcc) Or (i = nh)
gtc2 = bang(i, 1)
gtc1 = bang(i - 1, 1)
j = 1
Do
j = j + 1
Loop Until (bang(1, j) > ghh) Or (j = nc)
gth2 = bang(1, j)
gth1 = bang(1, j - 1)
gtt1 = N2G(gcc, gtc1, gtc2, bang(i - 1, j - 1), bang(i, j - 1))
gtt2 = N2G(gcc, gtc1, gtc2, bang(i - 1, j), bang(i, j))
Gtt = N2G(ghh, gth1, gth2, gtt1, gtt2)
NS2C = Gtt


End Function
Public Function Hk(Q, b, m As Double) As Double
Dim W, hkk, hkcn, Oon As Double
hkcn = (((Q / b) ^ 2) / 9.81) ^ (1 / 3)
Oon = m * hkcn / b
'hkk = 0.00005
' Do
' hkk = hkk + 0.0001
' W = (b + (m * hkk)) * hkk
' VT = Q * Q / 9.81
' VP = W * W * W / (b + (2 * m * hkk))
' Loop While VT > VP
'Hk = hkk
Hk = hkcn * (1 - (Oon / 3) + (0.105 * (Oon ^ 2)))
End Function
Public Function Ho(Q, b, m, n, i As Double) As Double
Dim W, X, h0, VT, VP As Double
h0 = 0.0001
Do
h0 = h0 + 0.0001
W = (b + (m * h0)) * h0
X = b + (Sqr(1 + (m * m)) * h0 * 2)
VP = ((W ^ 5) / (X ^ 2)) ^ (1 / 3)
VT = n * Q / (i ^ (1 / 2))
Loop While VT > VP
Ho = h0
End Function
(Lưu Ý: code trên còn dùng cho nhiều thứ khác nên hơi lung tung, bạn xem cái nào cần thì sửa mà dùng cho phù hợp với mục đích của mình).
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom