注册 登录
编程论坛 VB6论坛

超越方程求解

fengyouliang 发布于 2012-11-20 15:49, 407 次点击
大侠们,帮帮忙吧。

(56.08479352*sin(α))/(0.840416116+sin(α))=(56.08479352-55.9063899*cos(α))/(1-sin(0.572745737-α))

角度单位为弧度。
3 回复
#2
风吹过b2012-11-21 16:38
Option Explicit

'四个需要确定的值。
'注意,这四个值也可以使用变量的形式 置入,此处是示例
Const 步进 = 0.0001           '每次测试的变化值
Const 范围1 = 1               '在那个范围内进行测试,不同的范围可能有不同的答案
Const 范围2 = 2
Const 精度 = 0.00001          '达到某个精度认为是所需要的值

'这是最简单的 循环算法,还有 其它算法 ,有些算法 描述比较简单,但写起来比较复杂。
'如,有某个区间,计算二个端点,然后根据精度,决定移动其中一个端点,继续计算,再继续移动,直到接近精度为止。

Private Sub Command1_Click()
'(56.08479352*sin(α))/(0.840416116+sin(α))=(56.08479352-55.9063899*cos(α))/(1-sin(0.572745737-α))


Dim i As Double
Dim j1 As Double, j2 As Double
Dim z1 As Double, ij1 As Double


z1 = 精度

'循环计算,
For i = 范围1 To 范围2 Step 步进
j1 = (56.08479352 * Sin(i)) / (0.840416116 + Sin(i))
j2 = (56.08479352 - 55.9063899 * Cos(i)) / (1 - Sin(0.572745737 - i))
   
    '只保留一个最接近的,也可以输出所有达到精度的值
    If Abs(j1 - j2) < z1 Then
        z1 = j1 - j2
        ij1 = i
    End If
Next i

'debug
Print ij1; z1, 精度

'结果
If ij1 = 0 Then
    MsgBox "在指定的区间未找到解"
Else
    MsgBox "在指定的敬意找到的最接近的解:" & ij1
End If

End Sub

1.57079599995304
#3
fengyouliang2012-11-23 11:48
回复 2楼 风吹过b
大侠,结果不对啊
#4
fengyouliang2012-11-30 14:34
版主,在0-1间取值,结果是多少呢?
1