24小时热门版块排行榜    

查看: 2836  |  回复: 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的回帖

liangzidou

银虫 (小有名气)

jjdg:把方程具体的值给出来 2010-04-20 12:52
方程就是f = z ^ 3 + xl * z ^ 2 + xm * z + xn=0
其中xl,xm,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


最后得到的结果只有一个根。
2楼2010-04-20 10:05:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangzidou

银虫 (小有名气)

方程具体值如下:
xl=-0.9964370251388
xm=0.0345649889308
xn=-1.35939438932387E-04
只得到一个液相根为
z=4.51886001901873E-03
6楼2010-04-20 23:20:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangzidou

银虫 (小有名气)

wangen994:求助完成请在标题后添加【已完成】 2010-04-21 12:26
嗯,我把这段程序放到整个程序里再仔细看看,可能是系数输入的有差错了。谢谢啊
9楼2010-04-21 11:06:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangzidou

银虫 (小有名气)

是我用vb编程中要用到解立方型方程的这段程序,呵呵
12楼2010-04-22 17:50:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangzidou

银虫 (小有名气)

引用回帖:
Originally posted by phychemlxd at 2010-04-21 18:00:29:
看到你说热力学,来个C/C++版本的,如果你能知道压力对压缩因子/体积/密度的导数(二阶导数)信息的话,用迭代法求也不错,毕竟有时候三角函数计算也很耗时

#include
#include

呵呵,谢谢你了,我没有系统的学过编程语言,不会用C语言,就是vb也是一知半解,不过还是很感谢你提供的解立方型方程的程序。
13楼2010-04-22 17:55:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liangzidou

银虫 (小有名气)


jjdg(金币+1):欢迎常来 2010-04-25 01:40
引用回帖:
Originally posted by phychemlxd at 2010-04-23 09:16:17:
有热力学的问题我们可以探讨,如果是做热力学模型计算的话,我在方法上还是能提供一点点小小的帮忙的,呵呵。

嗯,好的,呵呵
15楼2010-04-24 23:23:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 liangzidou 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见