| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1099 人关注过本帖
标题:那位朋友帮我写个很简单的程序啊
只看楼主 加入收藏
huotoumao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-8
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
那位朋友帮我写个很简单的程序啊
这个是题目:
图片附件: 游客没有浏览图片的权限,请 登录注册


其中a,b,R就直接用数据代入就可以了。不用公式的,公式只要用到那个求V的公式就可以了,对你们来说应该都是非常简单的。希望大家帮帮忙。

结果要弄成差不多这个样子的……
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 huotoumao 于 2010-4-8 15:13 编辑 ]
搜索更多相关主题的帖子: 朋友 
2010-04-08 15:11
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:5 
'我在VB环境里,好像有问题,没编译执行.你看着办吧.

Option Explicit
Const a As Double = 1350600#       '1.3506*10^6
Const b As Double = 38.6417
Const R As Double = 82.06


Private Sub Command1_Click()
Dim P As Double
Dim T As Double
Dim V As Double

If IsNumeric(Text1.Text) And IsNumeric(Text2.Text) Then
    P = Val(Text1.Text)
    T = Val(Text2.Text)
   
    V = (R * T) / (P + a / (V * V)) + b
   
    MsgBox V
    'text3.Text = V

Else
    MsgBox "请输入 P 和 T 的值."
End If
End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2010-04-08 15:55
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:5 
方程的左右两边都有v,它们是同一个v吗? 如果是,则是个三次方程,怎么能直接代数进去?
2010-04-08 21:47
fotomaker
Rank: 2
等 级:论坛游民
帖 子:33
专家分:60
注 册:2009-2-20
收藏
得分:5 
回复 2楼 风吹过b
编译后,出错提示“除数为零”
2010-04-08 21:54
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
我在编程环境里也出这个问题,
但没发现任何错误,然后直接点继续执行,又过了.

所以我也郁闷啊.

授人于鱼,不如授人于渔
早已停用QQ了
2010-04-09 10:15
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:5 
Double 类型的默认值为 0
V 定义为Double类型后并没有赋值,a / (V * V) 表达式中V*V仍是0,当然会有除数为0的提示。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2010-04-09 12:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
那就是我写错了.我看错了题目了.

那这个方程,就不能这样解了.
需要对这个方程进行变换.
或者 需要在一个极大的范围内进行求解.



授人于鱼,不如授人于渔
早已停用QQ了
2010-04-09 13:00
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
'程序修改如下: 结果需要四舍五入到 1位小数.如果你需要多位小数,请自己修改,有提示.
'采用的方法是 穷举法 ,方程进行了变形.

Option Explicit

Const a As Double = 1350600#       '1.3506*10^6
Const b As Double = 38.6417
Const R As Double = 82.06


Private Sub Command1_Click()
Dim P As Double
Dim T As Double
Dim V As Double

If IsNumeric(Text1.Text) And IsNumeric(Text2.Text) Then
    P = Val(Text1.Text)
    T = Val(Text2.Text)
   
    For V = 1 To 50000 Step 0.1                                          '小数位1
        'Debug.Print V - (R * T) / (P + a / (V * V)) - b
        If Abs(V - (R * T) / (P + a / (V * V)) - b) < 0.01 Then           '精度
            Exit For
        End If
    Next V
   
    Debug.Print V - (R * T) / (P + a / (V * V)) - b             '显示结果的最后值
   
    MsgBox V
    'text3.Text = V

Else
    MsgBox "请输入 P 和 T 的值."
End If
End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2010-04-09 13:09
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
我测试时,测试能达到的最高精度如下:
    For V = 1 To 5000 Step 0.0001                                          '小数位1
        If Abs(V - (R * T) / (P + a / (V * V)) - b) < 0.00001 Then           '精度


结果是:
222.11310000625
循环里精度是 4 位小数, 精度里只能达到 5 位小数.最多只能比循环里多一位小数.
所以这个结果需要四舍五入到 4位小数.


授人于鱼,不如授人于渔
早已停用QQ了
2010-04-09 13:13
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
Option Explicit

Const a As Double = 1350600
Const b As Double = 38.6417
Const r As Double = 82.06

Private Sub Command1_Click()
    Dim p As Double, t As Double, v As Double
    Dim v0 As Double, temp As Double
    If IsNumeric(Text1) And IsNumeric(Text2) Then
        p = Val(Text1)
        t = Val(Text2)
        temp = 300                                   '初始值设定
        v0 = 300
        v = 250
        Do While Abs(temp - v) > 0.00001                   '迭代部分,精度可自己调整
            temp = v
            v = (r * t) / (p + a / (v0 * v0)) + b
            v0 = v
            Debug.Print v
        Loop
        Text3 = CStr(v)
    End If
End Sub
借用版主的代码
穷举法好像有点慢,按楼主意思,应该是用迭代
2010-04-12 21:13
快速回复:那位朋友帮我写个很简单的程序啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024814 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved