C#,码海拾贝(37)——求解“托伯利兹方程组“的“列文逊方法“之C#源代码

news/2024/12/2 22:45:40/

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 GetRootsetTlvs(Matrix mtxLECoef, Matrix mtxLEConst, Matrix mtxResult)
        {
            int i, j, k;
            double a, beta, q, c, h;

            // 未知数个数
            int n = mtxLECoef.GetNumColumns();

            // 初始化解解向量
            mtxResult.Init(n, 1);
            double[] x = mtxResult.GetData();

            // 常数数组
            double[] pDataConst = mtxLEConst.GetData();

            // 建立T数组
            double[] t = new double[n];

            // 构造T数组
            for (i = 0; i < n; ++i)
            {
                t[i] = mtxLECoef.GetElement(0, i);
            }

            // 临时数组
            double[] s = new double[n];
            double[] y = new double[n];

            // 非托伯利兹方程组,不能用本方法求解
            a = t[0];
            if (Math.Abs(a) < float.Epsilon)
            {
                return false;
            }

            // 列文逊方法求解
            y[0] = 1.0;
            x[0] = pDataConst[0] / a;
            for (k = 1; k <= n - 1; k++)
            {
                beta = 0.0;
                q = 0.0;
                for (j = 0; j <= k - 1; j++)
                {
                    beta = beta + y[j] * t[j + 1];
                    q = q + x[j] * t[k - j];
                }

                if (Math.Abs(a) < float.Epsilon)
                {
                    return false;
                }

                c = -beta / a;
                s[0] = c * y[k - 1];
                y[k] = y[k - 1];
                if (k != 1)
                {
                    for (i = 1; i <= k - 1; i++)
                    {
                        s[i] = y[i - 1] + c * y[k - i - 1];
                    }
                }

                a = a + c * beta;
                if (Math.Abs(a) < float.Epsilon)
                {
                    return false;
                }

                h = (pDataConst[k] - q) / a;
                for (i = 0; i <= k - 1; i++)
                {
                    x[i] = x[i] + h * s[i];
                    y[i] = s[i];
                }

                x[k] = h * y[k];
            }

            return true;
        }
}

}


http://www.ppmy.cn/news/272661.html

相关文章

Servlet 详解

目录 什么是 servlet? Servlet 是做甚的? 如何编写一个 Servlet 程序? 解析访问出错情况 Servlet 的运行原理 1. 接收请求 2. 根据请求计算响应 3. 返回响应 Servlet API 详解 HTTPServlet HttpServletRequset HttpServletResponse 什么是 servlet? Servlet 是…

奇虎360 php t5级别,奇虎360凭什么估值3800亿?核心价值只是他而已!

最近360在国内上市的各种消息不断的流出&#xff0c;作为中国互联网领域重要的力量&#xff0c;360曾经在美国纳斯达克短暂上市。但是因为美国人民对360的业务部太认可&#xff0c;加上周鸿祎忽悠美国人不给力&#xff0c;导致360市值低的难以启齿。面临这个局面&#xff0c;36…

Glint360K | 使用指南

首先恭喜格林深瞳3月18日在科创板成功上市 一、介绍 Glint360K数据集包含36万类别的1800万张图像&#xff0c;不论是类别数还是图像数&#xff0c;相比MS1MV2数据集都有大幅提升。 这是一个号称全球最大最干净的人脸数据集&#xff0c; 下载地址&#xff08;我自己上传的&…

停车还能360全方位影像_2020款新途锐锐享版上市,智能泊车360全景影像加量不加价...

前一阵子和大家说过20款途锐即将上市并会有很多新的升级项目&#xff0c;而最近20款途锐3.0锐享版已经开始打响头炮&#xff0c;官方报价71.8W&#xff0c;比3.0锐锋版价位略高&#xff0c;比百万纪念版相差5W&#xff0c;高配锐智版相差10W左右。 今天我们就来看看这款新车途锐…

奇虎360回归A股要如何上市?多家上市公司否认360借壳

奇虎360私有化回归A股将选择借壳哪家上市公司&#xff1f;此事引发了诸多投资者的猜测&#xff0c;但是&#xff0c;不少上市公司都对此予以否认。中葡股份7月29日晚间公告&#xff0c;经向公司控股股东中信国安集团有限公司函证确认&#xff0c;截至目前&#xff0c;公司控股股…

周鸿祎雷军口水战 360特供机上市将考验小米

最近&#xff0c;周鸿祎与雷军微博口水战已经持续快一个月了&#xff0c;整个过程&#xff0c;对360呈现利好趋势&#xff0c;对于360来说&#xff0c;目前特供机还未上市&#xff0c;但一开始便把特供机放在与小米平起平坐的位置。同时&#xff0c;由于口水战的持久性&#xf…

转载:360上市:一个昂贵的免费故事

30日晚&#xff0c;北京豪华会所九朝会&#xff0c;IT记者们受360公司之邀参与晚会&#xff0c;等待身在大洋彼岸的周鸿祎的视频采访。这些记者当年都收到《免费》这本书&#xff0c;赠书者为周鸿祎。当时没有人相信周鸿祎“免费可赚钱、赚大钱”的故事&#xff0c;有记者还拒绝…

今日 | 360上市,老周说了三句话 (内附一张图)

文章经授权转载自浅黑科技&#xff08;ID&#xff1a;qianheikeji&#xff09; 1 2018年2月28日&#xff0c;上海证交所。 红色的屏幕&#xff0c;红色的代码&#xff0c;红色的座椅&#xff0c;每人一条红色围巾。周鸿祎几乎是全场唯一一个没有穿西装的人。他穿了一身红衣&…