24小时热门版块排行榜    

查看: 875  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

Xiaoqiuzao

新虫 (著名写手)

[求助] 思考怎样用vb语言解该非齐次方程,重谢

2644.07a^(1/3)+a-11980.96=0
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

牛顿迭代法应该可行
6楼2011-10-08 15:03:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

mchen10

金虫 (正式写手)

【答案】应助回帖

★ ★
jjdg(金币+2): 辛苦了 2011-10-07 12:23:40
Xiaoqiuzao(金币+22): 谢谢啦 2011-10-07 22:17:04
不是这个领域的 纯属门外汉 不保证我说的能用呵..

简化起见,把你的方程写成以下形式:

a^(1/3) + a/2600 -5 = 0

每一项除以a^(1/3)变为:
1+a^(2/3) - 5a^(-1/3) = 0

令x = a^(1/3)
有1 + x^2/2600 - 5x^(-1) = 0

x=13000/(x*x + 2600)

迭带几次就出来x了, a=x^3
更痛苦的是梦没醒路已经不能走了
2楼2011-10-07 03:58:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mchen10

金虫 (正式写手)

★ ★
jjdg(金币+2): 辛苦了 2011-10-07 12:23:57
引用回帖:
2楼: Originally posted by mchen10 at 2011-10-06 07:58:39:
不是这个领域的 纯属门外汉 不保证我说的能用呵..

简化起见,把你的方程写成以下形式:

a^(1/3) + a/2600 -5 = 0

每一项除以a^(1/3)变为:
1+a^(2/3) - 5a^(-1/3) = 0

令x = a^(1/3)
有1 + x^2/2600 ...

CODE:
Python Code:

x=0
while True:
  y=13000.0/(x*x+2600.0)
  if abs(y-x) < 0.001:
    print "y=", y
    print "x=", x
    break
  x=y

更痛苦的是梦没醒路已经不能走了
3楼2011-10-07 04:02:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

deephill

铁杆木虫 (职业作家)


xzhdty(金币+1): 欢迎常来讨论 2011-10-08 14:15:34
简化起见,把你的方程写成以下形式:
a^(1/3) + a/2600 -5 = 0
令x = a^(1/3) 方程可以写成 x^3/2600+x-5=0
令y=x^3/2600+x-5 只要y 无限接近0就可以了,那就是判断y的绝对值。
vb代码:
    Dim x, y  As Double
    For x = 4.9532 To 10 Step 0.00000001
        y = x * x * x / 2600 + x - 5
        Debug.Print "y=", y; vbTab; "x=", x
        If Abs(y) < 0.0000001 Then Exit For
    Next x
    Print "结果 y=", y & vbTab & "结果 x=", x

自己调节step的值和判断abs(y)的值从大到小,就可以逐步提高精度。
4楼2011-10-08 11:29:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见