C#,数值计算——插值和外推,谢别德(Shep)插值方法的计算方法与源程序

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// 谢别德插值方法
    /// Object for Shepard interpolation using n points in dim dimensions. Call
    /// constructor once, then interp as many times as desired.
    /// </summary>
    public class Shep_interp
    {
        private int dim { get; set; }
        private int n { get; set; }
        private double[,] pts { get; set; }
        private double[] vals { get; set; }
        private double pneg { get; set; }

        /// <summary>
        /// The n dim matrix ptss inputs the data points, the vector valss the function
        /// values.Set p to the desired exponent.The default value is typical.
        /// </summary>
        /// <param name="ptss"></param>
        /// <param name="valss"></param>
        /// <param name="p"></param>
        public Shep_interp(double[,] ptss, double[] valss, double p = 2.0)
        {
            this.dim = ptss.GetLength(1);
            this.n = ptss.GetLength(0);
            this.pts = ptss;
            this.vals = valss;
            this.pneg = -p;
        }

        /// <summary>
        /// Return the interpolated function value at a dim-dimensional point pt.
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public double interp(double[] pt)
        {
            double r;
            double w;
            double sum = 0.0;
            double sumw = 0.0;
            if (pt.Length != dim)
            {
                throw new Exception("RBF_interp bad pt size");
            }
            for (int i = 0; i < n; i++)
            {
                //if ((r = rad(pt.ToArray(), pts.GetRow(i).ToArray())) == 0.0)
                r = Globals.dist(pt, Globals.CopyFrom(i, pts));
                if (Math.Abs(r) <= float.Epsilon)
                {
                    return vals[i];
                }
                sum += (w = Math.Pow(r, pneg));
                sumw += w * vals[i];
            }
            return sumw / sum;
        }
        /*
        public double rad(double[] p1, double[] p2)
        {
            double sum = 0.0;
            for (int i = 0; i < dim; i++)
            {
                sum += Globals.SQR(p1[i] - p2[i]);
            }
            return Math.Sqrt(sum);
        }
        */
    }
}
 

2 代码格式

using System;namespace Legalsoft.Truffer
{/// <summary>/// 谢别德插值方法/// Object for Shepard interpolation using n points in dim dimensions. Call/// constructor once, then interp as many times as desired./// </summary>public class Shep_interp{private int dim { get; set; }private int n { get; set; }private double[,] pts { get; set; }private double[] vals { get; set; }private double pneg { get; set; }/// <summary>/// The n dim matrix ptss inputs the data points, the vector valss the function/// values.Set p to the desired exponent.The default value is typical./// </summary>/// <param name="ptss"></param>/// <param name="valss"></param>/// <param name="p"></param>public Shep_interp(double[,] ptss, double[] valss, double p = 2.0){this.dim = ptss.GetLength(1);this.n = ptss.GetLength(0);this.pts = ptss;this.vals = valss;this.pneg = -p;}/// <summary>/// Return the interpolated function value at a dim-dimensional point pt./// </summary>/// <param name="pt"></param>/// <returns></returns>/// <exception cref="Exception"></exception>public double interp(double[] pt){double r;double w;double sum = 0.0;double sumw = 0.0;if (pt.Length != dim){throw new Exception("RBF_interp bad pt size");}for (int i = 0; i < n; i++){//if ((r = rad(pt.ToArray(), pts.GetRow(i).ToArray())) == 0.0)r = Globals.dist(pt, Globals.CopyFrom(i, pts));if (Math.Abs(r) <= float.Epsilon){return vals[i];}sum += (w = Math.Pow(r, pneg));sumw += w * vals[i];}return sumw / sum;}/*public double rad(double[] p1, double[] p2){double sum = 0.0;for (int i = 0; i < dim; i++){sum += Globals.SQR(p1[i] - p2[i]);}return Math.Sqrt(sum);}*/}
}

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

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

相关文章

【网络奇幻之旅】那年我与大数据的邂逅

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;网络奇幻之旅 ⭐每日一句&#xff1a;循梦而行&#xff0c;向阳而生 &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️ 文章目录 &#x1f4…

如何删除mac苹果电脑上面的流氓软件?

在使用苹果电脑的过程中&#xff0c;有时候我们也会遇到一些不需要的软件。无论是因为不再需要&#xff0c;或者是为了释放磁盘空间&#xff0c;删除这些软件是很重要的。本文将为大家介绍怎样删除苹果电脑上的软件&#xff01; CleanMyMac X全新版下载如下: https://wm.make…

【图论】重庆大学图论与应用课程期末复习资料2-各章考点(计算部分)(私人复习资料)

图论各章考点 二、树1、避圈法&#xff08;克鲁斯克尔算法&#xff09;2、破圈法3、Prim算法 四、路径算法1、Dijkstra算法2、Floyd算法 五、匹配1、匈牙利算法&#xff08;最大权理想匹配&#xff08;最小权权值取反&#xff09;&#xff09; 六、行遍性问题1、Fleury算法&…

华为交换机,配置攻击防范示例

攻击防范简介 定义 攻击防范是一种重要的网络安全特性。它通过分析上送CPU处理的报文的内容和行为&#xff0c;判断报文是否具有攻击特性&#xff0c;并配置对具有攻击特性的报文执行一定的防范措施。 攻击防范主要分为畸形报文攻击防范、分片报文攻击防范和泛洪攻击防范。 …

Centos7安装

想学Vmware安装可以看下下面链接,不想就算了 https://blog.csdn.net/weixin_43895362/article/details/134723073 选择第一项&#xff0c;安装直接CentOS 7&#xff0c;回车 稍等后出现进入下图,选择中文,这个只是安装时的语言 首先设置时间,时区选择上海&#xff0c;查看时…

Docker容器间网络共享

Docker容器间网络共享 1、新建网络2、容器绑定网卡3、验证 Docker环境中为了一套应用部署多个环境、并且不修改配置文件的情况下&#xff0c;做到一键部署。要求不同容器直接的网络交互&#xff0c;使用容器名称。 网络相关常用命令 #查看网络内部信息docker network inspect b…

5G承载网和大客户承载的演进

文章目录 移动4/5G承载网联通和电信4/5G承载网M-OTN&#xff08;Metro-optimized OTN&#xff09;&#xff0c;城域型光传送网PeOTN&#xff08;packet enhanced optical transport network&#xff09;&#xff0c;分组增强型OTN板卡增强型PeOTN集中交叉型PeOTN VC-OTN&#x…

将本地项目推送到github

欢迎大家到我的博客浏览。将本地项目推送到github | YinKais Blog 本地项目上传至 GitHub<!--more--> 1、进入项目根目录&#xff0c;初始化本地仓库 git init 2、创建密钥&#xff1a;创建 .ssh 文件夹&#xff0c;并进入 .ssh 文件夹 mkdir .ssh cd .ssh/ 3、生成…

高并发下缓存失效问题-缓存穿透、缓存击穿、缓存雪崩、Redis分布式锁简单实现、Redisson实现分布式锁

文章目录 缓存基本使用范式暴露的几个问题缓存失效问题---缓存穿透缓存失效问题---缓存击穿一、单机锁正确的锁粒度不正确的锁粒度无法保证查询数据库次数是唯一 二、分布式锁getCatalogJsonData()分布式锁演进---基本原理分布式锁(加锁)演进一&#xff1a;删锁失败导致死锁分布…

element中el-input限制只输入正整数或保留两位小数

文章目录 一、前言二、实现2.1、HTML2.2、只输入正整数2.3、只能输入数字或小数点 三、最后 一、前言 常见的el-input可能会限制用户只能输入正整数或保留两位小数&#xff0c;达到输入金额的需求&#xff0c;点击【跳转】访问el-input的官方文档 element-ui是有el-input-numb…

速通MySql

一、简介 1、什么是数据库 数据仓库&#xff0c;用来存储数据。访问必须用SQL语句来访问 2、数据库的类型 1、关系型数据库&#xff1a;Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询&#…

flutter开发实战-ValueListenableBuilder实现局部刷新功能

flutter开发实战-ValueListenableBuilder实现局部刷新功能 在创建的新工程中&#xff0c;点击按钮更新counter后&#xff0c;通过setState可以出发本类的build方法进行更新。当我们只需要更新一小部分控件的时候&#xff0c;通过setState就不太合适了&#xff0c;这就需要进行…