/**
* @(#)LUanalyzeTest.java
*
*
* @author 坚持到底
* @version 1.00
*/
public class LUanalyzeTest
{
/**
* LU分解
* @param L_matrix L矩阵(单位下三角阵)
* @param U_matrix U矩阵(上三角阵)
* @param matrix LU分解之前的系数矩阵
* @param num 系数矩阵的阶数
*/
public void LUanalyze(double[][] L_matrix, double[][] U_matrix, double[][] matrix, int num)
{
int i, j, k, r;
double sum;
//初始化L矩阵(L为单位下三角阵)
for (i = 0; i < num; i++)
for (j = 0; j < num; j++)
{
if (i == j)
L_matrix[j][i] = 1;
//对角线元素置1
else
{
L_matrix[j][i] = 0;
}
}
//初始化U矩阵(所有元素置0)
for (i = 0; i < num; i++)
for (j = 0; j < num; j++)
U_matrix[j][i] = 0;
//求U矩阵的第一行
for (i = 0; i < num; i++)
U_matrix[0][i] = matrix[0][i];
//求L矩阵的第一列
for (i = 0; i < num; i++)
L_matrix[i][0] = matrix[i][0] / U_matrix[0][0];
for (r = 1; r < num; r++)
{
//求U的第r行的元素
for (i = r; i < num; i++)
{
sum = 0.0;
for (k = 0; k < r; k++)
{
sum += L_matrix[r][k] * U_matrix[k][i];
}
U_matrix[r][i] = matrix[r][i] - sum;
}
//求L的第r列的元素
for (i = r; i < num; i++)
{
sum = 0.0;
for (k = 0; k < r; k++)
{
sum += L_matrix[i][k] * U_matrix[k][r];
}
L_matrix[i][r] = (matrix[i][r] - sum) / U_matrix[r][r];
}
}
}
//打印行列式
public void printMatrix(double[][] matrixTest, int row, int column)
{
for (int i = 0; i <= row - 1; i++)
{
System.out.println('\n');
for (int j = 0; j <= column - 1; j++)
System.out.print(matrixTest[i][j] + " ");
}
}
public static void main(String[] args)
{
int num = 4; //矩阵的阶数
//double[][] matrix={{1,2,6},{2,5,15},{6,15,46}};
//double[][] matrix={{1,2,3},{2,5,2},{3,1,5}};
double[][] matrix = {{2, 4, 2, 6}, {4, 9, 6, 15}, {2, 6, 9, 18}, {6, 15, 18, 40}};
double[][] L_matrix = new double[num][num];
double[][] U_matrix = new double[num][num];
LUanalyzeTest lu = new LUanalyzeTest();
System.out.println("\n原矩阵:");
lu.printMatrix(matrix, num, num);
lu.LUanalyze(L_matrix, U_matrix, matrix, num);
System.out.println("\nL矩阵:");
lu.printMatrix(L_matrix, num, num);
System.out.println("\nU矩阵:");
lu.printMatrix(U_matrix, num, num);
}
}
矩阵的LU分解———学习笔记 ,转载自chinaunix
转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
HarmonyOS NEXT 学习笔记
鸿蒙os 页面一键置灰
页面效果 API -
【机器学习中的矩阵分解】LU分解、QR分解、SVD分解
学习总结文章目录学习总结一、三角分解(LU分解)1.1 高斯消元1.2 LU分解原理1.3 LU分解python代码1.4 LU分解算法二
机器学习 线性代数 矩阵分解 图像压缩 python -
python矩阵的分解及其应用(LU分解)
L=np.array([[1,0].
全文检索 android 微信小程序 -
稀疏矩阵的LU分解:挑战与解决
1.背景介绍稀疏矩阵的LU分解是一种重要的线性代数计算方法,在许多科学计算和工程应用中得到广泛应用。稀疏矩阵是
大数据 人工智能 语言模型 AI LLM -
vscode 语言模式当中没有typescript jsx
工欲善其事,必先利其器。想要优雅且高效的编写代码,必须熟练使用一款前端开发工具。但前端开发工具数不胜数,像HBuilder、Sublime Text、WebStorm、Visual Studio Code......等等,其中VSCode以其轻量且强大的代码编辑功能和丰富的插件生态系统,独受前端工师的青睐。网上有很多vscode的配置以及使用博客,但都没有本篇那么详细且全面。
vscode emmet默认模板 vscode html注释快捷键 vscode setting json vscode svn 查看更新的代码 vscode svn插件使用