- 1
- 0
- 约9.24千字
- 约 15页
- 2017-08-26 发布于河南
- 举报
1.00 第21讲
2005.10.28
矩阵
矩阵
• 矩阵是一个2维数组,有m行n列
-- 在数学符号里,我们使用标号1,...m和1,…n。
-- 在Java里,通常使用0,…m-1和0,…n-1 。
矩阵和线性系统
• 矩阵通常代表一系列的线性方程:
-- n个未知x ,有m个方程
-- 系数a 已知,右边的b也已知
矩阵表示
矩阵,p.2
• 若n=m,得到只有唯一解方程组。困难:
-- 若任意行(方程)或列(变量)是其他的线性组合,
则矩阵为退化矩阵或者说是不满秩的矩阵。没有解
答。你的模型很可能是错误的,需要修改。
-- 若行或列是几乎是线性组合,在计算过程中舍入误差
会使他们线性相关。即使有解答,我们也会因此而未
能得到。
-- 舍入误差能很快的累积。当在方程组中引入舍入误
差,你会得到解答,但你会发现这并不是一个解答。
(右边不和左边相一致)
• 大的线性系统易于接近奇异(退化)。注意!
-- 我们下一讲中将来解线性系统
矩阵,p.3
• 在本讲中我们介绍基本的矩阵知识和计算
--通常作为使用矩阵解决线性系统问题的基础
• Java中就有2维数组,以以下方式声明:
double[][] squareMatrix= new double[5][5];
--但此数组没有嵌入式方法
矩阵,p.4
• 因此,这对于创建矩阵类是有用的:
--创建方法来加,减,乘,组成矩阵方程等
• 只有很少部分矩阵用不同的方法来解决:
--几乎所有的大矩阵都是很稀少的(99% 以上的
元素为0 )
--在列表或1维数组或其他数据结构中存储(i,j,
值)
2维数组
行的编号=data.length
2维数组就是:
这就是我们将要在矩阵类中保存矩阵数据的方法。
矩阵类,p.1
public class Matrix {
private double[][] data; // 参考数组
//Matrix构造函数
public Matrix(int m, int n) {
data = new double[m][n];
}
稀疏矩阵例子
Arc Cost矩阵
矩阵类,p.2
//设置矩阵恒等式的方法
public void setIdentity() {
int i,j;
int nrows = data.length;
int ncols = data[0].length;
for(i=0; inrows; i++)
for(j=0; jncols; j++)
if(i == j)
data[i][j]= 1.0;
else
data[i][j]= 0.0;
}
原创力文档

文档评论(0)