基于移动最小二乘法的曲线曲面拟合论文阅读笔记

news2024/9/28 15:31:57

基于移动最小二乘法的曲线曲面拟合论文阅读笔记

论文地址:http://www.cnki.com.cn/Article/CJFDTotal-GCTX200401016.htm

一、Problem Statement

传统的曲线(曲面)拟合方法一般使用最小二乘法, 通过使误差的平方和最小, 得到一个线性方程组,求解线性方程组就可以得到拟合曲线(曲面)。如果离散数据量比较大、形状复杂,还需要进行分段(分块)拟合和平滑化,这在实际中往往带来一定的困难。

二、Direction

建立了了一种基于移动最小二乘(Moving Least-Squares, MLS)法的曲线曲面拟合方法。

  • 拟合函数的建立不同。这种方法建立拟合函数不是采用传统的多项式或其他函数,而是由一个系数向量 α ( x ) \alpha(x) α(x)和基函数 p ( x ) p(x) p(x)构成,这里 α ( x ) \alpha(x) α(x)不是常数,而是坐标 x x x的函数。
  • 引入紧支(Compact Support)概念,认为点 x x x处的值 y y y只受 x x x附近子域内节点影响,这个子域称作点 x x x的影响区域。影响区域上定义一个权函数 w ( x ) w(x) w(x),如果权函数在这个区域内取为常数,就得到传统的最小二乘法。

三、Method

使用移动最小二乘法进行曲线曲面拟合的基本思想是先将拟合区域网格化,然后求出网格点上节点值,最后连接网格节点形成拟合曲线(曲面)。

在这里插入图片描述

1. 拟合函数的建立

在拟合区域的一个局部子域上,拟合函数 f ( x ) f(x) f(x)表示为:

f ( x ) = ∑ i = 1 m α i ( x ) p i ( x ) = p T ( x ) α ( x ) \begin{equation}f(x) = \sum_{i=1}^m \alpha_i(x)p_i(x)= p^T(x)\alpha(x) \end{equation} f(x)=i=1mαi(x)pi(x)=pT(x)α(x)

式中, α ( x ) = [ α 1 ( x ) , α 2 ( x ) , Λ , a m ( x ) ] T \alpha(x)=[\alpha_1(x), \alpha_2(x), \Lambda, a_m(x)]^T α(x)=[α1(x),α2(x),Λ,am(x)]T待求系数它是坐标 x x x的函数 p ( x ) = [ p 1 ( x ) , p 2 ( x ) , Λ , p m ( x ) ] T p(x)=[p_1(x), p_2(x), \Lambda, p_m(x)]^T p(x)=[p1(x),p2(x),Λ,pm(x)]T称为基函数它是一个 k k k阶完备的多项式 m m m基函数的项数。例如:

空间维度一阶形式二阶形式
1维: x = ( x ) x=(x) x=(x) p 1 = 1 , p 2 = x p_1 = 1, p_2 = x p1=1,p2=x p 1 = 1 , p 2 = x , p 3 = x 2 p_1 = 1, p_2 = x, p_3=x^2 p1=1,p2=x,p3=x2
2维: x = ( x , y ) x=(x,y) x=(x,y) p 1 = 1 , p 2 = x , p 3 = y p_1 = 1, p_2 = x, p_3=y p1=1,p2=x,p3=y p 1 = 1 , p 2 = x , p 3 = y , p 4 = x y , p 5 = x 2 , p 6 = y 2 p_1 = 1, p_2 = x, p_3=y, \\p_4=xy, p_5=x^2, p_6=y^2 p1=1,p2=x,p3=y,p4=xy,p5=x2,p6=y2
3维: x = ( x , y , z ) x=(x,y,z) x=(x,y,z) p 1 = 1 , p 2 = x , p 3 = y , p 4 = z p_1 = 1, p_2 = x, p_3=y, p_4=z p1=1,p2=x,p3=y,p4=z p 1 = 1 , p 2 = x , p 3 = y , p 4 = z , p 5 = x y , p 6 = x z , p 7 = y z p 8 = x 2 , p 9 = y 2 , p 10 = z 2 p_1 = 1, p_2 = x, p_3=y, p_4=z, \\p_5=xy, p_6=xz,p_7=yz\\p_8=x^2, p_9=y^2, p_{10}=z^2 p1=1,p2=x,p3=y,p4=z,p5=xy,p6=xz,p7=yzp8=x2,p9=y2,p10=z2

不同阶的基函数以获得不同的精度,取不同的权函数以改变拟合曲线(曲面)的光滑度

MLS中,需要通过调整系数 α ( x ) \alpha(x) α(x),使得节点附近采样点取值与拟合函数在采样点取值之间的差的加权平方和最小。由此建立最优化模型,对向量 α ( x ) = [ α 1 ( x ) , α 2 ( x ) , Λ , a m ( x ) ] T \alpha(x)=[\alpha_1(x), \alpha_2(x), \Lambda, a_m(x)]^T α(x)=[α1(x),α2(x),Λ,am(x)]T计算加权L2范数 ∣ ∣ x ∣ ∣ 2 = ( ∑ i = 1 n x i 2 ) 1 2 ||x||_2 = (\sum_{i=1}^nx_i^2)^{\frac{1}{2}} ∣∣x2=(i=1nxi2)21 如下所示:

J = ∑ I = 1 n w ( x − x I ) [ f ( x ) − y I ] 2 = ∑ I = 1 n w ( x − x I ) [ p T ( x ) α ( x ) − y I ] 2 \begin{equation}J = \sum_{I=1}^nw(x-x_I)[f(x)-y_I]^2=\sum_{I=1}^nw(x-x_I)[p^T(x)\alpha(x) -y_I]^2\end{equation} J=I=1nw(xxI)[f(x)yI]2=I=1nw(xxI)[pT(x)α(x)yI]2

其中, n n n是影响区域内节点的数目,如下图所示。

在这里插入图片描述

f ( x ) f(x) f(x)拟合函数 y I y_I yI x = x I x=x_I x=xI处的节点值, y I = y ( x I ) y_I=y(x_I) yI=y(xI) w ( x − x I ) w(x-x_I) w(xxI)是节点 x I x_I xI权函数(后续讲解)

为了确定系数 α ( x ) \alpha(x) α(x),式子 ( 2 ) (2) (2)应该取最小值,因此对 α ( x ) \alpha(x) α(x)求导可得,

∂ J ∂ α = A ( x ) α ( x ) − B ( x ) y = 0 \begin{equation} \frac{\partial J}{\partial \alpha} = A(x)\alpha(x)-B(x)y = 0 \end{equation} αJ=A(x)α(x)B(x)y=0

α ( x ) = A − 1 ( x ) B ( x ) y \begin{equation} \alpha(x) = A^{-1}(x) B(x) y \end{equation} α(x)=A1(x)B(x)y

其中
A ( x ) = ∑ i = 1 n w ( x − x I ) p ( x I ) p T ( x I ) A(x) = \sum_{i=1}^n w(x-x_I)p(x_I)p^T(x_I) A(x)=i=1nw(xxI)p(xI)pT(xI)

B ( x ) = [ w ( x − x I ) p ( x I ) , w ( x − x 2 ) p ( x 2 ) , Λ , w ( x − x n ) p ( x n ) ] B(x)=[w(x-x_I)p(x_I),w(x-x_2)p(x_2),\Lambda,w(x-x_n)p(x_n)] B(x)=[w(xxI)p(xI),w(xx2)p(x2),Λ,w(xxn)p(xn)]

y T = [ y 1 , y 2 , Λ , y n ] y^T=[y_1, y_2, \Lambda, y_n] yT=[y1,y2,Λ,yn]

最后,将式子 ( 4 ) (4) (4)带入式子 ( 1 ) (1) (1)中,可以得到MSL拟合函数

f ( x ) = ∑ i = 1 m α i ( x ) p i ( x ) = p T ( x ) α ( x ) = ∑ i = 1 m p T ( x ) A − 1 ( x ) B ( x ) y = ∑ I = 1 n ϕ I k ( x ) y I = O ¨ k ( x ) y f(x) = \sum_{i=1}^m \alpha_i(x)p_i(x)= p^T(x)\alpha(x) \\= \sum_{i=1}^m p^T(x) A^{-1}(x) B(x) y \\=\sum_{I=1}^n \phi_I^k(x)y_I=\ddot{O}^k(x)y f(x)=i=1mαi(x)pi(x)=pT(x)α(x)=i=1mpT(x)A1(x)B(x)y=I=1nϕIk(x)yI=O¨k(x)y
其中 = O ¨ k ( x ) =\ddot{O}^k(x) =O¨k(x)称为形函数 k k k表示基函数的阶数。

O ¨ k ( x ) = [ ϕ 1 k , ϕ 2 k , Λ , ϕ n k ] = p T ( x ) A − 1 ( x ) B ( x ) \ddot{O}^k(x) = [\phi_1^k, \phi_2^k, \Lambda, \phi_n^k] = p^T(x) A^{-1}(x) B(x) O¨k(x)=[ϕ1k,ϕ2k,Λ,ϕnk]=pT(x)A1(x)B(x)

需要注意的是,即使基函数 p ( x ) p(x) p(x)为多项式,MLS拟合函数 f ( x ) f(x) f(x)不再是多项式

2. 权函数

上面公式 ( 2 ) (2) (2)中,有一个权函数 w ( x − x I ) w(x-x_I) w(xxI)MLS认为点 x x x处的值 y y y只受 x x x附近子域内节点影响,这个子域称作点 x x x的影响区域。 影响区域上定义一个权函数 w ( x ) w(x) w(x),如果权函数在这个区域内取为常数,就得到传统的最小二乘法。权函数在 x x x的一个子域内不等于零,在这个子域之外全为零,这个子域称为权函数的支持域(即 x x x的影响区域)。一般选择圆形作为权函数的支持域,其半径记为 S m a x S_{max} Smax,如上图1所示。由于权函数的紧支性,只有这些包含在影响区域内的数据点对点 x x x 的取值有影响。

  • 权函数 w ( x − x I ) w(x-x_I) w(xxI)应该是非负的,并且随着 ∣ ∣ x − x I ∣ ∣ 2 ||x-x_I||_2 ∣∣xxI2的增加单调递减。
  • 权函数具有一定的光滑性,因为拟合函数会继承权函数的连续性。
  • 如果权函数 w ( x − x I ) w(x-x_I) w(xxI) C 1 C^1 C1阶连续的,则拟合函数也是 C 1 C^1 C1阶连续的。
  • 影响区域应该包含足够多的节点,以使得 A ( x ) A(x) A(x)可逆。

四、Performance

不同权函数的表现:
在这里插入图片描述

● 图 3( a)使用的权函数在整个区域内都是常数,这时移动最小二乘法相当于传统的最小二乘法,其行为相当于是一个线性拟合。
● 图 3( b)中权函数在一个小的子域内等于常数, 在其它地方等于零。 虽然这个权函数也具有紧支性, 但是不光滑, 它导致的拟合曲线就是将所有的数据点连线,即相当于分段线性插值。
● 图 3( c)中权函数是三次样条函数,不但具有紧支特性, 而且光滑。 即使使用的是线性基函数, 但由于继承了权函数的连续性, 拟合曲线仍然具有很好的光滑性。

图 3 说明了 MLS 中权函数的重要性。在最后一组图中, 仅使用线性基函数, 就获得很好的拟合结果,这是传统最小二乘法和其它拟合方法无法做到的。

曲面拟合情况:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

五、Conclusion

移动最小二乘法使生成的曲线曲面具有精度高、 光滑性好等许多优点。

  • 不需要事先确定拟合函数的类型;
  • 由于紧支概念的引入,不需要进行分段(分块)拟合;
  • 不需要求解线性方程组,从而避免了求解时方程组的系数矩阵可能是病态的情况;
  • 精度比较高,能够捕捉到数据的剧烈变化;
  • 只要选择合适的基函数和权函数,可以得到足够光滑的拟合曲线(曲面)。

移动最小二乘法进行曲线曲面拟合一个比较大的缺点就是计算过程比其它拟合方法要稍微复杂, 计算量也相对要大一些。

六、Reference

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

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

相关文章

通过alist挂在阿里网盘的方法

1、在github官网https://github.com/alist-org/alist/releases/download/v3.8.0/alist-windows-amd64.zip下载alist软件客户端,双击运行,可以看到默认的密码和服务器地址,打开网页http://localhost:5244/manage/accounts,填写密码…

【Linux】Linux工具

文章目录软件包管理器yumVIM编辑器Linux编译器-gcc/g使用gcc如何完成预处理(进行宏替换)编译(生成汇编)汇编(生成机器课识别代码)链接在这里涉及到一个重要的概念: 函数库函数库一般分为静态库和动态库两种gcc选项gcc选项记忆Linux项目自动化构建工具-make/Makefile背景理解实例…

解决vue中报错 Duplicate keys detected:‘1‘. This may cause an update error.

报错截图: 报错原因: 通过上图的报错信息我们不难看出,报错的主要原因出现在 key 值上,报错的意思大概是检测到重复的 key 值,通俗来讲就是你的 key 值不是唯一的。 解决方案: 问题的根源找到了&#xff…

【初阶数据结构】——链表常见面试题剖析

文章目录前言题目1:移除链表元素题目分析思路1:暴力求解思路2:取非val值尾插至新链表思路讲解思考代码实现不带哨兵位带哨兵位题目2:合并两个有序链表题目分析思路讲解代码实现不带哨兵位带哨兵位题目3:反转链表题目分…

用ode45解微分方程遇到的实际问题

最近在用ode45解微分方程数值解,试图复现论文中的图。一般来说说微分方程(组)只要按照响应的条件去撰写好对应的回调函数即可,基本没什么难度,但对于本文遇到的的这个问题,可能还需要一些技巧去实现解法&am…

动态路由和导航守卫

一、动态路由1、什么是动态路由?将URL地址中可变的内容设置成参数,根据不同的参数渲染不同的组件。(组件可以复用)2、动态路由如何进行参数的传递:(1)如何设置URL地址中的参数:’/ur…

【手写 Vue2.x 源码】第十二篇 - 生成 ast 语法树-流程说明

一,前言 上篇,主要介绍了 vue 数据渲染核心流程,涉及以下几个点: 初次渲染时 template 模板被编译为 ast 语法树;通过 ast 语法树生成 render 函数;通过 render 函数返回 vnode 虚拟节点;使用…

基于K8s的DevOps平台实践(三)

文章目录前言1. Jenkins与k8s集成🍑 插件安装及配置🍑 演示动态slave pod🍑 Pod-Template中容器镜像的制作🍑 实践通过Jenkinsfile实现demo项目自动发布到kubenetes环境2. Jenkins集成Sonarqube🍑 sonarqube架构简介&a…

初阶产品经理必看:如何快速进阶B端产品经理

​从去年开始,大批的互联网企业开始转战B端,众多传统企业也早在几年前就开始向互联网转型。 产业互联网的兴起,让一个岗位的潜藏价值正在逐渐爆发,尤其是富有经验的背景,更加让身价越来越高。 这个岗位就是&#xff…

QProcess的非阻塞式用法以及QApplication::processEvents的使用

一、QProcess的阻塞模式QProcess的应用场景非常广泛。可以使用它在qt程序中执行其他进程,并与之进行通信。当使用它执行一些终端命令和操作时,命令和操作往往是需要一定的时间的,这时QProcess本身提供了方法如:waitForStarted() /…

神经网络自适应PID控制及其应用

神经网络自适应PID控制及其应用 总结来自重庆大学宋永瑞教授2022暑期校园行学术会议 1. 研究背景 目前人工智能的发展为很多领域里的研究提供了可延展性,提供了新的研究问题的思路,无人系统和人工智能正走向深度融合,无人系统里具有核心驱动作…

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(四)

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(四)一、实验目的二、 实验内容2.4、将"China”译成密码三、 实验步骤3.4、顺序程序设计实验题目4:将"China”译成密码的实验步骤3.4.1、变量的定义与赋初…

Android EventBus源码深入解析

前言 EventBus:是一个针对Android进行了优化的发布/订阅事件总线。 github对应地址:EventBus 大家肯定都已经比较熟悉了,这里重点进行源码分析; EventBus源码解析 我们重点从以下三个方法入手,弄清楚register、unre…

关于sql注入这一篇就够了(适合入门)

本文章根据b站迪总课程总结出来,若有不足请见谅 目录 存在sql注入条件 判断数据库类型 注入mysql思路 判断网站是否存在注入点 判断列名数量(字段数) 文件读写操作 网站路径获取方法 注入类型 按注入点数据类型来分类 根据提交方式分类 猜测查询方式 sql…

(Java高级教程)第三章Java网络编程-第四节:TCP流套接字(ServerSocket)编程

文章目录一:Java流套接字通信模型二:相关API详解(1)ServerSocket(2)Socket三:TCP通信示例一:客户端发送什么服务端就返回什么(1)代码(2&#xff0…

量子计算(二十一):Deutsch-Josza算法

文章目录 Deutsch-Josza算法 Deutsch-Josza算法 量子算法是量子计算落地实用的最大驱动力,好的量子算法设计将更快速推动量子计算的发展。 Deutsch-Jozsa量子算法,简称D-J算法,DavidDeutsch和RichardJozsa早在1992年提出了该算法&#xff0…

分布式事务方案分析:两阶段和TCC方案(图+文)

1 缘起 补充事务相关知识过程中, 发现,默认的知识都是基于单体服务的事务,比如ACID, 然而,在一些复杂的业务系统中,采用微服务架构构建各自的业务, 就有了分布式事务的概念,比如&am…

一站式云原生体验|龙蜥云原生ACNS + Rainbond

关于 ACNS 龙蜥云原生套件 OpenAnolis Cloud Native Suite(ACNS)是由龙蜥社区云原生 SIG 推出的基于 Kubernetes 发行版本为基础而集成的套件能力,可以提供一键式部署,开箱即用,以及丰富的云原生基础能力,…

JProfiler的使用

一、安装 从https://www.ej-technologies.com/download/jprofiler/files获取,如果需要对服务器远程分析,注意服务器版本的jprofiler和windows版本一致。 二、监控一个本地进程 2.1 不使用idea 安装之后,打开jprofiler,点击红框…

电脑蓝屏并提示BAD_POOL_CALLER怎么办?

电脑蓝屏可以说是Windows的常见问题,各种各样的终止代码对应着不同的问题。如果你的蓝屏代码显示BAD_POOL_CALLER,这篇文章就是为你提供的。 可能导致BAD_POOL_CALLER蓝屏错误的原因: 1、硬件或软件不兼容 2、过时或错误的设备驱动程序 3…