C#,数值计算——插值和外推,PolCoef的计算方法与源程序

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// polynomial coefficients from polynomial values
    /// </summary>
    public class PolCoef
    {
        public PolCoef()
        {
        }

        /// <summary>
        /// Given arrays x[0..n - 1] and y[0..n - 1] containing a tabulated function yi D f
        /// .xi /, this routine returns an array of coefficients cof[0..n - 1],
        /// such that yi =sum(cofj* xij)(j=0...n-1).
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="cof"></param>
        public static void polcoe(double[] x, double[] y, double[] cof)
        {
            int n = x.Length;
            double[] s = new double[n];
            for (int i = 0; i < n; i++)
            {
                s[i] = cof[i] = 0.0;
            }
            s[n - 1] = -x[0];
            for (int i = 1; i < n; i++)
            {
                for (int j = n - 1 - i; j < n - 1; j++)
                {
                    s[j] -= x[i] * s[j + 1];
                }
                s[n - 1] -= x[i];
            }
            for (int j = 0; j < n; j++)
            {
                double phi = n;
                for (int k = n - 1; k > 0; k--)
                {
                    phi = k * s[k] + x[j] * phi;
                }
                double ff = y[j] / phi;
                double b = 1.0;
                for (int k = n - 1; k >= 0; k--)
                {
                    cof[k] += b * ff;
                    b = s[k] + x[j] * b;
                }
            }
        }

        /// <summary>
        /// Given arrays xa[0..n - 1] and ya[0..n - 1] containing a tabulated function yai
        /// D f.xai /, this routine returns an array of coefficients
        /// cof[0..n - 1], such that yai = sum(cofj * xaij)(j = 0...n - 1).
        /// </summary>
        /// <param name="xa"></param>
        /// <param name="ya"></param>
        /// <param name="cof"></param>
        public static void polcof(double[] xa, double[] ya, double[] cof)
        {
            int n = xa.Length;
            double[] x = new double[n];
            double[] y = new double[n];
            for (int j = 0; j < n; j++)
            {
                x[j] = xa[j];
                y[j] = ya[j];
            }
            for (int j = 0; j < n; j++)
            {
                double[] x_t = new double[n - j];
                double[] y_t = new double[n - j];
                for (int i = 0; i < n - j; i++)
                {
                    x_t[i] = x[i];
                    y_t[i] = y[i];
                }

                Poly_interp interp = new Poly_interp(x, y, n - j);
                cof[j] = interp.rawinterp(0, 0.0);
                double xmin = 1.0e99;
                int k = -1;
                for (int i = 0; i < n - j; i++)
                {
                    if (Math.Abs(x[i]) < xmin)
                    {
                        xmin = Math.Abs(x[i]);
                        k = i;
                    }
                    if (x[i] != 0.0)
                    {
                        y[i] = (y[i] - cof[j]) / x[i];
                    }
                }
                for (int i = k + 1; i < n - j; i++)
                {
                    y[i - 1] = y[i];
                    x[i - 1] = x[i];
                }
            }
        }

    }
}
 

2 代码格式

using System;namespace Legalsoft.Truffer
{/// <summary>/// polynomial coefficients from polynomial values/// </summary>public class PolCoef{public PolCoef(){}/// <summary>/// Given arrays x[0..n - 1] and y[0..n - 1] containing a tabulated function yi D f/// .xi /, this routine returns an array of coefficients cof[0..n - 1],/// such that yi =sum(cofj* xij)(j=0...n-1)./// </summary>/// <param name="x"></param>/// <param name="y"></param>/// <param name="cof"></param>public static void polcoe(double[] x, double[] y, double[] cof){int n = x.Length;double[] s = new double[n];for (int i = 0; i < n; i++){s[i] = cof[i] = 0.0;}s[n - 1] = -x[0];for (int i = 1; i < n; i++){for (int j = n - 1 - i; j < n - 1; j++){s[j] -= x[i] * s[j + 1];}s[n - 1] -= x[i];}for (int j = 0; j < n; j++){double phi = n;for (int k = n - 1; k > 0; k--){phi = k * s[k] + x[j] * phi;}double ff = y[j] / phi;double b = 1.0;for (int k = n - 1; k >= 0; k--){cof[k] += b * ff;b = s[k] + x[j] * b;}}}/// <summary>/// Given arrays xa[0..n - 1] and ya[0..n - 1] containing a tabulated function yai/// D f.xai /, this routine returns an array of coefficients/// cof[0..n - 1], such that yai = sum(cofj * xaij)(j = 0...n - 1)./// </summary>/// <param name="xa"></param>/// <param name="ya"></param>/// <param name="cof"></param>public static void polcof(double[] xa, double[] ya, double[] cof){int n = xa.Length;double[] x = new double[n];double[] y = new double[n];for (int j = 0; j < n; j++){x[j] = xa[j];y[j] = ya[j];}for (int j = 0; j < n; j++){double[] x_t = new double[n - j];double[] y_t = new double[n - j];for (int i = 0; i < n - j; i++){x_t[i] = x[i];y_t[i] = y[i];}Poly_interp interp = new Poly_interp(x, y, n - j);cof[j] = interp.rawinterp(0, 0.0);double xmin = 1.0e99;int k = -1;for (int i = 0; i < n - j; i++){if (Math.Abs(x[i]) < xmin){xmin = Math.Abs(x[i]);k = i;}if (x[i] != 0.0){y[i] = (y[i] - cof[j]) / x[i];}}for (int i = k + 1; i < n - j; i++){y[i - 1] = y[i];x[i - 1] = x[i];}}}}
}

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

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

相关文章

【Linux】:共享内存

共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理&#xff0c;那么就避免不了先描…

Python pip 镜像源设置指南

文章目录 Python pip 镜像源设置指南前言安装单个包使用PyPI镜像使用镜像升级 pip设为默认pip镜像结语 Python pip 镜像源设置指南 前言 平时在使用 pip 安装一些包的时候速度非常慢,本文介绍如何在 Python3 下设置 PyPI 设置镜像源,本文以给 Python3 设置清华 镜像源举例. …

2023.11.20使用flask做一个简单图片浏览器

2023.11.20使用flask做一个简单图片浏览器 功能&#xff1a; &#xff08;1&#xff09;输入指定路径&#xff0c;打开文件夹 &#xff08;2&#xff09;判断文件格式为图片 &#xff08;3&#xff09;在前端进行预览 &#xff08;4&#xff09;使用bootstrap进行简单美化 ma…

win11,引导项管理

1&#xff0c;打开cmd,输入msconfig 2,进入引导选项卡 3&#xff0c;删除不需要的引导项

【CSH 入门基础 9 -- 输出 csh 脚本中每一句命令】

文章目录 输出csh脚本中每一句命令 输出csh脚本中每一句命令 在 csh 或 tcsh 脚本中&#xff0c;如果你想要输出脚本中的每一句执行&#xff0c;你可以在脚本的开头使用 -v&#xff08;verbose&#xff09;选项。这个选项会使得 shell 在执行命令前先打印出来。 要在脚本中使…

蓝桥杯每日一题2023.11.21

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 思路&#xff1a; 1.去重排序将其进行预处理 2.用gcd得到最简比值 3.用gcd_sub分别计算分子、分母的指数最大公约数 #include<bits/stdc.h> using namespace std; const int N 110; typedef long long ll; ll…

前端性能优化之LightHouse

优质博文&#xff1a;IT-BLOG-CN 一、LightHouse环境搭建 LightHouse是一款由Google开发的开源工具&#xff0c;用于评估Web应用程序的性能和质量。可以将其看作是一个Chrome扩展程序运行&#xff0c;或从命令行运行。为LightHouse提供一个需要审查的网址&#xff0c;它将针对…

V100 GPU服务器安装CUDNN教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Go语言常用命令详解(三)

文章目录 前言常用命令go get示例参数说明 go install示例参数说明 go list示例 go mod示例参数说明 go work基本用法示例 go tool示例 go version示例 go vet示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命…

智能座舱架构与芯片- (14) 测试篇 上

一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代&#xff0c;软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发&#xff0c;汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理&#xff1b;其次开发…

数据中台之用户画像

用户画像应用领域较为广泛,适合于各个产品周期,从新用户的引流到潜在用户的挖掘、 从老用户 的培养到流失用户的回流等。通过挖掘用户兴趣、偏好、人口统计特征,可以 直接 作用于提升营销精准 度、推荐匹配度,最终提升产品服务和企业利润。还包括广告投放、产品布局和行业报…

从0开始学习JavaScript--深入理解JavaScript的async/await

JavaScript的异步编程在过去经历了回调地狱、Promise的引入&#xff0c;而今&#xff0c;通过async/await&#xff0c;让我们获得了更加优雅、可读性更高的异步编程方式。本文将深入探讨async/await的概念、用法&#xff0c;并通过丰富的示例代码展示其在实际应用中的威力。 理…

JVM垃圾收集器

什么是垃圾收集器 Java虚拟机的垃圾收集器是内存回收的具体实现&#xff0c;主要用于回收不再使用的对象&#xff0c;释放内存空间。Java虚拟机提供了多种垃圾收集器&#xff0c;不同的垃圾收集器适用于不同的场景和需求。 在C中&#xff0c;对象所占的内存在程序结束运行之前…

Windows to Go U盘系统制作(未测完成)

三、Windows U盘系统制作 1、下载windows镜像&#xff0c;并通过Windows To Go方式制作&#xff0c;具体选项参考下面截图 2、选择Windows版本 3、配置Windows 体验相关参数

STM32通用定时器产生PWM信号

STM32通用定时器产生PWM信号 PWM信号stm32定时器PWM生成模式PWM配置基本步骤PWM周期计算CubeMX配置代码展现 本期内容我将展示使用STM32通用定时器产生PWM信号&#xff0c;这里以定时器3通道3为例 PWM信号 如果还不懂的话&#xff0c;可以看看 &#xff1a; “蓝桥杯单片机学习…

远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案

通过远程桌面方位Windows Server系统下的MATLAB2018B&#xff0c;报错License Manger Error -103&#xff0c;Crack文件夹下的dll文件已经替换&#xff0c;同时也已经输出了lic文件&#xff0c;但是仍然无法打开。但是在本地桌面安装就没有问题。初步怀疑MATLAB的License使用机…

909-2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse&#xff0c;该函数对链表进行逆序操作&#xff08;将链表中的结点按与原序相反的顺序连接&#xff09;&#xff0c;要求逆序操作就地进行&#xff0c;不分配…

远程命令执行漏洞原理,以及防护绕过方式

一、背景 RCE(Remote Command /Code Execute) 远程代码执行漏洞 通过PHP代码注入、Java代码注入等方式连接程序中预留的后门或接口从而进行远程命令执行&#xff0c;达到对服务器的控制。 为什么会出现远程代码执行漏洞呢&#xff1f; Web应用有时需要调用执行一些系统命令函数…

shell 脚本语句

目录 条件语句 test 命令 比较整数数值 字符串比较 命令举 条件逻辑测试操作 组合写法 举例 双中括号 ​编辑 ( ) / { } if 语句的结构 case 语句 脚本举例 识别 yes 和 no 脚本 检查磁盘使用情况脚本 新建用户以及随机设置用户密码的脚本 补充命令 [RANDOM…

【高性能计算】CUDA,OpenCL,FPGA 加速,MPI

OpenCL OpenCL&#xff08;Open Computing Language&#xff09;是一种跨平台的GPU加速技术&#xff0c;由Khronos Group开发。OpenCL允许开发人员在不同的硬件平台上编写并行计算应用程序。 OpenCL使用C语言的子集来编写应用程序&#xff0c;并提供了一组API&#xff0c;可以…