没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
#region double[,]
public static bool Equal(this double[,] owner, double[,] target) {
var r = false;
var len0 = owner.GetLength(0); var len1 = owner.GetLength(1);
if (owner.Length == target.Length && len0 == target.GetLength(0) && len1 == target.GetLength(1)) {
return false;
}
for (int i = 0; i < len0; i++) {
for (int j = 0; j < len1; j++) {
if (owner[i, j] != target[i, j]) {
r = false; break;
}
}
}
return r;
}
/// <summary>
/// 矩阵乘
/// </summary>
/// <param name="left"></param>
/// <param name="right"></param>
/// <returns></returns>
public static double[,] Mul(this double[,] left, double[,] right) {
//判断行列是否匹配
var len1 = left.GetLength(0); var len2 = right.GetLength(1);
var len3 = left.GetLength(1); var len4 = right.GetLength(0);
if (len3 != len4)
throw new Exception("乘法条件不匹配,请确保前行后列长度相等");
var x1 = new double[len1, len1];
for (int k = 0; k < len2; k++) {
public static bool Equal(this double[,] owner, double[,] target) {
var r = false;
var len0 = owner.GetLength(0); var len1 = owner.GetLength(1);
if (owner.Length == target.Length && len0 == target.GetLength(0) && len1 == target.GetLength(1)) {
return false;
}
for (int i = 0; i < len0; i++) {
for (int j = 0; j < len1; j++) {
if (owner[i, j] != target[i, j]) {
r = false; break;
}
}
}
return r;
}
/// <summary>
/// 矩阵乘
/// </summary>
/// <param name="left"></param>
/// <param name="right"></param>
/// <returns></returns>
public static double[,] Mul(this double[,] left, double[,] right) {
//判断行列是否匹配
var len1 = left.GetLength(0); var len2 = right.GetLength(1);
var len3 = left.GetLength(1); var len4 = right.GetLength(0);
if (len3 != len4)
throw new Exception("乘法条件不匹配,请确保前行后列长度相等");
var x1 = new double[len1, len1];
for (int k = 0; k < len2; k++) {
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len4; j++) {
x1[i, k] += left[i, j] * right[j, k];
}
}
}
return x1;
}
//
/// <summary>
/// 矩阵的逆
/// </summary>
/// <param name="target"></param>
/// <returns></returns>
public static double[,] Inverse(this double[,] target) {
if (target.GetLength(0) != target.GetLength(1)) {
throw new Exception("只有方阵才有逆");
}
var level = target.GetLength(0);
double dMatrixValue = MatrixValue(target, level);
if (dMatrixValue == 0) return null;
double[,] dReverseMatrix = new double[level, 2 * level];
double x, c;
// Init Reverse matrix
for (int i = 0; i < level; i++) {
for (int j = 0; j < 2 * level; j++) {
if (j < level)
dReverseMatrix[i, j] = target[i, j];
else
dReverseMatrix[i, j] = 0;
for (int j = 0; j < len4; j++) {
x1[i, k] += left[i, j] * right[j, k];
}
}
}
return x1;
}
//
/// <summary>
/// 矩阵的逆
/// </summary>
/// <param name="target"></param>
/// <returns></returns>
public static double[,] Inverse(this double[,] target) {
if (target.GetLength(0) != target.GetLength(1)) {
throw new Exception("只有方阵才有逆");
}
var level = target.GetLength(0);
double dMatrixValue = MatrixValue(target, level);
if (dMatrixValue == 0) return null;
double[,] dReverseMatrix = new double[level, 2 * level];
double x, c;
// Init Reverse matrix
for (int i = 0; i < level; i++) {
for (int j = 0; j < 2 * level; j++) {
if (j < level)
dReverseMatrix[i, j] = target[i, j];
else
dReverseMatrix[i, j] = 0;
剩余7页未读,继续阅读
资源评论
ProjectDD
- 粉丝: 122
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功