当前位置: 首页 > news >正文

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];}}}}
}

相关文章:

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

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// polynomial coefficients from polynomial values /// </summary> public class PolCoef { public PolCoef() { } /// <summary>…...

单体进化微服务:拆分、注册、调用、网关、过滤、治理、分布式事务

这里写目录标题 基本介绍生产-消费-网关父依赖生产者服务消费者服务网关服务common服务 感想 基本介绍 Spring Cloud 是一个用于构建分布式系统和微服务架构的开发工具包。它提供了一系列的功能和组件&#xff0c;用于解决微服务架构中的常见问题&#xff0c;如服务注册与发现…...

介绍正则表达式及其用法

正则表达式&#xff08;Regular Expression&#xff09;&#xff0c;简称为"正则"&#xff0c;是一种用于描述、匹配、搜索文本的方式。正则表达式通常由符号和字符组成&#xff0c;可以用于匹配和搜索特定模式的文本。 以下是一些常用的正则表达式元字符及其用法&am…...

SpEL 表达式 是什么

SpEL&#xff08;Spring Expression Language&#xff09;是一种强大的表达式语言&#xff0c;用于在运行时查询和操作对象图。它是 Spring 框架的一部分&#xff0c;但也可以独立于 Spring 使用。SpEL 提供了丰富的特性集&#xff0c;包括对象图遍历、方法调用、算术、逻辑和关…...

gbase 8s 按时间点恢复

如果要实现8S按照时间点进行恢复&#xff0c;需要使用onbar进行备份和恢复&#xff0c;而PSM是又是onbar不可或缺的。 之前我鄙视过onpsm的健壮性&#xff0c;最近反复测试&#xff0c;发现比预想的结果好很多。 onpsm的安装手册详见&#xff1a;GBase 8s PSM简单配置 | GBas…...

OceanBase:OBServer节点管理

目录 1.查看节点 2.添加节点 2.1 创建数据目录 2.2.OceanBase 运行时所依赖的部分三方动态库 2.3.安装 OceanBase 数据库的 RPM 包 2.4.启动节点 observer 进程 2.5.向集群中添加节点 3.隔离节点 4.重启节点 4.1 停止服务 4.2 转储 4.3 关闭进程 4.4 启动进程 4.…...

记录一个简单的博客系统该开发过程

文章目录 1.1 设计前端页面1.2 编写数据库相关代码1.3 实现功能的前后端交互 总结 1.1 设计前端页面 首先我们的博客系统要有几个网页界面 博客列表页博客详情页登录页博客编辑页 1.2 编写数据库相关代码 本环节我们需要完成以下几个步骤. 先设计数据库(表设计), 然后编写…...

计算机毕业设计选题推荐-家庭理财微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

html实现计算器源码

文章目录 1.设计来源1.1 主界面1.2 计算效果界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134532725 html实现计算器源码&#xff0c;计算器源码&#xff0c;简易计…...

处理无线debug问题

无限debug的产生 条件说明 开发者工具是打开状态 js代码中有debugger js有定时处理 setInterval(() > {(function (a) {return (function (a) {return (Function(Function(arguments[0]" a ")()))})(a)})(bugger)(de, 0, 0, (0, 0)); }, 1000); ​ #这里就…...

redis的性能管理

查看内存使用指标 查看内存使用指标 info memory used_memory:1800800 redis中主句占用的内存 used_memory_rss:5783552 redis向操作系统申请的内存 used_memory_peak:1800800使用内存的峰值 系统巡检&#xff1a;硬件巡检&#xff0c;数据库&#xff0c;nginx redis docke…...

es各种报错问题及解决方案20231121

报错一 org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [typesearch_phase_execution_exception, reasonall shards failed]Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://localhost:9200], URI [/wzx-te…...

python数据结构与算法-10_递归

递归 Recursion is a process for solving problems by subdividing a larger problem into smaller cases of the problem itself and then solving the smaller, more trivial parts. 递归是计算机科学里出现非常多的一个概念&#xff0c;有时候用递归解决问题看起来非常简单…...

如何设计鞋材出库入账管理系统

如何设计鞋材出库入账管理系统 系统概述系统需求分析系统设计系统实施与测试系统上线与维护 系统概述 本系统旨在设计一个针对鞋材出库入账管理的数字化解决方案&#xff0c;以提高管理效率、降低运营成本并确保材料账目清晰。系统将结合先进的信息化技术&#xff0c;实现对鞋…...

一个简单的QT应用示例

一个简单的QT应用示例&#xff1a;创建一个窗口程序。 首先&#xff0c;确保已经安装了Qt开发环境。接下来&#xff0c;按照以下步骤创建一个简单的窗口程序&#xff1a; 1. 打开Qt Creator&#xff0c;点击“新建文件或项目”。 2. 选择“应用程序”&#xff0c;然后点击“下…...

南京数字孪生赋能工业制造,加速推进制造业数字化转型

随着南京信息技术的迅猛发展和工业管理的不断演进&#xff0c;传统的工业管理方式已经无法满足企业对高效、智能和可持续发展的需求。针对这一情况&#xff0c;数字孪生技术应运而生&#xff0c;为南京工业管理带来了全新的变革和机遇。以数字孪生为理念&#xff0c;三维可视化…...

Visual Studio Code 从英文界面切换中文

1、先安装中文的插件&#xff0c;直接安装。 2、点击右下角的 change language restart&#xff0c; 让软件重启即可以完成了。...

邦芒支招:利用自荐电话求职的七大技巧

​​如何利用自荐电话向招聘官推荐自己&#xff0c;现在人们在求职过程中都会自己争取面试机会&#xff0c;其中自荐电话是比较常见的一种方式&#xff0c;但是想要向面试官成功推荐自己也是不容易的&#xff0c;下面分享如何利用自荐电话向招聘官推荐自己。 ​ ​1、以对方为…...

埃尔米特插值(hermite 插值) C++

埃尔米特插值 原理 #pragma once #include <vector> #include <functional> /*埃尔米特插值*/ struct InterpolationPoint {double x; // 插值点的横坐标double y; // 插值点的纵坐标double derivative; // 插值点的导数值// 默认构造函数InterpolationPoint() : x…...

mysql优化之explain 以及 索引优化

Mysql安装文档参考&#xff1a;https://blog.csdn.net/yougoule/article/details/56680952 Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句&#xff0c;分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字&#xff0c;MySQL 会在查询上设…...

为 Cursor 编辑器构建持久化记忆:基于 MCP 协议与向量数据库的 AI 对话历史管理方案

1. 项目概述&#xff1a;一个为 Cursor 编辑器注入记忆的“外挂”如果你和我一样&#xff0c;深度依赖 Cursor 这类 AI 驱动的代码编辑器&#xff0c;那你一定遇到过这个痛点&#xff1a;当你在一个庞大的项目中连续工作几天&#xff0c;或者中途关闭了编辑器&#xff0c;再次打…...

C++BFS广度优先搜索全解

广度优先搜索&#xff08;BFS&#xff09;基础概念广度优先搜索是一种用于遍历或搜索树或图的算法。它从根节点开始&#xff0c;逐层访问所有相邻节点&#xff0c;直到找到目标节点或遍历完整个结构。BFS通常使用队列数据结构来实现&#xff0c;确保先访问的节点先被处理。BFS的…...

3步掌握GetQzonehistory:永久备份QQ空间所有回忆的终极指南

3步掌握GetQzonehistory&#xff1a;永久备份QQ空间所有回忆的终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里那些承载青春记忆的说说会随着时间消失&…...

为AI代理构建Obsidian技能库:实现智能笔记管理与自动化

1. 项目概述&#xff1a;为AI助手构建Obsidian技能库如果你和我一样&#xff0c;是个重度依赖Obsidian来构建个人知识库的笔记爱好者&#xff0c;同时又对AI助手&#xff08;比如Claude、GPTs&#xff09;如何更智能地帮我们管理这些笔记感到好奇&#xff0c;那么你肯定会对这个…...

从Docker镜像到生产部署:企业级Web应用容器化实战指南

1. 项目概述与核心价值最近在折腾一个企业官网项目&#xff0c;客户对性能和稳定性要求极高&#xff0c;同时希望有一套清晰、可维护的代码架构。在技术选型阶段&#xff0c;我偶然在Docker Hub上发现了tentechtop/tentech-official这个镜像。起初&#xff0c;它只是一个简单的…...

如何用 watchEffect 实现根据参数自动获取数据?代码简化干货

用 watchEffect 实现参数变化自动重拉&#xff0c;核心是将请求逻辑写在回调中并直接读取响应式依赖&#xff08;如 route.params.id、searchKey.value&#xff09;&#xff0c;Vue 自动追踪&#xff1b;需封装请求函数但不可提前解构响应式值&#xff1b;可同步控制 loading/e…...

Open-Lyrics:基于异步并发架构的高性能语音字幕生成系统设计

Open-Lyrics&#xff1a;基于异步并发架构的高性能语音字幕生成系统设计 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT&#xff0c;Claude等)来转录、翻译你的音频为字幕文件。 …...

基于LQR的无人驾驶车辆横纵向线性二次型调节器【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码&#xff08;1&#xff09;基于自适应灰狼优化的LQR权重在线调节&#xff1a;…...

筑牢水域安全防线:那些值得深思的防溺水之问

每到夏季&#xff0c;溺水事故便进入高发期&#xff0c;一条条鲜活生命的逝去&#xff0c;给无数家庭带来无法磨灭的伤痛。溺水已成为未成年人意外伤害致死的主要原因之一&#xff0c;面对频发的悲剧&#xff0c;我们不得不静下心来&#xff0c;追问那些关乎生命安全的核心问题…...

如何快速上手OpenBoardView:5个实用技巧与完整操作指南

如何快速上手OpenBoardView&#xff1a;5个实用技巧与完整操作指南 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView OpenBoardView是一款功能强大的开源电路板设计文件查看工具&#xff0c;专为替代传统的&…...