C#,码海拾贝(28)——求解“对称正定方程组”的“平方根法”之C#源代码

news2024/11/18 4:22:15

using System;

namespace Zhou.CSharp.Algorithm
{
    /// <summary>
    /// 求解线性方程组的类 LEquations
    /// 原作 周长发
    /// 改编 深度混淆
    /// </summary>
    public static partial class LEquations
    {

        /// <summary>
        /// 求解对称正定方程组的平方根法
        /// </summary>
        /// <param name="mtxLECoef">指定的系数矩阵</param>
        /// <param name="mtxLEConst">指定的常数矩阵</param>
        /// <param name="mtxResult">Matrix引用对象,返回方程组解矩阵</param>
        /// <return>bool 型,方程组求解是否成功</return>
        public static bool GetRootsetCholesky(Matrix mtxLECoef, Matrix mtxLEConst, Matrix mtxResult)
        {
            int i, j, k, u, v;

            // 方程组属性,将常数矩阵赋给解矩阵
            Matrix mtxCoef = new Matrix(mtxLECoef);
            mtxResult.SetValue(mtxLEConst);
            int n = mtxCoef.GetNumColumns();
            int m = mtxResult.GetNumColumns();
            double[] pDataCoef = mtxCoef.GetData();
            double[] pDataConst = mtxResult.GetData();

            // 非对称正定系数矩阵,不能用本方法求解
            if (pDataCoef[0] <= 0.0)
            {
                return false;
            }

            pDataCoef[0] = Math.Sqrt(pDataCoef[0]);
            for (j = 1; j <= n - 1; j++)
            {
                pDataCoef[j] = pDataCoef[j] / pDataCoef[0];
            }
            for (i = 1; i <= n - 1; i++)
            {
                u = i * n + i;
                for (j = 1; j <= i; j++)
                {
                    v = (j - 1) * n + i;
                    pDataCoef[u] = pDataCoef[u] - pDataCoef[v] * pDataCoef[v];
                }

                if (pDataCoef[u] <= 0.0)
                {
                    return false;
                }
                pDataCoef[u] = Math.Sqrt(pDataCoef[u]);
                if (i != (n - 1))
                {
                    for (j = i + 1; j <= n - 1; j++)
                    {
                        v = i * n + j;
                        for (k = 1; k <= i; k++)
                        {
                            pDataCoef[v] = pDataCoef[v] - pDataCoef[(k - 1) * n + i] * pDataCoef[(k - 1) * n + j];
                        }
                        pDataCoef[v] = pDataCoef[v] / pDataCoef[u];
                    }
                }
            }

            for (j = 0; j <= m - 1; j++)
            {
                pDataConst[j] = pDataConst[j] / pDataCoef[0];
                for (i = 1; i <= n - 1; i++)
                {
                    u = i * n + i;
                    v = i * m + j;
                    for (k = 1; k <= i; k++)
                    {
                        pDataConst[v] = pDataConst[v] - pDataCoef[(k - 1) * n + i] * pDataConst[(k - 1) * m + j];
                    }
                    pDataConst[v] = pDataConst[v] / pDataCoef[u];
                }
            }

            for (j = 0; j <= m - 1; j++)
            {
                u = (n - 1) * m + j;
                pDataConst[u] = pDataConst[u] / pDataCoef[n * n - 1];
                for (k = n - 1; k >= 1; k--)
                {
                    u = (k - 1) * m + j;
                    for (i = k; i <= n - 1; i++)
                    {
                        v = (k - 1) * n + i;
                        pDataConst[u] = pDataConst[u] - pDataCoef[v] * pDataConst[i * m + j];
                    }

                    v = (k - 1) * n + k - 1;
                    pDataConst[u] = pDataConst[u] / pDataCoef[v];
                }
            }

            return true;
        }
 

    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

淘宝618每日一猜答案(6月5日) 淘宝大赢家今日答案

淘宝6月5日每日一猜答案是什么&#xff1f;&#xff0c;接下来也会给大家来介绍一下6月5日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月5日答案分享 活动问题&#xff1a;亚特兰蒂斯体型最大的员工 活动答案&#xff1a;【白鲸】 注意&#xff1a;打开手机淘宝&#xff0c;搜…

记录 vue3 webpack 使用 iframe 遇到的坑

需求 我尝试用Vue3写一个自己的主页&#xff0c;把常用的功能集中到主页中&#xff0c;如下图 后发现一个好玩的东西&#xff0c;js实现的在网页底部出现鱼和波浪&#xff0c;如下图&#xff0c;就像想也放到自己的主页中&#xff0c;搜索后发现可以在Vue中用iframe标签直接引…

Nginx踩坑记录 配置文件中的include不能嵌套 (include的文件里不能再include其他文件了)

上一篇文章介绍了配置文件有多个位置&#xff0c;并且可以采用include实现主配置文件分文件的个性化配置模式&#xff1a;Nginx配置文件 所在路径 到底在哪&#xff1f;_身价五毛的博客-CSDN博客 然后就又踩坑了&#xff0c;include不能嵌套调用&#xff0c;即&#xff1a; …

战斗机上的无线电设备都有哪些?

无线电在我们的生活中无处不在&#xff0c;而无线电设备也有着广泛的应用。那么有没有老铁知道&#xff0c;战斗机上都有哪些无线电设备呢&#xff1f;下面河南宝蓝小编带大家一起来了解下&#xff1a; 战斗机上的无线电设备都有哪些 1、通信系统 通信系统是战斗机比较基本的…

IP-GUARD如何将触发策略的报警信息按照一定周期发送到指定邮箱?

如何将触发策略的报警信息按照一定周期发送到指定邮箱&#xff1f; 1、设置邮件服务器 控制台菜单【工具】-【选项】-【邮件报告服务器设置】中&#xff0c;设置好邮件服务器&#xff1b; 2、邮件报告设置 控制台菜单【工具】-【邮件报告设置】中&#xff0c;新建邮件配置&am…

技术的交流 思想的碰撞|2023 开放原子全球开源峰会 TOC 面对面分论坛即将启幕

由开放原子开源基金会主办的 2023 开放原子全球开源峰会 TOC 面对面分论坛即将于 6 月 13 日在北京经开区北人亦创国际会展中心隆重举办。 作为开放原子开源基金会最高技术决策机构&#xff0c;TOC&#xff08;Technical Oversight Committee&#xff09;汇聚了基金会单位的开…

大语言模型的创意能力到底几何?探索从GPT-2到GPT-4的演进

编者按&#xff1a;大语言模型可以提供许多创意性内容&#xff0c;如写诗、写小说等。那么到底应该如何评估大语言模型生成的创意性内容的水平呢&#xff1f; 本文探讨了GPT-2到GPT-4的创造性&#xff0c;并分析了这些模型在不同创造性测试中的表现。作者使用了三种测试来衡量模…

分布式事务·入门与解决·贰·Saga

文章目录 1 saga分布式事务框架1.1 分布式事务相关理论1.1.1 分布式事务的出现1.1.2 CAP定理1.1.3 BASE定理——CAP的解决思想1.1.4 分布式事务四种模式1.1.5 XA、AT与TCC模式1.1.6 Saga模式 1.2 分布式事务框架ElegentACTX对Saga模式的解决1.2.1 ElegentACTX介绍1.2.2 Elegent…

低代码开发的新趋势:公民自动化和公民开发

在企业数字化转型领域&#xff0c;公民自动化是一个比较“陌生又熟悉”的词汇&#xff0c;它在公民开发运动中引起了不小的轰动。那么&#xff0c;什么是公民自动化&#xff1f;什么是公民开发呢&#xff1f;它们之间又有什么不同之处&#xff1f; 什么是公民开发 自低代码诞生…

Neural Network学习笔记3

损失函数和反向传播网络 在进行损失函数计算后&#xff0c;再进行.backward()反向传播。 import torch import torchvision from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential from torch.utils.data import DataLoader from torch…

外贸人注意!这件事不能再对客户承诺了!

你还在配合客户低开发票吗&#xff1f; 本文目录&#xff1a; 什么是低开发票&#xff1f; 低开发票有什么风险&#xff1f; 哪些国家客户喜欢低开发票&#xff1f; 哪些国家低开发票会被抓&#xff1f; 很多人认为客户索要低开发票偷税漏税是人之常情。为了加强合作关系&a…

2015 年一月联考逻辑真题

2015 年一月联考逻辑真题 真题&#xff08;2015-26&#xff09; 26.晴朗的夜晚我们可以看到满天星斗&#xff0c;其中有些是自身发光的恒星&#xff0c;有些是自身不发光但可以反射附近恒星光的行星。恒星尽管遥远&#xff0c;但是有些可以被现有的光学望远镜“看到”。和恒星不…

YOLOv8训练参数详解

全部参数表 首先罗列一下官网提供的全部参数。 1. model ✰✰✰✰✰ model: 模型文件的路径。这个参数指定了所使用的模型文件的位置&#xff0c;例如 yolov8n.pt 或 yolov8n.yaml。 选择.pt和.yaml的区别 若我们选择 yolov8n.pt这种.pt类型的文件&#xff0c;其实里面是包…

从0到1实现IOC

一、什么是 IOC 我们先来看看spring官网对IOC的定义&#xff1a; IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies, that is, the other objects they work with, only through constructor arguments, argumen…

阿里工程师手打的MySQL学习笔记,轻松拿捏MySQL

我们都知道阿里经历过几次重大的技术变革&#xff0c;其中就包括放弃Oracle和Hadoop&#xff0c;全面拥抱MySQL。 讲道理其实靠OracleHadoop也能撑一撑&#xff0c;为啥偏得变。当然肯定不是因为阿里爸爸没钱&#xff0c;而是即便再花个几千万还是不能彻底解决问题&#xff0c…

压力测试遭遇大量TIME_WITE之后(这样解决)

前言&#xff1a;http协议是互联网中最常使用的应用层协议&#xff0c;它的绝大多数实现是基于TCP协议的。 目录 一 问题描述 二 问题跟踪 三 跟进分析 四 解决方法 一、问题描述 某天&#xff0c;在对一个提供http接口的后台服务进行压力测试过程中&#xff0c;我们设定了…

科班出身又如何?这类人连外包都不要...

在软件测试这个领域&#xff0c;多数人对于外包公司是有戴有色眼镜看待的&#xff0c;外包测试员往往会处于一个比较尴尬的局面。主要是由于雇主公司比较核心或者底层的东西是不会让外包人员作的。外包人员一般做的都是“边角料”。而这些活往往对于技术要求不高&#xff0c;所…

python接口自动化 —— 接口测试工具介绍(详解)

简介 “工欲善其事必先利其器”&#xff0c;通过前边几篇文章的介绍&#xff0c;大家大致对接口有了进一步的认识。那么接下来让我们看看接口测试的工具有哪些。 目前&#xff0c;市场上有很多支持接口测试的工具。利用工具进行接口测试&#xff0c;能够提供测试效率。例如&…

运维小白必学篇之基础篇第十集:系统启动流程实验

系统启动流程实验 实验作业&#xff1a; 1、现在有一台服务器因为长时间不使用&#xff0c;管理员密码已经丢失&#xff0c;现在想要启动该服务器&#xff0c;如何操作 第一步&#xff1a;开启系统&#xff0c;在GRUB界面按E进行编辑 在linux16行中centos/swap后添加 rd.break参…

【AI】InsCode AI 创作助手 --使用心得

CSDN AI写作助手上线了&#xff01;InsCode AI 创作助手不仅能够帮助用户高效创作文章&#xff0c;而且能够作为对话式AI回答你想知道的问题。成倍提高生产力&#xff01;欢迎大家使用新功能后分享自己的使用心得与建议&#xff01; 文章目录 一、你平时会使用这类AI工具吗&am…