首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

好久没写代码了,写个复数种试试看

2011-12-21 
好久没写代码了,写个复数类试试看复数常用的形式有两种,一是定义式,即za+bi,其中a为实部b为虚部,二是指数

好久没写代码了,写个复数类试试看
复数常用的形式有两种,一是定义式,即z=a+bi,其中a为实部b为虚部,二是指数式,即z=rExp(Qi),其中r为模Q为辐角,两者通过z=a+bi=r(cosQ+isinQ)来转换.
在复数间运算中,加减用定义式方便,乘除用指数式快捷,在开n次方求n次幂时,更是需要指数式.
下面给出代码,幂方运算还没验证,可能有错,因为那些数学我也丢得差不多了.

欢迎指正.也只是练习.

Complex.ComplexBase.vb

VB.NET code
Partial Class Complex    Private MustInherit Class ComplexBase        Protected gMaster As Double '实部或模        Protected gSecondary As Double '虚部或辐角        Private gIsNAN As Boolean = False '数据无效标志        Private gRoundDigits As Integer = -1 '输出小数有效位。在0至15之间。如是负数,则不取舍        Sub New()            Me.Load(0, 0)        End Sub        Sub New(ByVal master As Double, ByVal secondary As Double)            Me.DoBeforeLoad(master, secondary) '使用(模,辐角)表示时,模不能为负值            Me.Load(master, secondary)        End Sub        Protected Sub Load(ByVal master As Double, ByVal secondary As Double)            Me.gMaster = master            Me.gSecondary = secondary            DoAfterLoad() '使用(模,辐角)表示时,在此处理辐角主值            Me.CheckNAN() '测试数据是否无效        End Sub        Protected Overridable Sub DoBeforeLoad(ByVal master As Double, ByVal secondary As Double)        End Sub        Protected Overridable Sub DoAfterLoad()        End Sub        Public ReadOnly Property IsNAN() As Boolean            Get                Return gIsNAN            End Get        End Property        Protected MustOverride Function InternalCheckNAN() As Boolean '实现数据无效判定        Public Sub CheckNAN()            gIsNAN = InternalCheckNAN()        End Sub        Public Property RoundDigits() As Integer            Get                Return gRoundDigits            End Get            Set(ByVal value As Integer)                If value > 15 Then                    gRoundDigits = 15                Else                    gRoundDigits = value                End If            End Set        End Property        '小数位取舍        Protected Function Round(ByVal value As Double) As Double            If Me.RoundDigits < 0 Then Return value            Return Math.Round(value, Me.RoundDigits)        End Function        '小数位取舍后输出为字串        Protected Function RoundString(ByVal value As Double, Optional ByVal NotSign As Boolean = True) As String            Dim tmp As Double = value            If NotSign Then '忽略正负号                If tmp < 0 Then                    tmp = -tmp                End If            End If            Return Round(tmp).ToString        End Function        MustOverride Sub Add(ByVal value As Object)        MustOverride Sub Subtract(ByVal value As Object)        MustOverride Sub Multy(ByVal value As Object)        MustOverride Sub Divide(ByVal value As Object)        MustOverride Overloads Function ToString(ByVal format As String) As String    End ClassEnd Class


[解决办法]
复数计算差不多都还给老师了,看到这个帖子,趁机捡点回来
[解决办法]
要是c#的就更好了 呵呵
[解决办法]
收集~~
[解决办法]
多谢楼主分享~
[解决办法]
我差点忘了还有复数这个东西。高中学的,好像。
[解决办法]
呵呵。structer ,operater override .....
[解决办法]
小妹也来学习了 

http://hi.baidu.com/hhh3h
这么难给是有病
[解决办法]
学习


------解决方案--------------------


收藏!谢谢了。
[解决办法]
收藏,
绝对经典啊

[解决办法]
顶,PF~
[解决办法]
复数是什么
[解决办法]
恩,厉害,学习
[解决办法]
樓主,你就是我要追尋的偶像啊。。。。。敬佩!
[解决办法]
学习 学习
[解决办法]
很全面
学习
[解决办法]
不錯
[解决办法]
煙大俠,去你博客看到好多適合我們這些初學者的文章。希望能多發表些,好讓我們這些新手學多點知識。呵呵。
[解决办法]
不错,C#就好了,以前没接触这方面的复数需求,收藏了。
[解决办法]
稍微挑点毛病:
1、

VB.NET code
    Public Overrides Function Equals(ByVal obj As Object) As Boolean        If TypeOf obj Is Complex Then            Return (Me = CType(obj, Complex))        End If        Return False    End Function
[解决办法]
Complex2里面的乘方有点问题,
Public Sub Pow(ByVal n As Double)
Dim mModulus As Double = Math.Pow(Me.Modulus, n)
Dim mArgument As Double = Me.Argument * n
Me.Load(mModulus, mArgument)
End Sub
n应该只能是整数,而不应该是实数。
虽然这个方法不会对外暴露,但是还是改成整数比较好。
[解决办法]
学习了,谢谢LZ分享
[解决办法]
学习
[解决办法]
学习
[解决办法]
顶一个
[解决办法]
嗯,不错,代码都是次要的——关键算法


大多数都还给老师了——前些日子写一个雷达图的绘制,没累死我——所有的正弦余弦。。。都忘记了,汗~~

圆形的点定位。。。就是计算上糊涂。。。当年初中的数学知识,中考那时候可是满分阿。。。都不记得了。。。
[解决办法]
mark
[解决办法]
mark
[解决办法]
我用的是C#,VB不熟悉。
[解决办法]
...长.... 强
[解决办法]
留个记号,以备不时只需
[解决办法]
收藏
[解决办法]
哈哈~强,收下了!多谢!^_^
[解决办法]
友情up下,谢谢啦!
[解决办法]
好东西啊~
[解决办法]
弓虽 ! ! !
[解决办法]
天书,又见天书!

收藏,慢慢地看,直到看不懂为止
------解决方案--------------------


汗,这些数据对象基本上忘得差不多了,学习!
[解决办法]
这贴好牛啊
[解决办法]
看到天荒地老啊~
[解决办法]
收藏~
谢楼主
[解决办法]
不急.留着慢慢看
[解决办法]
留個記號,以備后用。哈
[解决办法]
mark
[解决办法]
NB
[解决办法]
好帖
[解决办法]
谢谢版主
[解决办法]
高手阿 。。 我也收藏下。有时间研究研究
[解决办法]
史上最牛貼
俺邊頂邊學
[解决办法]
数学已经差不多忘光了-_-
[解决办法]
mark了。
[解决办法]
该回复于2007-10-18 21:40:43被版主删除
[解决办法]
学习
[解决办法]
先留个名,再来看,呵呵
LZ强人呐!!!
[解决办法]
留个记号,再慢慢看!
[解决办法]
看看……
[解决办法]
真强!
[解决办法]
弓虽!!! 留个脚印
[解决办法]
太强了,啥也不说了,支持
[解决办法]
记一下

[解决办法]
是不是在书中抄的

热点排行