python定义画函数图像函数,如何绘制隐函数的图像

  python定义画函数图像函数,如何绘制隐函数的图像

  样条曲线

  样条曲线是通过给定一系列控制顶点得到的曲线,曲线的近似形状由这些点控制。一般可分为插值样条曲线和近似样条曲线。插值样条通常用于数字绘图和动画设计,而近似样条通常用于构造物体表面。

  样条曲线是通过一系列指定点的平滑曲线。一开始样条曲线都是用物理样条得到的,放样就是用手在曲线要经过的给定定值点上固定弹性细木棒(或有机玻璃棒)。由自然弯曲样条形成的曲线是样条曲线。样条曲线不仅经过每个有序值点,而且在每个值点的一阶和二阶导数都是连续的,即曲线具有曲率连续、变化均匀的特点。

  样条——非均匀有理B样条曲线

  非均匀有理B样条曲线(NURBS)是一种通用的样条曲线,它不仅表示自由曲线和曲面,还提供了各种几何图形的统一表示,如圆锥曲面的精确表示。1983年,SDRC公司成功地将NURBS模型应用到其实体建模软件中。NURBS已经成为计算机辅助设计和计算机辅助制造的几何建模基础,并得到了广泛的应用[1]。

  AutoCAD使用此NURBS数学模型来创建样条曲线。这是在MDT中建模曲面和实体的基础。

  在详细讲解AutoCAD用于创建和修改NURBS曲线(以下简称“样条曲线”)的功能之前,有必要从数学和几何的角度了解一些NURBS曲线术语。这里只介绍与理解AutoCAD NURBS曲线相关的术语。其他数学知识详见相关资料。

  与NURBS曲线相关的术语

  类型点或拟合点:所需样条曲线必须通过的已知指定点。

  特征多边形或控制多边形:样条曲线由多段线组成的多边形组成。简单来说,通过数值计算,用光滑的参数曲线段逼近这条折线,就可以构造出样条曲线。改变多边形的顶点和数量会影响曲线的形状。这里的折线多边形是指样条曲线[2]的特征多边形或控制多边形。

  样条曲线相关属性

  样条曲线段样条曲线由一组类似于控制多边形的光滑参数曲线段组成。这些线段是样条曲线段。

  多边形/控制多边形的顶点/控制点

  构成特征多边形的每条线段的端点就是特征多边形的顶点,也称为控制多边形的控制点。只有在特殊情况下,样条曲线才能通过控制顶点。

  样条的阶数取决于样条数学定义中的基函数。直观地说,组成样条曲线的光滑参数曲线段是由控制多边形的几条相邻的连续线段确定的,这几条曲线就是样条曲线,最常用的是二次和三次样条曲线。二次样条的任何曲线段只与两个对应的弯曲段和控制多边形的三个顶点有关,改变其中一个顶点会影响三个样条段。类似地,对于三次样条曲线,曲线段由相应的三个弯曲段和四个控制点确定[2]。

  样条曲线的阶数取决于阶数,样条曲线的阶数就是阶数加1。频率越高,控制点越多。二次样条曲线的次数为3,样条曲线段由三个控制点确定。三次样条的次数为4,这取决于样条线段和四个控制顶点。

  样条线权重控制控制多边形内样条线分段的局部调整。这反映了曲线与控制多边形的接近程度。权重越大,曲线段离控制多边形越近。否则,离开。当权值为1时,NURBS曲线退化为有理B样条曲线,说明有理B样条曲线是NURBS的子集。

  样条曲线的公差是指样条曲线通过样条点的精度。公差越小,样条曲线越接近样条点。公差为零,样条曲线通过样条点[3]。

  编辑样条曲线的生成方法

  用AutoCAD样条曲线创建NURBS曲线。也可以使用“编辑样条曲线”命令来平滑多段线“多段线”拟合,并生成近似的样条曲线。以下简称“样条曲线拟合折线”。该曲线类似于真正意义上的样条曲线,但类似于由若干条直线(曲线)组成的多段线上的样条曲线。但是,可以使用Spline命令将2D和三维样条曲线拟合多段线转换为样条曲线。

  使用spline命令创建的样条曲线不同于通过编辑平滑多段线以拟合多段线创建的样条曲线:

  在拟合折线时,样条曲线显然比样条曲线更精确。在APP的应用中,样条拟合多段线不能作为数学分析的基础,无法生成曲线上的切线、法线或点数据。

  在以下示例中(图1),样条曲线用于创建混凝土人行道的高亮边界[4]。

  样条函数

  在数学的数值分析中,样条是一个特殊的函数,它是由多项式逐步定义的。英文单词spline来源于可变形样条工具,在造船和工程制图中用于绘制光滑的形状。在中国大陆,它最初被称为“牙齿功能”。后来用工程术语命名为“放样”。在插值中,样条插值通常比多项式插值更方便。低阶样条插值可以达到与高阶多项式插值相同的效果,并且可以避免被称为龙格现象的数值不稳定性。此外,低阶样条插值具有“保凸”的重要性质。在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指由线段定义的多项式参数曲线。由于花键结构

  它简单易用,拟合精确,在曲线拟合和交互式曲线设计中可以近似复杂形状。样条是这些领域中常用的曲线表示方法。定义了给定的k个点ti,称为节点(knot),分布在区间[a,b]中并且满足

  参数曲线

  称为n次样条,如果

  并且当限于每个子间隔时,

  换句话说,在每个子区间或节点长度(knot span)

  s与n次多项式相同。

  S(ti)称为节点值,(ti,S(ti))称为内部控制点。(t0,TK-1)称为节点向量。如果节点等距分布在区间[a,b]上,我们称样条是均匀的,否则是非均匀的。[1]

  样条函数的例子最简单的样条是一次样条,也称为线性样条,或多边形。一般样条是自然三次样条。自然,样条多项式的二阶导数在插值区域的两端是相等的。

  在间歇中

  ,它使样条曲线在插值区间外变直,而不影响平滑度。[1]

  样条函数注释对于给定的节点向量,所有n次样条形成一个向量空间。这个空间的基是n次B样条基.[1]

  样条函数的历史在计算机使用之前,数字微积分是手工完成的。虽然也使用分段定义的函数如signum函数或梯形函数,但大多数人更喜欢多项式,因为它们更容易计算。随着计算机的发展,样条变得越来越重要。起初,它们被用作插值中多项式的替代品,后来被用作计算机图形学中构造平滑和可变形状的工具。

  样条函数是一种分段光滑函数,在段的相交处有一定的光滑性。简称样条。样条(spline)一词来源于工程制图者使用的将一些指定的点连接成光滑曲线的工具,即弹性薄木条或薄钢带。由这种样条形成的曲线在连接点处具有连续的斜率和曲率。模拟上述原理,提出了在分段点具有一定光滑性的分段多项式插值函数。它克服了高次多项式插值可能出现的振荡现象,具有良好的数值稳定性和收敛性。这个插值过程生成的函数就是多项式样条函数。

  样条函数的研究始于20世纪中期,并在60年代与计算机辅助设计相结合,成功应用于形状设计中。样条理论已经成为函数逼近的有力工具。其应用范围也在不断扩大,不仅在数据处理、数值微分、数值积分、微分方程和积分方程的数值解等数学领域,还与最优控制、变分问题、统计学、计算几何、泛函分析等学科密切相关。

  已实现的库numpy、scipy、matplotlib

  实现所需的方法。

  插入文字

  最近:最近邻插值

  零:步长插值

  Slinear:线性插值

  二次、三次:二次和三次B样条曲线插值

  拟合和插值的区别简单来说就是插值是根据原始数据进行填充,最后生成的曲线必须经过原点。

  拟合是通过原始数据调整曲线系数,使曲线与已知点集(最无私的小猫乘法)的差异最小,最终生成的曲线不一定通过原点。

  代码实现

  # -*-编码:utf-8 -*-

  #呼叫模块

  #调用数组模块

  将numpy作为np导入

  #实现插值的模块

  从scipy导入插值

  #绘图模块

  将matplotlib.pyplot作为plt导入

  #生成随机数的模块

  随机导入

  # random.randint(0,10)生成0-10范围内的整数。

  # y是一个有10个随机数的数组,表示Y轴的值。

  y=np.array([random.randint(0,10) for _ in range(10)])

  # x是代表x轴数值的数组。

  x=NP . array([num for num in range(10)])

  #插值后的X轴值代表18个数字,从0到9,间距为0.5。

  xnew=np.arange(0,9,0.5)

  亲切的方法:

  最近、零、线性、二次、三次

  实施功能func

  func=interpolate.interp1d(x,y,kind=cubic )

  #使用xnew和func函数生成ynew,xnews的个数等于ynew的个数。

  ynew=func(xnew)

  #绘图部分

  #原图

  plt.plot(x,y, ro-)

  #拟合后的平滑曲线

  plt.plot(xnew,ynew)

  plt.show()

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: