VB中三角函数计算的问题。求高手解答。

我想要通过VB编程来计算两个向量相加的结果。首先,向量相加的计算是这样的:我在程序中设置了两个函数,Amplitude()和Angle(),前一个函数用于计算向量相加后的... 我想要通过VB编程来计算两个向量相加的结果。
首先,向量相加的计算是这样的:

我在程序中设置了两个函数,Amplitude()和Angle(),前一个函数用于计算向量相加后的幅值,后一个函数用于计算向量相加后的相角。
但是我发现出现了这样一个问题:

对于以上的情况,高手可以指导一下我要怎么样解决么,我要怎样才能得到正确的结果。
倾尽所有财富值求一个解答~~~~~救救我吧~~~~~><
展开
 我来答
wingwf2000
2013-06-05 · TA获得超过1万个赞
知道大有可为答主
回答量:5889
采纳率:33%
帮助的人:1711万
展开全部

Const Pi As Double = 3.1415926
Const rad As Double = 180# / Pi

Private Sub Command1_Click()
    Dim rU1 As Double    'U1的摸
    Dim rT1 As Double    'U1的角度
    Dim rU2 As Double    'U2的模
    Dim rT2 As Double    'U2的角度
    Dim rU As Double    'U的模
    Dim rT As Double    'U的角度
    Dim x1 As Double    'U1的实部
    Dim y1 As Double    'U1的虚部
    Dim x2 As Double    'U2的实部
    Dim y2 As Double    'U2的虚部
    
    Dim x As Double    'U的实部
    Dim y As Double    'U的虚部
    
    rU1 = CDbl(U1.Text)    'U1的模
    rT1 = CDbl(T1.Text) / rad    'U1的角度,输入的是°,换算成弧度
    rU2 = CDbl(U2.Text)    'U2的模
    rT2 = CDbl(T2.Text) / rad     'U2的角度,输入的是°,换算成弧度

   
    x1 = rU1 * Cos(rT1)    'U1实部
    y1 = rU1 * Sin(rT1)    'U1虚部

    x2 = rU2 * Cos(rT2)    'U2实部
    y2 = rU2 * Sin(rT2)    'U2虚部    


    x = x1 + x2    'U的实部
    y = y1 + y2    'U的虚部
    
    U.Text = CStr(Sqr(x * x + y * y))    'U的模
    
    If x = 0 Then    '如果实部为0,则直接求角度,因为此时不能使用反正切函数
        If y = 0 Then    '如果虚部也为0,则就假定角度为0,因为复数为0时幅角没有意义
            rT = 0
        ElseIf y > 0 Then    '如果虚部大于0则落在y轴的上半轴
            rT = Pi / 2
        Else    '如果虚部小于0则落在y轴下半轴
            rT = 3 * Pi / 2
        End If
    Else    '先不考虑象限计算角度
        rT = Atn(y / x)
    End If
    
    If x >= 0 Then    '如果位于右半平面则直接取反正切的函数
        rT = rT * rad
    Else    '否则位于左半平面则修正180°
        rT = (rT + Pi) * rad
    End If
    
    T.Text = CStr(rT)    '显示转化后的角度
End Sub

Private Sub Form_Load()
    U1.Text = "0"
    T1.Text = "0"
    U2.Text = "0"
    T2.Text = "0"
    U.Text = "0"
    T.Text = "0"
End Sub



寒信HK
2013-06-05 · TA获得超过1876个赞
知道大有可为答主
回答量:1326
采纳率:92%
帮助的人:393万
展开全部
把向量转化为复数形式进行加减,完了再转化的模角的形式
追问
不太懂你的意思,如果要转化为复数形式,那就有个j,个人觉得再VB里更难表示。
追答
设第一个向量为a1 +b1*i,第二个向量为a2 +b2 * i,他们的和是(a1+a2)+(b1+b2)*i ,判断这个复数在哪个象限,然后转换成模角后看是否一致,不一致就加180
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式