样条之连分式插值函数
核心代码:
1 // 2 // 连分式等距插值 3 // 4 static float GetValuePqs(const void* valuesPtr, int stride, int n, float t) 5 { 6 int i,j,k,m, l; 7 float z,hh,xi,xj; 8 float b[8]; 9 10 // 初值 11 z = 0.0; 12 13 // 特例处理 14 if (n < 1) 15 { 16 return(z); 17 } 18 if (n == 1) 19 { 20 z = YfGetFloatValue(valuesPtr, stride, 0); 21 return(z); 22 } 23 if (n == 2) 24 { 25 float y0 = YfGetFloatValue(valuesPtr, stride, 0); 26 float y1 = YfGetFloatValue(valuesPtr, stride, 1); 27 z = y0 + (y1 - y0)*t; 28 return(z); 29 } 30 31 float xStep = 1.0f/(n - 1); 32 33 // 连分式插值 34 if (n <= 8) 35 { 36 k = 0; 37 m = n; 38 } 39 else if (t < (4.0f*xStep)) 40 { 41 k=0; 42 m=8; 43 } 44 else if (t > ((n-5)*xStep)) 45 { 46 k = n-8; 47 m = 8; 48 } 49 else 50 { 51 k = (int)(t/xStep)-3; 52 m = 8; 53 } 54 55 b[0] = YfGetFloatValue(valuesPtr, stride, k); 56 for (i = 2; i <= m; i++) 57 { 58 hh = YfGetFloatValue(valuesPtr, stride, i+k-1); 59 l = 0; 60 j = 1; 61 62 while ((l == 0) && (j <= i-1)) 63 { 64 if (fabs(hh-b[j-1])+1.0f == 1.0f) 65 { 66 l = 1; 67 } 68 else 69 { 70 xi = (i+k-1)*xStep; 71 xj = (j+k-1)*xStep; 72 hh = (xi-xj)/(hh-b[j-1]); 73 } 74 75 j = j+1; 76 } 77 78 b[i-1]=hh; 79 if (l != 0) 80 { 81 b[i-1] = 1.0e+35F; 82 } 83 } 84 85 z = b[m-1]; 86 for (i = m-1; i >= 1; i--) 87 { 88 z = b[i-1]+(t-(i+k-1)*xStep)/z; 89 } 90 91 return(z); 92 }
切图:
相关软件的下载地址为:http://files.cnblogs.com/WhyEngine/TestSpline.zip
样条之连分式插值函数相关推荐
- 连分式插值函数-Cpp
插值方法:连分式插值函数C++实现 本文用C++方法实现连分式插值,核心函数共有3个. 各自的功能 funpqj 计算函数的连分式的新一节 funpqv 计算出函数连分式的值 funpq 以上面两个函 ...
- 样条之埃尔米特(Hermite)插值函数
核心代码: // // 埃尔米特等距插值 // static float GetValueHermite(const void* valuesPtr, int stride, int n, float ...
- 案例教学 | 如何确定ADAMS简化模型的准确性,以及简化模型精度不够怎么办?
仿真建模过程中不可避免地对各种复杂元素进行简化处理.这种建模思路的终极目标是不牺牲仿真精度.还提升仿真效率.在Adams仿真建模过程中也有一些常见的简化方式,如非线性元素按线性建模.不考虑摩擦力.通过 ...
- python scipy样条插值函数大全(interpolate里interpld函数)
scipy样条插值 scipy样条插值 1.样条插值法是一种以可变样条来作出一条经过一系列点的光滑曲线的数学方法.插值样条是由一些多项式组成的,每一个多项式都是由相邻的两个数据点决定的,这样,任意的两 ...
- matlab 二维样条插值函数,matlab中二维插值函数interp2的使用详解
下面是一段产生log-normal分布的代码,以此进行说明. clear all; clc; for t=1:100 Traffic(t) =curve(t); end MaxTraffic = ma ...
- excel三次样条函数_日常系列2:二次和三次函数样条、数据的插值
本讲导读 本讲适合在讲授或学习完高中数学的基本初等函数章节.三角函数章节和导数章节后,作为数学建模材料,在日常教学中讲授或学习.本讲内容包括但不限于: 一次函数.二次函数.三次函数的统计和物理意义及三 ...
- Matlab样条拟合曲面,样条曲面拟合及其Matlab实现
1符号和定义先讨论一元情形,给定区间[a,b]的一个分划,a=x00,x(xi,xi+k)=0,x[xi,xi+k],i=-k+1,-,n-1(iii)若xj+i=xi+jh,则Ni,k(x)=k(x ...
- cressman插值_NCL自带常用插值函数集锦
NCL作为一门气象专业语言,自带了很多气象届常用的算法和命令,比如各种强大的插值函数. 平时,我们不管做科研也好,还是做业务也好,都逃不了各种各样的插值:站点插到格点上,格点插到站点上,高分辨率插值到 ...
- Matlab中插值函数使用
注:该文从链接地址http://blog.sciencenet.cn/blog-457143-679275.html转载. MATLAB中的插值函数为interp1,其调用格式为: yi= inte ...
最新文章
- python中的随机函数怎么用_Python中随机数的使用方法有那些?
- 今生不再见, VS Code !
- pip更换国内镜像源
- C++类中成员变量的初始化有两种方式
- MySQL:备份数据库脚本报错mysqldump: Couldn‘t execute ‘SELECT COLUMN_NAME****
- 【设计模式】学习笔记8:命令模式
- Linux 离线安装软件
- 如何实现按钮水平居中
- 全局光照模型与Rendering Equation(全局光照的最为基础的核心理论) .
- Storm系列(十三)架构分析之Worker-维护ZMQ连接
- 京东万能转链API接口 含商品信息优惠券转链 京东线报如何转链?
- AD15实际工程的基本操作
- css过度动画使用简介及animate.css库使用简介
- Golang 生成钱包地址
- 回波损耗、反射系数、电压驻波比以及S参数的物理意义
- 【英语学习工具】程序员学习英语硬背硬记太难了, 在这里推荐 LeHoCat 提供免费的,看视频学英语的工具,制作英语教学课件的工具,帮助自学英语
- Scroller类的源码分析以及使用
- T00ls Lpk Sethc 首创lpk劫持方式粘滞键后门,体积超小!
- 抖音CEO张一鸣:大学四年收获及工作感悟
- 2020-06 前端技术汇总
热门文章
- spring下redis开发环境搭建
- 25个Java机器学习工具库
- 【BASIS系列】SAP Basis系统管理中重置用户缓冲哪些需要注意
- linux学习(2)——文件和目录管理
- Go Python 6: Softmax Classifier
- C#让两个长度相同的数组一一对应
- 兼容及DOM解释差异笔记——待续
- servlet.xml 出现 Referenced file contains errors(http://.......)
- php文件下载脚本,PHP文件下载实例代码浅析
- 静态链接和动态链接优缺点