Private Sub Command1_Click()
Dim Qa As Single
Dim Qb As Single
Dim Qc As Single
Dim Ka As Single
Dim Kb As Single
Dim Kc As Double
Dim x As Double
Dim Pmax As Double
Dim Fx As Double
Dim Fx1 As Double
Dim X1 As Double
Dim Da As Double
Dim Db As Double
Dim Dc As Double
Qa = Val(Text1.Text)
Qb = Val(Text2.Text)
Qc = Val(Text3.Text)
Ka = Val(Text4.Text)
Kb = Val(Text5.Text)
Kc = Val(Text6.Text)
Pmax = Val(Text9.Text)
Dx = Ka * Qb * 1 + Kb * Qc * 1 + Kc * Qa * 1 - 1 * Qb * Kc - Qa * Kb * 1 - Qc * 1 * Ka
Dy = (Qa ^ 1.75) * Kb * 1 + (Qb ^ 1.75) * Kc * 1 + Ka * 1 * (Qc ^ 1.75) - 1 * Kb * (Qc ^ 1.75) - 1 * Kc * (Qa ^ 1.75) - Ka * (Qb ^ 1.75) * 1
Dz = (Qa ^ 1.75) * Qb * Kc + (Qb ^ 1.75) * Qc * Ka + Qa * Kb * (Qc ^ 1.75) - Ka * Qb * (Qc ^ 1.75) - Kb * Qc * (Qa ^ 1.75) - Kc * Qa * (Qb ^ 1.75)
dd = (Qa ^ 1.75) * Qb * 1 + (Qb ^ 1.75) * Qc * 1 + Qa * 1 * (Qc ^ 1.75) - 1 * Qb * (Qc ^ 1.75) - 1 * Qc * (Qa ^ 1.75) - Qa * (Qb ^ 1.75) * 1
Da = Dx / dd
Db = Dy / dd
Dc = Dz / dd Do
Fx = Pmax - 2.75 * Da * (x ^ 1.75) - 2 * Db * x - Dc
Fx1 = -2.75 * 1.75 * Da * x ^ 0.75 - 2 * Db
X1 = x
x = X1 - Fx / Fx1
Loop Until Abs(X1 - x) < 0.0001
到Fx那里问题就出来了,请教该怎么该
过程是先解了一个三元一次方程,后面是用牛顿迭代法解一个一元多次方程
Dim Qa As Single
Dim Qb As Single
Dim Qc As Single
Dim Ka As Single
Dim Kb As Single
Dim Kc As Double
Dim x As Double
Dim Pmax As Double
Dim Fx As Double
Dim Fx1 As Double
Dim X1 As Double
Dim Da As Double
Dim Db As Double
Dim Dc As Double
Qa = Val(Text1.Text)
Qb = Val(Text2.Text)
Qc = Val(Text3.Text)
Ka = Val(Text4.Text)
Kb = Val(Text5.Text)
Kc = Val(Text6.Text)
Pmax = Val(Text9.Text)
Dx = Ka * Qb * 1 + Kb * Qc * 1 + Kc * Qa * 1 - 1 * Qb * Kc - Qa * Kb * 1 - Qc * 1 * Ka
Dy = (Qa ^ 1.75) * Kb * 1 + (Qb ^ 1.75) * Kc * 1 + Ka * 1 * (Qc ^ 1.75) - 1 * Kb * (Qc ^ 1.75) - 1 * Kc * (Qa ^ 1.75) - Ka * (Qb ^ 1.75) * 1
Dz = (Qa ^ 1.75) * Qb * Kc + (Qb ^ 1.75) * Qc * Ka + Qa * Kb * (Qc ^ 1.75) - Ka * Qb * (Qc ^ 1.75) - Kb * Qc * (Qa ^ 1.75) - Kc * Qa * (Qb ^ 1.75)
dd = (Qa ^ 1.75) * Qb * 1 + (Qb ^ 1.75) * Qc * 1 + Qa * 1 * (Qc ^ 1.75) - 1 * Qb * (Qc ^ 1.75) - 1 * Qc * (Qa ^ 1.75) - Qa * (Qb ^ 1.75) * 1
Da = Dx / dd
Db = Dy / dd
Dc = Dz / dd Do
Fx = Pmax - 2.75 * Da * (x ^ 1.75) - 2 * Db * x - Dc
Fx1 = -2.75 * 1.75 * Da * x ^ 0.75 - 2 * Db
X1 = x
x = X1 - Fx / Fx1
Loop Until Abs(X1 - x) < 0.0001
到Fx那里问题就出来了,请教该怎么该
过程是先解了一个三元一次方程,后面是用牛顿迭代法解一个一元多次方程
