标题:[求助]高斯列主元解方程组的算法
只看楼主
xuyanfeng
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-13
 问题点数:0 回复次数:2 
[求助]高斯列主元解方程组的算法
我用高斯列主元解方程组,下面是代码,数组矩阵为a(n,n),b(n),可算出来的结果就是不对啊,我不知道哪里出现问题了,请大侠帮我看看吧!
Dim a(n, n) As Double '矩阵
Dim b(n) As Double 'b 项矩阵
Dim x(n) As Double '输出结果矩阵
Dim k As Integer = 0 '中间变量,假设计算到第k步
Dim i As Integer '数组下标变量
Dim j As Integer '数组下标变量
Dim z As Integer = 0 '回代时中间变量
Dim max_i As Integer '找矩阵列主元下标
Dim mida As Double '交换矩阵中间变量
Dim midb As Double '交换b项中间变量
Dim l(n, n) As Double '消元比列系数
For k = 0 To n - 1 '(1)消元过程
For j = k To n '(2)找列主元
If a(max_i, k) < a(j, k) Then
max_i = j
End If
Next
If a(max_i, k) = 0 Then '(3)如果列主元为0,则退出循环
Exit For
End If
If max_i <> k Then '(4)判断是否需要换行
For j = k To n
mida = a(k, j)
a(k, j) = a(i, j)
a(i, j) = mida
midb = b(k)
b(k) = b(i)
b(i) = midb
Next
End If
For i = k + 1 To n
l(i, k) = a(i, k) / a(k, k) '比例系数
For j = k + 1 To n
a(i, k) = a(i, k) - l(i, k) * a(k, j)
Next
b(i) = b(i) - l(i, k) * b(k)
Next
If a(n, n) = 0 Then
Exit For
End If '结束循环过程
Next
x(n) = b(n) / a(n, n) '回代求解
For i = n - 1 To 0 - 1
For j = i + 1 To n
z = z + a(i, j) * x(j)
Next
x(i) = (b(i) - z) / a(i, i)
Next
搜索更多相关主题的帖子: 解方程 高斯 算法 
2006-05-15 11:35
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
得分:0 
虽然没有运行,看到以下错误:
1:
For j = k To n
mida = a(k, j)
a(k, j) = a(i, j)
a(i, j) = mida
midb = b(k)
b(k) = b(i)
b(i) = midb
Next
a是要循环交换的,b为什么也"循环"交换呢?
如果你循环了偶数次是不是又换回来了呢?
2:
For i = n - 1 To 0 - 1
少了个step吧

其它暂没发现

E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-05-15 12:20
xuyanfeng
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-13
得分:0 

非常感谢,谢谢!

2006-05-16 14:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-64297-1-1.html




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

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