qingliangyou的博客

VB程序设计的常用算法

分类:默认分类  人气:339  评论:0  时间:2012-04-02 02:01

八、矩阵(二维数组)运算

1矩阵的加、减运算

C(i,j)=a(i,j)+b(i,j) 加法

C(i,j)=a(i,j)-b(i,j) 减法

2)矩阵相乘

(矩阵AM*L个元素,矩阵BL*N个元素,则矩阵C=A*BM*N个元素)。矩阵C中任一元素 (i=1,2,…,m; j=1,2,…,n)

For i = 0 To m

For j = 0 To n

c(i, j) = 0

For k = 0 To l

c(i, j) = c(i, j) + a(i, k) * b(k, j)

Next k

Next j

Next i

3)矩阵传置

:有二维数组a(5,5),要对它实现转置,可用下面两种方式:

For i=1 to 5 (2) For i=2 to 5

For j=i+1 to 5 For j=1 to i

t=a(i,j) t=a(i,j)

a(i,j)= a(j,i) a(i,j)= a(j,i)

a(j,i)=t a(j,i)=t

Next j Next j

Next i Next i

4)求二维数组中最小元素及其所在的行和列

基本思路同一维数组,可用下面程序段实现(以二维数组a(2,3)为例):

‘变量max中存放最大值,row,column存放最大值所在行列号

Max = a(1, 1): row = 1: Column = 1

For i = 1 To 2

For j = 1 To 3

If a(i, j) > a(row, Column) Then

Max = a(i, j)

row = i

Column = j

End If

Next j

Next i

Print "最大元素是"; Max

Print "在第" & row & ","; "" & Column & ""

九、迭代法

算法思想:

对于一个问题的求解x,可由给定的一个初值x0,根据某一迭代公式得到一个新的值x1,这个新值x1比初值x0更接近要求的值x;再以新值作为初值,即:x1x0,重新按原来的方法求x1,重复这一过和直到|x1-x0|<ε(某一给定的精度)。此时可将x1作为问题的解。

例:用迭代法求某个数的平方根。 已知求平方根的迭代公式为:

Private Function Fsqrt( a As single ) AS single

Dim x0 As Single, x1 As Single

x0 =a/2 '迭代初值

x1 = 0.5*(x0 + a/x0)

Do

x0 = x1 '为下一次迭代作准备

x1 = 0.5*(x0 + a/x0)

Loop While Abs(x1 - x0) > 0.00001

Fsqrt=x1

End Function

十、数制转换

将一个十进制整数m转换成 →r(216)进制字符串。

方法:将m不断除 r 取余数,直到商为零,以反序得到结果。下面写出一转换函数,参数idec为十进制数,ibase为要转换成数的基(如二进制的基是2,八进制的基是8等),函数输出结果是字符串。

Private Function TrDec(idec As Integer, ibase As Integer) As String

Dim strDecR$, iDecR%

strDecR = ""

Do While idec <> 0

iDecR = idec Mod ibase

If iDecR >= 10 Then

strDecR = Chr$(65 + iDecR - 10) & strDecR

Else

strDecR = iDecR & strDecR

End If

idec = idec \ ibase

Loop

TrDec = strDecR

End Function

评论(0)
暂无评论
我来评论
(800字以内)
博客分类
最新阅读用户
暂无用户