C#,数值计算——插值和外推,径向基函数插值(RBF_interp)的计算方法与源程序

news2024/11/14 10:55:38

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// 径向基函数插值
    /// Object for radial basis function interpolation using n points in dim
    /// dimensions.Call constructor once, then interp as many times as desired.
    /// </summary>
    public class RBF_interp
    {
        //public delegateFunc func { get; set; } = null;

        private int dim { get; set; }
        private int n { get; set; }
        private double[,] pts { get; set; }
        private double[] vals { get; set; }
        private double[] w;
        public RBF_fn fn;
        private bool norm { get; set; }

        public RBF_interp(double[,] ptss, double[] valss, RBF_fn func, bool nrbf = false)
        {
            this.dim = ptss.GetLength(1);
            this.n = ptss.GetLength(0);
            this.pts = ptss;
            this.vals = valss;
            this.w = new double[n];
            this.fn = func;
            this.norm = nrbf;

            double[,] rbf = new double[n, n];
            double[] rhs = new double[n];
            for (int i = 0; i < n; i++)
            {
                double sum = 0.0;
                for (int j = 0; j < n; j++)
                {
                    //sum += (rbf[i, j] = fn.rbf(rad(pts[i, 0], pts[j, 0])));
                    double r = Globals.dist(Globals.CopyFrom(i, pts), Globals.CopyFrom(j, pts));
                    rbf[i, j] = func.rbf(r);
                    sum += rbf[i, j];
                }
                if (norm)
                {
                    rhs[i] = sum * vals[i];
                }
                else
                {
                    rhs[i] = vals[i];
                }
            }
            LUdcmp lu = new LUdcmp(rbf);
            lu.solve( rhs,  w);
        }

        public double interp(double[] pt)
        {
            double fval;
            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++)
            {
                //fval = fn.rbf(rad(pt[0], pts[i, 0]));
                fval = fn.rbf(Globals.dist(pt, Globals.CopyFrom(i, pts)));
                sumw += w[i] * fval;
                sum += fval;
            }
            return norm ? sumw / sum : sumw;
        }
        /*
        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]);
            }
            if (sum <= float.Epsilon)
            {
                return 0.0;
            }
            return Math.Sqrt(sum);
        }
        */
    }
}
 

2 代码格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// 径向基函数插值
    /// Object for radial basis function interpolation using n points in dim
    /// dimensions.Call constructor once, then interp as many times as desired.
    /// </summary>
    public class RBF_interp
    {
        //public delegateFunc func { get; set; } = null;

        private int dim { get; set; }
        private int n { get; set; }
        private double[,] pts { get; set; }
        private double[] vals { get; set; }
        private double[] w;
        public RBF_fn fn;
        private bool norm { get; set; }

        public RBF_interp(double[,] ptss, double[] valss, RBF_fn func, bool nrbf = false)
        {
            this.dim = ptss.GetLength(1);
            this.n = ptss.GetLength(0);
            this.pts = ptss;
            this.vals = valss;
            this.w = new double[n];
            this.fn = func;
            this.norm = nrbf;

            double[,] rbf = new double[n, n];
            double[] rhs = new double[n];
            for (int i = 0; i < n; i++)
            {
                double sum = 0.0;
                for (int j = 0; j < n; j++)
                {
                    //sum += (rbf[i, j] = fn.rbf(rad(pts[i, 0], pts[j, 0])));
                    double r = Globals.dist(Globals.CopyFrom(i, pts), Globals.CopyFrom(j, pts));
                    rbf[i, j] = func.rbf(r);
                    sum += rbf[i, j];
                }
                if (norm)
                {
                    rhs[i] = sum * vals[i];
                }
                else
                {
                    rhs[i] = vals[i];
                }
            }
            LUdcmp lu = new LUdcmp(rbf);
            lu.solve( rhs,  w);
        }

        public double interp(double[] pt)
        {
            double fval;
            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++)
            {
                //fval = fn.rbf(rad(pt[0], pts[i, 0]));
                fval = fn.rbf(Globals.dist(pt, Globals.CopyFrom(i, pts)));
                sumw += w[i] * fval;
                sum += fval;
            }
            return norm ? sumw / sum : sumw;
        }
        /*
        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]);
            }
            if (sum <= float.Epsilon)
            {
                return 0.0;
            }
            return Math.Sqrt(sum);
        }
        */
    }
}

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

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

相关文章

绝地求生:胜者组赛事强度再刷新,17即将晋级,NH闯地狱副本!

2023PGC胜者组赛终于在昨日打响&#xff0c;PCL战队17和Tianba各吃鸡&#xff0c;17更是以接近场均11分的高水准发挥确立了自己的优势。 胜者组再次让选手和观众体会到了不同的赛事强度&#xff0c;特别是艾伦格&#xff0c;未能吃到圈型的队伍最后只能轧点博取机会&#xff0c…

LangChain 13输出解析Output Parsers 自动修复解析器

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

Sass 语法详细介绍

文章目录 前言SASS缩进语法SASS的语法差异多线选择器注释import Mixin指令已弃用的语法后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正…

机器态势感知中的注意力机制

输入矢量x是原始的输入数据&#xff0c;而q、k、v是通过对x进行线性变换得到的新的表示。q、k、v是通过对x分别乘以三个矩阵Wq、Wk、Wv得到的&#xff0c;其中Wq、Wk、Wv是通过学习得到的参数矩阵。这些参数矩阵通过模型训练过程中的反向传播算法来更新&#xff0c;以使得模型能…

振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(4)

注解目录 1、znFAT 的起源 1.1 源于论坛 &#xff08;那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。&#xff09; 1.2 硬盘 MP3 推了我一把 &#xff08;“坤哥”的硬盘 MP3 播放器&#xff0c;让我深陷 FAT 文件系统不能自拔。&#xff09; 1.3 我…

新疆大学与优艾智合机器人成立联合创新实验室

11月22日至24日&#xff0c;第五届中国工业互联网大赛新疆赛站决赛在新疆维吾尔自治区昌吉回族自治州昌吉市举行。在大赛中崭露头角的优秀解决方案&#xff0c;将为绿色工厂、绿色园区、绿色供应链等建设提供新的动能&#xff0c;促进工业绿色发展。 作为大赛的成果延伸&#…

ESP32-Web-Server编程-建立第一个网页

ESP32-Web-Server编程-建立第一个网页 HTTP 简述 可能你每天都要刷几个短视频&#xff0c;打开几个网页来娱乐一番。当你打开一个网络上的视频或者图片时&#xff0c;其实际发生了下面的流程&#xff1a; 其中客户端就是你的浏览器啦&#xff0c;服务器就是远程一个存放视频或…

线性表的逻辑结构

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 只有靠自己的毅力忍耐&#xff0…

详解混合整数二次规划 (MIQP) 投资组合优化问题--附Matlab和Python实现

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&am…

sqli-labs靶场详解(less11-less16)

目录 less-11 less-12 less-13 less-14 less-15 less-16 提交参数后 动态参数不存在url中 存在于post表单中 于是在表单中进行注入点测试 先看一看这种提交数据的关卡输入提交后会有什么反应 unameadmin&passwdadmin&submitSubmit 输出 usernameadmin passwordadmin un…

基于mpvue实现的cnode社区demo(附精选源码32套,涵盖商城团购等)

社区类目没有开放给个人开发者&#xff0c;所以没能上线。 预览 项目配置文件&#xff0c;更改appid {"description": "项目配置文件","setting": {"urlCheck": true,"es6": false,"postcss": false,"minif…

万字+28张图带你探秘小而美的规则引擎框架LiteFlow

大家好&#xff0c;今天给大家介绍一款轻量、快速、稳定可编排的组件式规则引擎框架LiteFlow。 一、LiteFlow的介绍 前言 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系统&#xff0c;这些系统承载着核心业务逻辑&#xff0c;几乎每个需求都和这些核心业务有关&…

触控板窗口管理软件Swish mac中文版

Swish mac是一款触控板窗口管理工具&#xff0c;它允许用户通过简单的手势来控制窗口。Swish利用MacBook的触控板&#xff0c;使得用户可以更加便捷地管理窗口。它支持多种手势&#xff0c;例如捏合、拖动、放大和缩小等&#xff0c;使得用户可以轻松地实现窗口的切换、最小化、…

代码随想录-刷题第十天

459. 重复的子字符串 题目链接&#xff1a;459. 重复的子字符串 提示&#xff1a;Java中转为字符数组&#xff0c;不使用charAt()&#xff0c;效率会更高。 思路1&#xff1a;暴力解法。起始下标从0开始&#xff0c;第一个for循环寻找子串的结束位置。只需要遍历到中间位置&…

代码随想录训练营第30天 | 332.重新安排行程、51. N皇后、37. 解数独

332.重新安排行程 题目链接&#xff1a;重新安排行程 解法&#xff1a; 这个题&#xff0c;卡哥的思路会超时。辛辛苦苦看懂了卡哥的思路&#xff0c;结果超时了&#xff0c;直接崩溃。 看了leetcode官方的思路&#xff0c;非常简洁&#xff0c;但是里面的深意还是不太懂。 由…

Python实现WOA智能鲸鱼优化算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

Linux常用命令——batch命令

在线Linux命令查询工具 batch 在系统不繁忙的时候执行定时任务 补充说明 batch命令用于在指定时间&#xff0c;当系统不繁忙时执行任务&#xff0c;用法与at相似。 语法 batch(选项)(参数)选项 -f&#xff1a;指定包含具体指令的任务文件&#xff1b; -q&#xff1a;指定…

【论文阅读笔记】InstructDiffusion: A Generalist Modeling Interface for Vision Tasks

【论文阅读笔记】StyleAvatar3D: Leveraging Image-Text Diffusion Models for High-Fidelity 3D Avatar Generation 论文阅读笔记论文信息引言动机挑战 方法结果 关键发现相关工作1. 视觉语言基础模型2. 视觉通用模型 方法/模型视觉任务的统一说明训练数据构建网络结构 实验设…

扫地机器人市场持续火爆,景联文科技数据采集标注方案助力扫地机器人智能化升级

随着消费者对智能家居和清洁卫生的需求增加&#xff0c;扫地机器人市场规模不断扩大。市场竞争也日益激烈&#xff0c;各品牌都在努力提升产品性能和服务质量&#xff0c;以获取更大的市场份额。 IDC的统计数据显示&#xff0c;今年双十一前两周&#xff08;2023年10月23日至20…

u盘打不开,提示需要格式化怎么办

U盘作为一种常见的便携式存储设备&#xff0c;被广泛应用于生活和工作中。然而&#xff0c;有时当我们尝试打开U盘时&#xff0c;会出现提示需要格式化的错误信息&#xff0c;这是一种常见的故障。造成这种故障的原因可能包括U盘文件系统错误、病毒感染、物理损坏等。为了解决这…