线性插值函数的基函数构造
线性插值函数的基函数构造
这里介绍的基函数为线性插值对应的基函数,也就是通过不在同一直线上的三个点构造的平面。这里我们直接通过三个点构造一个平面,再将其写法简单的变形就可以找到对应的基函数。
设 A : ( x 1 , y 1 , z 1 ) , B : ( x 2 , y 2 , z 2 ) , C : ( x 3 , y 3 , z 2 ) A:(x_1,y_1,z_1),B:(x_2,y_2,z_2),C:(x_3,y_3,z_2) A:(x1,y1,z1),B:(x2,y2,z2),C:(x3,y3,z2)是空间中不在同一直线上的三个点,且 A , B , C A,B,C A,B,C三点在平面 π : a x + b y + c z + d = 0 \pi:ax+by+cz+d=0 π:ax+by+cz+d=0上。
这里,利用点法式确定平面 π \pi π。首先,根据向量 A B ⃗ = [ x 2 − x 1 , y 2 − y 1 , z 2 − z 1 ] \vec{AB}=[x_2-x_1,y_2-y_1,z_2-z_1] AB =[x2−x1,y2−y1,z2−z1], A C ⃗ = [ x 3 − x 1 , y 3 − y 1 , z 3 − z 1 ] \vec{AC}=[x_3-x_1,y_3-y_1,z_3-z_1] AC =[x3−x1,y3−y1,z3−z1]构造垂直于 A B ⃗ , A C ⃗ \vec{AB},\vec{AC} AB ,AC 的向量 n ⃗ \vec{n} n , n ⃗ \vec{n} n 即为所求平面的法向量,
n ⃗ = A B ⃗ × A C ⃗ = [ ( y 2 − y 1 ) ( z 3 − z 1 ) − ( y 3 − y 1 ) ( z 2 − z 1 ) , ( z 2 − z 1 ) ( x 3 − x 1 ) − ( z 3 − z 1 ) ( x 2 − x 1 ) , ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ] \vec{n} = \vec{AB}\times\vec{AC}\\\ \ \ = [(y_2-y_1)(z_3-z_1)-(y_3-y_1)(z_2-z_1), \\\ \ \ \ \ \ \ \ \ (z_2-z_1)(x_3-x_1)-(z_3-z_1)(x_2-x_1), \\\ \ \ \ \ \ \ \ \ (x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1)] n =AB ×AC =[(y2−y1)(z3−z1)−(y3−y1)(z2−z1), (z2−z1)(x3−x1)−(z3−z1)(x2−x1), (x2−x1)(y3−y1)−(x3−x1)(y2−y1)]
进而,设点 P ( x , y , z ) P(x,y,z) P(x,y,z)在平面 π \pi π上,则有 P A ⃗ ⊥ n ⃗ \vec{PA}\perp\vec{n} PA ⊥n ,即
0 = ( x − x 1 ) ( ( y 2 − y 1 ) ( z 3 − z 1 ) − ( y 3 − y 1 ) ( z 2 − z 1 ) ) + ( y − y 1 ) ( ( z 2 − z 1 ) ( x 3 − x 1 ) − ( z 3 − z 1 ) ( x 2 − x 1 ) ) + ( z − z 1 ) ( ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ) 0 = (x-x_1)((y_2-y_1)(z_3-z_1)-(y_3-y_1)(z_2-z_1))\\\ \ \ +(y-y_1)((z_2-z_1)(x_3-x_1)-(z_3-z_1)(x_2-x_1))\\\ \ \ +(z-z_1)((x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1)) 0=(x−x1)((y2−y1)(z3−z1)−(y3−y1)(z2−z1)) +(y−y1)((z2−z1)(x3−x1)−(z3−z1)(x2−x1)) +(z−z1)((x2−x1)(y3−y1)−(x3−x1)(y2−y1))
整理可得:
( ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ) z = − ( z 1 ( ( x − x 1 ) ( y 3 − y 1 − ( y 2 − y 1 ) ) + z 2 ( ( y − y 1 ) ( x 3 − x 1 ) − ( x − x 1 ) ( y 3 − y 1 ) ) + z 3 ( ( x − x 1 ) ( y 2 − y 1 ) − ( y − y 1 ) ( x 1 − x 1 ) ) + z 1 ( y − y 1 ) ( x 2 − x 1 − ( x 3 − x 1 ) ) ) + z 1 ( ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ) = z 1 ( ( x − x 2 ) ( y 2 − y 3 ) + ( y − y 2 ) ( x 3 − x 2 ) ) + z 2 ( ( x − x 3 ) ( y 3 − y 1 ) + ( y − y 3 ) ( x 1 − x 3 ) ) + z 3 ( ( x − x 1 ) ( y 1 − y 2 ) + ( y − y 1 ) ( x 2 − x 1 ) ) ((x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1))z \\= -(z_1((x-x_1)(y_3-y_1-(y_2-y_1))\\\ \ \ +z_2((y-y_1)(x_3-x_1)-(x-x_1)(y_3-y_1))\\\ \ \ +z_3((x-x_1)(y_2-y_1)-(y-y_1)(x_1-x_1))\\\ \ \ +z_1(y-y_1)(x_2-x_1-(x_3-x_1)))\\\ \ \ +z_1((x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1)) \\=z_1((x-x_2)(y_2-y_3)+(y-y_2)(x_3-x_2))\\+z_2((x-x_3)(y_3-y_1)+(y-y_3)(x_1-x_3))\\+z_3((x-x_1)(y_1-y_2)+(y-y_1)(x_2-x_1)) ((x2−x1)(y3−y1)−(x3−x1)(y2−y1))z=−(z1((x−x1)(y3−y1−(y2−y1)) +z2((y−y1)(x3−x1)−(x−x1)(y3−y1)) +z3((x−x1)(y2−y1)−(y−y1)(x1−x1)) +z1(y−y1)(x2−x1−(x3−x1))) +z1((x2−x1)(y3−y1)−(x3−x1)(y2−y1))=z1((x−x2)(y2−y3)+(y−y2)(x3−x2))+z2((x−x3)(y3−y1)+(y−y3)(x1−x3))+z3((x−x1)(y1−y2)+(y−y1)(x2−x1))
由三角形面积 S △ A B C = 1 / 2 ( ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ) S_{\triangle ABC}=1/2((x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1)) S△ABC=1/2((x2−x1)(y3−y1)−(x3−x1)(y2−y1))因此有
z = [ z 1 ( ( x − x 2 ) ( y 2 − y 3 ) + ( y − y 2 ) ( x 3 − x 2 ) ) + z 2 ( ( x − x 3 ) ( y 3 − y 1 ) + ( y − y 3 ) ( x 1 − x 3 ) ) + z 3 ( ( x − x 1 ) ( y 1 − y 2 ) + ( y − y 1 ) ( x 2 − x 1 ) ) ] / ( 2 ∗ S △ A B C ) z = [z_1((x-x_2)(y_2-y_3)+(y-y_2)(x_3-x_2))\\\ \ +z_2((x-x_3)(y_3-y_1)+(y-y_3)(x_1-x_3))\\\ \ +z_3((x-x_1)(y_1-y_2)+(y-y_1)(x_2-x_1))]/(2*S_{\triangle ABC}) z=[z1((x−x2)(y2−y3)+(y−y2)(x3−x2)) +z2((x−x3)(y3−y1)+(y−y3)(x1−x3)) +z3((x−x1)(y1−y2)+(y−y1)(x2−x1))]/(2∗S△ABC)
因此线性插值基函数可以写为
N A = ( ( x − x 2 ) ( y 2 − y 3 ) + ( y − y 2 ) ( x 3 − x 2 ) ) / ( 2 ∗ S △ A B C ) N_A = ((x-x_2)(y_2-y_3)+(y-y_2)(x_3-x_2))/(2*S_{\triangle ABC}) NA=((x−x2)(y2−y3)+(y−y2)(x3−x2))/(2∗S△ABC)
N B = ( ( x − x 3 ) ( y 3 − y 1 ) + ( y − y 3 ) ( x 1 − x 3 ) ) / ( 2 ∗ S △ A B C ) N_B=((x-x_3)(y_3-y_1)+(y-y_3)(x_1-x_3))/(2*S_{\triangle ABC}) NB=((x−x3)(y3−y1)+(y−y3)(x1−x3))/(2∗S△ABC)
N C = ( ( x − x 1 ) ( y 1 − y 2 ) + ( y − y 1 ) ( x 2 − x 1 ) ) / ( 2 ∗ S △ A B C ) N_C=((x-x_1)(y_1-y_2)+(y-y_1)(x_2-x_1))/(2*S_{\triangle ABC}) NC=((x−x1)(y1−y2)+(y−y1)(x2−x1))/(2∗S△ABC)
上述基函数也可以写为
N A = ( x ( y 2 − y 3 ) + y ( x 3 − x 2 ) + x 2 y 3 − y 2 x 3 ) / ( 2 ∗ S △ A B C ) N_A = (x(y_2-y_3)+y(x_3-x_2)+x_2y_3-y_2x_3)/(2*S_{\triangle ABC}) NA=(x(y2−y3)+y(x3−x2)+x2y3−y2x3)/(2∗S△ABC)
N B = ( x ( y 3 − y 1 ) + y ( x 1 − x 3 ) + x 3 y 1 − y 3 x 1 ) / ( 2 ∗ S △ A B C ) N_B=(x(y_3-y_1)+y(x_1-x_3)+x_3y_1-y_3x_1)/(2*S_{\triangle ABC}) NB=(x(y3−y1)+y(x1−x3)+x3y1−y3x1)/(2∗S△ABC)
N C = ( x ( y 1 − y 2 ) + y ( x 2 − x 1 ) + x 1 y 2 − x 2 y 1 ) / ( 2 ∗ S △ A B C ) N_C=(x(y_1-y_2)+y(x_2-x_1)+x_1y_2-x_2y_1)/(2*S_{\triangle ABC}) NC=(x(y1−y2)+y(x2−x1)+x1y2−x2y1)/(2∗S△ABC)
注意:这里利用空间中不在同一条直线上的三个点确定唯一平面,通过这种方式构造平面方程,进一步改写方程样式,得到基函数。
实验结果
我们绘制过点 A : ( 1 , 2 , 1 ) , B : ( 2 , 3 , 6 ) , C : ( 1 , 6 , 3 ) A:(1,2,1),B:(2,3,6),C:(1,6,3) A:(1,2,1),B:(2,3,6),C:(1,6,3)的平面 π \pi π,结果如下
实例代码如下:
clc,clear
x = [1,2,4];
y = [2,3,1];
z = [1,6,3];
p = (x(1)-x(2))*(y(1)-y(3)) - (y(1)-y(2))*(x(1)-x(3));
% K1 = @(t,s)(s-y(2))*(x(3)-x(2)) - (t-x(2))*(y(3)-y(2));
% K2 = @(t,s)(s-y(3))*(x(1)-x(3)) - (t-x(3))*(y(1)-y(3));
% K3 = @(t,s)(s-y(1))*(x(2)-x(1)) - (t-x(1))*(y(2)-y(1));
K1 = @(t,s)((y(2)-y(3))*t - (x(2)-x(3))*s + x(2)*y(3)-x(3)*y(2));
K2 = @(t,s)((y(3)-y(1))*t - (x(3)-x(1))*s + x(3)*y(1)-x(1)*y(3));
K3 = @(t,s)((y(1)-y(2))*t - (x(1)-x(2))*s + x(1)*y(2)-x(2)*y(1));
disp('下面这个矩阵为基函数在对应点处的值,即克罗内克尔符号矩阵')
disp([K1(x(1),y(1)),K1(x(2),y(2)),K1(x(3),y(3))K2(x(1),y(1)),K2(x(2),y(2)),K2(x(3),y(3))K3(x(1),y(1)),K3(x(2),y(2)),K3(x(3),y(3))]/p)
F = @(t,s) (z(1) * K1(t,s) + z(2) * K2(t,s) + z(3) * K3(t,s))/p;
% F = triangle_2D(x,y,z);
xx = 0:0.1:5;
for i = 1:length(xx)for j = 1:length(xx)Z(j,i) = F(xx(i),xx(j));end
end
% 注意到surf绘图中,Z的列数对应的是X,行数对应的是Y,在制作Z矩阵时,应该注意这一点。
[X,Y] = meshgrid(xx);
surf(X,Y,Z)
hold on
plot3(x,y,z,'r*')
线性插值函数的基函数构造相关推荐
- 贝叶斯方法---分段线性插值函数画图
一.贝叶斯方法介绍 1.不确定表示 在主观贝叶斯方法中,知识是用产生式表示的,其形式为: IF E THEN (LS,LN) H 其中(LS,LN)用来表示该知识的知识强度,LS(充分 ...
- python线性插值函数_Numpy一维线性插值函数的用法
直接列出函数: numpy.interp(x, xp, fp, left=None, right=None, period=None) x - 表示将要计算的插值点x坐标 xp - 表示已有的xp数组 ...
- 有限元-二维有限元编程(矩形区域、三角剖分)
有限元-矩形区域三角剖分程序 本文将介绍矩形区域上Poisson方程−Δu=f,Δ=∂∂x2+∂∂y2-\Delta u=f,\Delta= \frac{\partial}{\partial x^2} ...
- 基于Python的二维有限元声波方程正演计算
基于Python的二维有限元声波方程正演计算 一.基础理论与相关公式的导出 什么是有限元方法? 有限元是计算复杂数学问题近似解的工具.当数学方程过于复杂,无法用正常的方法求解,并且一定程度的误差是可以 ...
- matlab:Lagrange插值函数构造
L a g r a n g e Lagrange Lagrange基函数及 L a g r a n g e Lagrange Lagrange多项式的构造 构 造 L a g r a n g e 基 ...
- 数值分析实习作业(各种插值函数与积分公式的python代码实现)
数值分析实习作业 1.对函数 f(x) f ( x ) f(x)进行插值 f(x)=11+x2 f ( x ) = 1 1 + x 2 f(x)=\frac{1}{1+x^{2}} (1)令插值节点为 ...
- 数学建模十大算法02—插值与拟合(拉格朗日插值、三次样条插值、线性最小二乘法……)
文章目录 引入 一.插值 1.1 分段线性插值 1.2 牛顿插值法 1.3 拉格朗日插值多项式 1.4 样条插值 1.4.1 三次样条插值 1.5 二维插值 1.5.1 插值节点为网格节点 1.5.2 ...
- 【基础操作】线性基详解
线性基是一个奇妙的集合(我摘的原话) 这里以非 $OI$ 的角度介绍了线性基 基础部分 模板题 给你 $n$ 个数的集合,让你选出任意多个不重复的数,使得它们的异或和最大. 线性基是什么 我们称集合 ...
- 线性表的定义和基本运算之线性结构
一.线性表的逻辑定义和性质 线性表是最简单和最常用的一种数据结构,他是由n个数据元素(结点)a1,a2,a3,a4........an组成的有限序列.其中,数据元素个数那位表的长度.当n为0时称为空表 ...
最新文章
- 演讲实录 | DevOps 2021年度洞察
- docker mysql容器 修改时区
- 我去!每天都用的这个操作居然算“黑客行为”?
- 码农翻身之——分布式,集群,负载均衡
- 机器学习 来源框架_机器学习的秘密来源:策展
- linux远程监控毕业设计,毕业设计论文:基于嵌入式Linux远程监控系统的设计与实现.doc...
- 【Angular专题】——【译】Angular中的ForwardRef
- java运行时异常与一般异常有何异同_JVM | 虚拟机运行时数据区域划分和使用详解...
- 使用setuptools和cython打包python程序的时候遇到:Microsoft visual c++ 14.0 is required问题解决办法
- Django中间件简析
- 360安全卫士对于易量安装打包的可执行程序进行病毒误报
- 注意点在XMind 6中的使用注意事项
- nvidia ubuntu 驱动升级_解决 Ubuntu 在启动时冻结的问题
- 成都电子地图 高清15、17、19级别 谷歌电子地图资源
- 解决virtualbox导入虚拟机报错E_INVALIDARG (0x80070057)问题
- 如何使用GOOGLE高级搜索技巧
- c语言编写while乘法表,用C语言的while循环,打印九九乘法表,
- DSP从flash启动
- 使用maven打war包时报[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war...
- 【阿里巴巴】学习Java在面试过程中跳槽成功的心得总结