24小时热门版块排行榜    

查看: 2240  |  回复: 15
本帖产生 2 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

liangzidou

银虫 (小有名气)

[交流] 【求助】求助:vb编程中用牛顿迭代解三次方程为什么只得到一个根?【已完成】已有5人参与

我在用vb编写中,遇到这样一个问题,解一个一元三次方程只得到一个根,实际上不只一个根。请各位高手帮忙找一下错误。
Private Sub Command1_Click()
Dim r, p, t, w, pc, tc, m, a, b, ca, cb, xl, xm, xn As Double
r = 8.314
p = 101.325
t = 301
pc = 3384
tc = 460.4
w = 0.227
m = 0.37464 + 1.5422 * w + 0.2699 * w ^ 2
tr = t / tc
a = 0.45723553 * r ^ 2 * tc ^ 2 * (1 + m * (1 - Sqr(tr))) ^ 2 / pc
b = 0.077796074 * r * tc / pc
Print "a="; a, "b="; b
ca = a * p / (r ^ 2 * t ^ 2)
cb = b * p / (r * t)
xl = cb - 1
xm = -3 * cb ^ 2 - 2 * cb + ca
xn = cb ^ 3 + cb ^ 2 - ca * cb
Print "A="; ca, "B="; cb
Print "xl="; xl, "xm="; xm
Print "xn="; xn
Dim f, z As Single
z = 0.01
Do
z = z1
f = z ^ 3 + xl * z ^ 2 + xm * z + xn
f1 = 3 * z ^ 2 + 2 * xl * z + xm
z1 = z - f / f1
Loop While Abs(z - z1) >= 0.0005
Print z1
End Sub

[ Last edited by liangzidou on 2010-5-15 at 22:22 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wangen994(金币+2):主要还是算符 2010-04-21 12:26
wangen994(金币+1):活动期间额外奖励 2010-04-21 12:26
这个貌似和VB没关系吧,只是解方程的算法问题。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
10楼2010-04-21 11:18:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 liangzidou 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见