C#,数值计算——有理函数插值和外推(Rational_interp)的计算方法与源程序

1 文本格式
using System;
namespace Legalsoft.Truffer
{
/// <summary>
/// 有理函数插值和外推
/// Rational Function Interpolation and Extrapolation
/// Given a value x, and using pointers to data xx and yy, this routine returns
/// an interpolated value y, and stores an error estimate dy. The returned value
/// is obtained by mm-point polynomial interpolation on the subrange
/// xx[jl..jl + mm - 1].
/// </summary>
public class Rational_interp : Base_interp
{
private double dy { get; set; }
public Rational_interp(double[] xv, double[] yv, int m) : base(xv, yv[0], m)
{
this.dy = 0.0;
}
/// <summary>
/// Given a value x, and using pointers to data xx and yy, this routine returns
/// an interpolated value y, and stores an error estimate dy. The returned
/// value is obtained by mm-point diagonal rational function interpolation on
/// the subrange xx[jl..jl + mm - 1].
/// </summary>
/// <param name="jl"></param>
/// <param name="x"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public override double rawinterp(int jl, double x)
{
const double TINY = 1.0e-99;
int ns = 0;
double[] c = new double[mm];
double[] d = new double[mm];
double hh = Math.Abs(x - xx[jl + 0]);
for (int i = 0; i < mm; i++)
{
double h = Math.Abs(x - xx[jl + i]);
//if (h == 0.0)
if (Math.Abs(h) <= float.Epsilon)
{
dy = 0.0;
return yy[jl + i];
}
else if (h < hh)
{
ns = i;
hh = h;
}
c[i] = yy[jl + i];
d[i] = yy[jl + i] + TINY;
}
double y = yy[jl + ns--];
for (int m = 1; m < mm; m++)
{
for (int i = 0; i < mm - m; i++)
{
double w = c[i + 1] - d[i];
double h = xx[jl + i + m] - x;
double t = (xx[jl + i] - x) * d[i] / h;
double dd = t - c[i + 1];
//if (dd == 0.0)
if (Math.Abs(dd) <= float.Epsilon)
{
throw new Exception("Error in routine ratint");
}
dd = w / dd;
d[i] = c[i + 1] * dd;
c[i] = t * dd;
}
y += (dy = (2 * (ns + 1) < (mm - m) ? c[ns + 1] : d[ns--]));
}
return y;
}
}
}
2 代码格式
using System;namespace Legalsoft.Truffer
{/// <summary>/// 有理函数插值和外推/// Rational Function Interpolation and Extrapolation/// Given a value x, and using pointers to data xx and yy, this routine returns/// an interpolated value y, and stores an error estimate dy. The returned value/// is obtained by mm-point polynomial interpolation on the subrange/// xx[jl..jl + mm - 1]./// </summary>public class Rational_interp : Base_interp{private double dy { get; set; }public Rational_interp(double[] xv, double[] yv, int m) : base(xv, yv[0], m){this.dy = 0.0;}/// <summary>/// Given a value x, and using pointers to data xx and yy, this routine returns/// an interpolated value y, and stores an error estimate dy. The returned/// value is obtained by mm-point diagonal rational function interpolation on/// the subrange xx[jl..jl + mm - 1]./// </summary>/// <param name="jl"></param>/// <param name="x"></param>/// <returns></returns>/// <exception cref="Exception"></exception>public override double rawinterp(int jl, double x){const double TINY = 1.0e-99;int ns = 0;double[] c = new double[mm];double[] d = new double[mm];double hh = Math.Abs(x - xx[jl + 0]);for (int i = 0; i < mm; i++){double h = Math.Abs(x - xx[jl + i]);//if (h == 0.0)if (Math.Abs(h) <= float.Epsilon){dy = 0.0;return yy[jl + i];}else if (h < hh){ns = i;hh = h;}c[i] = yy[jl + i];d[i] = yy[jl + i] + TINY;}double y = yy[jl + ns--];for (int m = 1; m < mm; m++){for (int i = 0; i < mm - m; i++){double w = c[i + 1] - d[i];double h = xx[jl + i + m] - x;double t = (xx[jl + i] - x) * d[i] / h;double dd = t - c[i + 1];//if (dd == 0.0)if (Math.Abs(dd) <= float.Epsilon){throw new Exception("Error in routine ratint");}dd = w / dd;d[i] = c[i + 1] * dd;c[i] = t * dd;}y += (dy = (2 * (ns + 1) < (mm - m) ? c[ns + 1] : d[ns--]));}return y;}}
}
相关文章:
C#,数值计算——有理函数插值和外推(Rational_interp)的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 有理函数插值和外推 /// Rational Function Interpolation and Extrapolation /// Given a value x, and using pointers to data xx and yy, this routine returns …...
力扣283:移动零(JAVA)
题目描述: 意思是将所有0移到最后的同时其余非0元素位置仍然不变 如 1 2 0 5 2 0 经过移动零后变为 1 2 5 2 0 0 思路:使用双指针的思路来写 fast:从左往右遍历数组 slow:非零元素最后的一个位置 将数组分为3个区间 [0,slow]为处理好的非0数据,slow永远指向最后一个非0数据 [s…...
【statsmodels】快速实现回归预测
python 做线性回归分析有好几种方式,常要的是 scipy 包,statsmodels 包,以及 sklearn包。 但是个人比较喜欢使用statsmodel进行线性回归,一是其可以更好的呈现回归效果,二是其能够自动跳过缺失值。 sklearn则不能方便…...
Kubernetes异常排查方式
集群信息: 1. 显示 Kubernetes 版本:kubectl version 2. 显示集群信息:kubectl cluster-info 3. 列出集群中的所有节点:kubectl get nodes 4. 查看一个具体的节点详情:kubectl describe node <node-name> 5. 列…...
【Linux】:信号的产生
信号 一.前台进程和后台进程1.前台进程2。后台进程3.总结 二.自定义信号动作接口三.信号的产生1.键盘组合键2.kill信号进程pid3.系统调用1.kill函数2.raise函数3.abort函数 四.异常五.软件条件六.通过终端按键产生信号 一.前台进程和后台进程 1.前台进程 一个简单的代码演示 …...
document load 和 document ready 的区别
"document load" 和 "document ready" 都是 JavaScript 中用于处理文档加载事件的术语,但是它们之间有一些重要的区别。 document load 在传统的 JavaScript 中,document.load 事件是当整个 HTML 文档完全加载并出现在浏览器中时触…...
flutter与原生Android通信方式之MethodChannel
闲来无事,flutter好久没看了,上次折腾flutter与Android通信没折腾完,有些事情耽搁了,这次继续 演示效果: flutter与Android原生通信 flutter端 import package:flutter/cupertino.dart; import package:flutter/mater…...
[PyTorch][chapter 66][强化学习-值函数近似]
前言 现实强化学习任务面临的状态空间往往是连续的,无穷多个。 这里主要针对这种连续的状态空间处理。后面DQN 也是这种处理思路。 目录: 1: 原理 2: 梯度更新 3: target 和 预测值 4 流程 一 原理 强化学习最重要的是得到 …...
hdlbits系列verilog解答(Exams/m2014 q4e)-46
文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路: 二、verilog源码 module top_module (input in1,input in2,output out);assign out ~(in1 | in2);endmodule三、仿真结果 转载请注明出处!...
小程序如何实现下拉刷新?
一、全局下拉刷新 在app.json的window节点中,将enablePullDownRefresh设置为true; onPullDownRefresh: function () {console.log(下拉刷新);// 在这里编写数据更新的逻辑wx.stopPullDownRefresh(); // 数据更新完成后,调用该方法停止刷新}二…...
二进制数据转换成十六进制表示 binascii.hexlify()
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 二进制数据转换成十六进制表示 binascii.hexlify() 选择题 binascii.hexlify()参数的数据类型可以是? import binascii number 11 byte_data number.to_bytes() hex_data bin…...
苍穹外卖--店铺营业状态设置
需求分析和设计 1.1.1 产品原型 进到苍穹外卖后台,显示餐厅的营业状态,营业状态分为营业中和打烊中,若当前餐厅处于营业状态,自动接收任何订单,客户可在小程序进行下单操作;若当前餐厅处于打烊状态&#…...
2023金盾杯线上赛-AGRT战队-WP
目录 WEB ApeCoin get_source ezupload easyphp MISC 来都来了 芙宁娜 Honor Crypto 我看看谁还不会RSA hakiehs babyrsa PWN sign-format RE Re1 WEB ApeCoin 扫描发现有源码泄露,访问www.tar.gz得到源码。 在源码中发现了冰蝎马。 Md5解码&am…...
Python面向对象编程——类方法、实例方法和静态方法总结
在Python面向对象编程中,类方法(class methods)、实例方法(instance methods)和静态方法(static methods)是不同类型的方法,它们有一些联系,但也存在一些明显的区别。 类…...
HarmonyOS开发(五):常用基础组件
1、组件介绍 组件(Component),是界面搭建及显示的最小单元。 组件根据功能可以分为五大类:基础组件、容器组件、媒体组件、绘制组件、画布组件 2、基础组件 基础组件是视图层的基本组成单元,它包含:Text、Image、T…...
Hive中常出现的错误(不定时更新)
1.加载数据失败 hive> load data local inpath /home/user/hive.txt into table studentl> ; FAILED: SemanticException [Error 10001]: Line 1:56 Table not found studentl hive> load data local inpath /home/user/hive.txt into table student; Loading data to…...
c++ 重写 多态
1 重写(继承后(拼接基类后)) 1.1 非虚函数 同名成员函数 (各自有一个xFunction() 内存 ) #include <iostream> #include <String> class BaseClass { public:void xFunction() {std::cout << "BaseClass::xFunction()\n"; } };class Subclass1 …...
Git如何修改提交(commit)用户名称(user.name)和邮箱(user.email)
Git用户名 Git查看用户名 git config user.name修改Git提交用户名 修改全局Git用户名 git config --global user.name "xx" 修改当前服务/项目Git用户名 git config user.name "xx"如果出现以下错误,解决方案如下: 错误案例&am…...
知行之桥EDI系统HTTP签名验证
本文简要概述如何在知行之桥EDI系统中使用 HTTP 签名身份验证,并将使用 CyberSource 作为该集成的示例。 API 概述 首字母缩略词 API 代表“应用程序编程接口”。这听起来可能很复杂,但真正归结为 API 是一种允许两个不同实体相互通信的软件。自开发以…...
C++ DAY08 异常
概念 异常事件(如:除 0 溢出,数组下标越界,所要读取的文件不存在 , 空指针,内存不足 等等) 在 C 语言对错误的处理是两种方法: 一是使用整型的返回值标识错误; 二是使用 errn…...
MySQL数据库迁移到云端如何保障安全_数据加密与SSL连接配置
MySQL云端迁移后连接被拒绝,大概率是未配置SSL/TLS:云厂商如阿里云RDS、腾讯云CDB、AWS RDS默认强制启用SSL,客户端须显式设置ssl-modeREQUIRED并正确加载CA证书,否则静默降级为明文连接。MySQL云端迁移后连接被拒绝,是…...
Postman并发测试实战:如何高效模拟高负载请求
1. Postman并发测试入门指南 第一次接触Postman并发测试时,我也被它强大的功能震撼到了。这个看似简单的API测试工具,竟然能轻松模拟出成百上千个用户同时访问系统的场景。记得去年我们团队开发的一个电商促销系统,就是靠Postman提前发现了高…...
手把手教你用STM32F103C8T6驱动DS18B20,OLED实时显示温度(附完整工程)
STM32F103C8T6与DS18B20温度监测系统实战指南 1. 项目概述与硬件准备 在嵌入式开发领域,温度监测是最基础也最实用的功能之一。使用STM32F103C8T6这款性价比极高的MCU,搭配DS18B20数字温度传感器和0.96寸OLED显示屏,可以构建一个完整的温度监…...
从无人机航拍到数字孪生:一文搞懂摄影测量学的核心概念与应用场景
从无人机航拍到数字孪生:摄影测量学的现代技术融合与实践指南 当DJI无人机在百米高空自动拍摄数百张重叠照片时,很少有人意识到这背后是一套起源于19世纪的科学技术体系——摄影测量学。这门学科已经从传统的测绘领域悄然渗透到我们日常生活的方方面面&a…...
从数据丢失到稳定传输:我是如何用硬件流控拯救蓝牙文件传输项目的
蓝牙大文件传输的稳定性救星:硬件流控实战解析 蓝牙技术早已从简单的音频传输扩展到各类工业与消费级应用场景,但当我们尝试通过蓝牙传输大容量文件——比如高清图片、固件升级包或批量传感器数据时,许多开发者都会遇到一个令人头疼的问题&am…...
论文小白逆袭指南:书匠策AI——你的课程论文“全能外挂”
在学术圈,论文写作就像一场没有硝烟的战争,每个学子都是手持笔杆的战士。但面对选题迷茫、结构混乱、文献难找、语言干瘪等“敌人”,很多人还没开战就败下阵来。别怕,今天就给你安利一款论文写作界的“秘密武器”——书匠策AI&…...
揭秘微信社交真相:3步检测谁已悄悄离开你的好友圈
揭秘微信社交真相:3步检测谁已悄悄离开你的好友圈 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 在…...
别再只用软件延时了!手把手教你用RC滤波给STM32按键做硬件消抖(附参数计算与选型指南)
从理论到实战:STM32硬件消抖全解析与RC参数设计指南 在嵌入式系统开发中,按键处理看似简单却暗藏玄机。许多工程师习惯性地依赖软件延时消抖,却忽视了硬件方案在实时性和系统负载方面的优势。当你的产品需要处理高频中断、低功耗需求或对按键…...
HarmonyOS UI 开发中eventHub用标准化 OHMUrl 拿捏集成态 HSP
做鸿蒙模块化开发的兄弟,多半都领教过维护公共组件的痛苦。特别是当公司里有十几个业务团队,每个人都从你的基础 UI 库里复制粘贴代码时——恭喜你,正式步入了“依赖地狱”。 这时候,你就需要祭出大杀器:集成态 HSP (H…...
Mem Reduct:如何用2MB工具释放Windows系统300%内存潜力?
Mem Reduct:如何用2MB工具释放Windows系统300%内存潜力? 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memr…...
