非圆曲线数学处理的一般方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

非圆曲线非圆曲线数学处理数学处理数学处理的一般的一般的一般方法方法方法
数控系统一般只有直线和圆弧插补的功能,对于非圆曲线轮廓,只有用直线或圆弧去逼近它,“节点”就是逼近线段与非圆曲线的交点。

一个已知曲线的节点数主要取决于逼近线段的形状(直线段还是圆弧段),曲线方程的特性以及允许的逼近误差。

将这三者利用数学关系求解,即可求得一系列的节点坐标,并按节点划分程序段。

以下简介常用的直线逼近及圆弧逼近的数学处理方法。

2.1 常用非圆曲线直线逼近方法常用非圆曲线直线逼近方法
2.1.1 等间距的直线逼近的节点计算
这是一种最简单的算法。

如图2.1所示,已知方程)(x f y =,根据给定的x ∆求出i x ,求i x 代入)(x f y =即可求得一系列i y ,即为每个线段的终点坐标,并以该坐标值编制直线程序段。

X
Y
N
M
M )
(x f
图2.1 等间距逼近方法的原理图
x ∆取值的大小取决于曲线的曲率和允许误差δ。

一般先取1.0=∆x 试算并校验。

误差校验方法如图2.1中的右图所示,MN 为试算后的逼近线段,作''N M 平行于MN 且两直线的距离为允δ。

根据节点的坐标可求得
MN 方程:0=++c by ax ,则''N M 的方程为22b a c by ax +±=+允δ 求解联立方程:
)
(22x f y b a c
by ax =+±−+=允δ (2-1)
如果无解,即没有交点,表示逼近误差小于允δ;如果只有一个解,即等间
距与轮廓线相切,表示逼近误差等于允δ;如果有两个或两个以上的解,表示逼近误差大于允δ,这时应缩小等间距坐标的增量值,重新计算节点和验算逼近误差,直至最大的逼近误差小于等于允δ。

等间距法计算简单,但由于取定值x ∆应保证曲线曲率最大处的逼近误差允许值,所以程序可能过多。

用此种方法进行数学处理,它的逼近曲线与轮廓线的逼近误差参差不齐,程序明显增多,影响机床的加工效率,不适合大批量的加工,成本也比较高。

2.1.2 等弦长直线逼近的节点计算
就是使所有逼近线段的长度相等,如图2.2所示。

计算步骤如下:
X
Y )
(x f y =

δ
图2.2 等弦长逼近方法的原理图
(1)确定允许的弦长:由于曲线各处的曲率不等,等弦长逼近后,最大误差max δ必在min R 处(设为图中的CD 段),则l 为
允允)δδmin 2min 2
min 22(2R R R l ≈−−= (2)求min R 。

曲线)(x f y =任一点的曲率半径为
/y")y'(1R 3/22+= (2-2)
取0/d =dx R ,即
0'")'1("'322=+−y y y y (2-3)
根据)(x f y =求得'""'y y y 、、,并由式(2-3)求得x 值代入式(2-2)即得min R 。

(3)以曲线起点A 为圆心,作半径为l 的圆交)(x f y =曲线于B 点,联立求解
)()()2
22x f y l y y x x a a ==−+−(
得B B y x 、。

(4)顺序以B 、C…圆心,重复步骤(3),即可求得其余各节点的坐标值。

等弦长法对于曲线各处的曲率相差较大时,所求得的节点数过多,所以这种方法宜用于曲率变化不大的曲线节点计算。

2.1.3 等误差直线逼近的节点计算
要使得所有逼近线段的误差δ都相等,如图2-3所示,需要如下得计算步骤:
X
Y
图2.3 等误差逼近方法的原理图
(1)确定所有逼近线段的误差允δ的圆方程,即以起点),(a a y x A 圆心,允δ为半径作圆:
2允(δ=−+−22)()a a y y x x
将方程写成)(x c y =
(2)求与曲线的公切线PT 的斜率k :
)/()(P T p T x x y y k −−=
为了求得P T P T y y x x 、、、,需求解联立方程:
点的切线方程)
(曲线在 (曲线方程) (圆切线方程)

(允许圆方程T x x f y y x f y x x x c y y x c y P T P T T T P T P P T P p )(')())((')(−=−=−=−=
(3)求弦长AB 的方程。

使AB 弦的斜率为k ,即使平行PT ,则AB 方程为:
)(a a x x k y y −=−
(4)联立曲线方程和弦方程求得B 点坐标:
)(x f y = )(a a x x k y y −=−
(5)按上述步骤顺序求得C 、D ,…各节点的坐标。

对于曲率变化较大的曲线,用等误差法求得的节点数最少,但计算稍繁。

2.1.4 圆弧逼近的节点计算
曲线用圆弧逼近有曲率圆法、三点圆法和相切圆法等方法。

三点圆法是通过已知四个节点分别作两个相切的圆,编出两个圆程序段。

这两种方法都应先用直线逼近方法求出各节点,再求出各圆,计算较繁琐。

2.22.2 等误差法的关键点和难点等误差法的关键点和难点
从2.2.3节等误差法的介绍中我们可以了解到,手工编程将是非常复杂的一个过程,它需要不断重复步骤(2)~(5),其难点就是如何求得“圆与任意的非圆曲线”的公切线PT 、以及“直线与任意的非圆曲线”的交点B (如图 2.4所示),这就用到数值分析的知识。

)
(x f y =A B
允δP
T
图2.4 非圆曲线逼近方法的公切线和交点
求公切线的过程中,我们无法直接用计算机求出它的公切线PT ,从上图可以发现在,当A 点到直线PT 距离为允δ时,误差圆与曲线)(x f y =上总会有一
点的切线满足要求,这一点就是我们要求的切点T。

为了求点到直线的距离,必须先求出曲线)
y=上任意一点的斜率,在搜索的过程中满足A点到直线的距(x
f
δ时,则斜率所在点的就是我们所要求的切点,这个斜率也是直线AB斜离为

率,已知斜率和起点用编程序来求交点。

通过上述分析,我们可以得知,等误差法的关键点是,如何用数值分析的方法求出斜率以及交点。

基于数值分析方法的等误差逼近算法设计基于数值分析方法的等误差逼近算法设计
3.13.1 数值分析的概念数值分析的概念
数值分析(Numerical Analysis)的方法是有效使用数字计算机求数学问题近似解的方法与过程,以及由有关理论所构成的学科。

数值分析是一门实用性很强的学科,近年来随着计算机的发展和广泛应用,许多计算领域的问题,如计算力学、计算物理、计算化学、计算经济学等新分支都可归结为数值分析问题。

数值分析研究有效使用计算机数值求解各种数学问题,包括离散型方程的数值求解和连续系统离散化的数值求解,在数值求解数学问题时,需要考虑误差、收敛性和稳定性等问题。

所谓关于给定计算问题的一个近似算法是收敛的,是指由该算法能产生近似解的一个无穷集合,这个集合按某种选定的距离能逼近精确解到任意程度。

即对任给的ε>0,都能从该集合中找到与精确解的距离小于ε的近似解。

误差是指连续系统离散化产生的方法误差(截断误差)和数值分析过程中产生的误差(舍入误差)。

稳定性是指在执行数值算法的过程中,舍入误差的积累不影响产生可靠结果。

此外,还要研究算法的计算复杂性(计算量大小为时间复杂性,存储量大小为空间复杂性)以及在使用计算机时,算法的自适应性。

因此,误差、收敛性、稳定性、计算复杂性和自适应性是数值分析的基本问题,刻画了数值分析方法的可靠性、准确性、效率以及使用方便性,是数值分析必须研究的基本理论。

3.2 3.2 圆与任意非圆曲线的公切线求解算法圆与任意非圆曲线的公切线求解算法圆与任意非圆曲线的公切线求解算法
3.2.1 基于数值分析方法的公切线求解原理
由上一章可知,等误差方法逼近非圆曲线的这一复杂的问题,可以转化为求取圆与任意非圆曲线的公切线的切点的问题、以及求取直线与任意非圆曲线的交点的问题。

而求圆与任意非圆曲线的公切线的难点在于,在何种条件下直线是圆与非圆曲线的公切线。

如图3.1所示,对于非圆曲线上任意给定的一点),(00y x ,公切线是指在点),(00y x 误差圆与给定曲线)x (f y =的公切线,它与误差圆的交点只有一个,如图3.1所示的直线①,此时2l x =∆;若)(211l l l x <=∆,则此时点
))((00x x f x x ∆+∆+,的切线为直线②,从图3.1中可以看出此时直线与误差圆有两个交点,直线②不是所求的公切线,x ∆必须增大,继续往前搜索:若)(233l l l x >=∆,此时点))((00x x f x x ∆+∆+,的切线为直线③,它与误差圆没有交点,此时x ∆则要缩小,往前搜索,直线到x ∆满足2l x =∆时为止,此时所求的直线就是我们要得到的公切线,点),(11y x 就是所求的曲线上的公切点,它与误差圆只有一个解。

(**)
x (f y =非圆曲线方程:
当D 等于圆的半径允δ时,则直线与圆只有一个解。

要想求距离D 则必须先求斜率K 。

3.2.2 基于数值分析方法求曲线上任意一点的导数
(1)导数的几何意义
由高等数学(上)[]1我们知道,函数)(x f y =在点0x 处的导数)('0x f 在几何上表示曲线)(x f y =在点))(,(00x f x M 处的切线的斜率,即
αtan )('0=x f ,
其中α是切线的倾角(图3.2)。

如果)(x f y =在点0x 处的导数为无穷大,这时曲线)(x f y =的割线以垂直于x 轴的直线0x x =为极限位置,即曲线)(x f y =在点))(,(00x f x M 处具有垂直于x 轴的切线0x x =
根据导数的几何意义并应用直线的点斜式方程,可知曲线)(x f y =在点),(00y x M 处的切线方程为
))(('000x x x f y y −=−
x y
图3.2 求曲线斜率的差分图
(2)导数的求法
导数的求法有很多种,在本次课程设计中,同学可用以下的方法求导数:
;R )x x (!
n )x (f )x x (!)x (f )x x )(x (f )x (f )x (f Tylor x )x (f n n i i )n (i i i i i i +−++−+−+=L &&&22展开式为:
处的在
)();h (R )h (!
n )x (f )h (!)x (f )h (!)x (f )h )(x (f )x (f )x (f h x x x :x )()h (R )h (!n )x (f )h (!
)x (f )h (!)x (f )h )(x (f )x (f )x (f h x x x :x n n i )n (i i i i i i x i n n i )n (i i i i i i x i 23213232113211L L L &&&&&&L L L L &&&&&&−+−++−+−=−==++++++=+==−−++,求得:
的负向邻域取在;,求得:
的正向邻域取在)
()h (h )x (f )x (f )x (f i i i 3221311L L L &ο+−=−+导数为:)两式相减,得到一阶)和((得到数字方法求导数的公式为:h
)h x (f )h x (f lim )x ('f h 20000−−+=→ 取h =0.000001,根据导数的概念,利用上式则可求得曲线的斜率。

(计算机程序见附录A “求斜率的子程序”)
3.2.3求公切线的计算机流程图
上一节介绍了如何求距离和导数的问题, 这一节我们介绍如何用这两个条件进行等误差直线逼进的计算机编程。

由于此次课程设计中,我们要求是给定任意曲线,能够进对它进行等误差逼进,所以要求曲线必须以参数方程的形式输入,求斜率也应该求参数方程斜率。

已知参数方程:)()(t y t x 、 , 求
dx
dy 。

解: 首先求t y t x ∂∂∂∂和; 根据t
y
t x
dx dy ∂∂∂∂=,则可以求出参数方程的导数dx dy 。

前一节已经介绍了距离和斜率的求法,下面我们设计求公切线的流程图。

由于计算机的精度很高,当610−<−δd abs 时,则可默认δ≈d ,所以我们以此作为距离是否小于或等于允许误差的条件。

要求设计的同学自己设计出求公切线的流程。

流程图的初始条件图如3.3所示。

().
)x (Dist )x (F y ,x P )x (Dist ;step e .;e .zero :
initialize 010*******=方程:假设求解的目标函数的。

处的切线到圆心的距离为曲线上点假设:;=令:)程序初始化(允允允δδδ−=⋅==−−
O
图3.3 求公切线迭代算法流程图
当21,x x 满足62110−<−x x 目标函数0)()(=−=允δx Dist x F ,则此时切点的坐标为))(11x f x ,(,在此点上求得的斜率1k K =就是所求的公切线的斜率,保留K 值,为下一步求交点做准备。

3.3直线与任意非圆曲线的交点求解算法
3.3.1 直线与交点的求法
前一节求出斜率K ,根据这一斜率求出过P 点的直线表达式(如图3.4所示):
)(00x x K y y −=− (3-1)
曲线方程为:)(x f y = (3-2) 联立方程(3-1)和(3-2)可求得弦线与曲线的交点为),(11y x ,也就是所求的节点。

同时节点),(11y x 也为下一个求公切线的起点。

)
(0x x K −程:
图3.4 求交点的原理图
3.3.2 求交点的流程图
根据前一节所介绍的直线与曲线交点的求解方程过程,要求同学理解并画出求交点的计算机流程图(如图3.5)。

()
()(){}
.
x x k y )x (f )x (F x x k y y )y ,x (,
k ;y ,x )x (f y ;step e .;e .zero :
start *****03010100000036=数的方程为:
因此,要求解的目标函;
线方程可写为:
并且平行于公切线的直所以,通过圆心切线的斜率为为由于前面已经求得切点;
因为非圆曲线方程为:;=令:)初始化(允允−⋅+−=−⋅=−=⋅==−−δδ
图3.5 用迭代算法求交点的流程图
3.4用数值分析的方法求方程的近似解用数值分析的方法求方程的近似解 假设有非线性方程
0)(=x f (3-3)
其中,)(x f 是一元非线性函数,若)(x f 是n 次代数多项式,则称式(3-3)为代数方程或n 次多项式方程,若)(x f 是超越函数,则称方程(3-3)为超越方程;若有常数*x ,使0)(*=x f ,则称*x 为方程(3-3)的根,又称函数)(x f 的零点;若)(x f 能分解为
)()()(*x x x x f m ϕ−=,
其中,0)(*≠x ϕ,则称为方程(3-3)的m 重零点,当1=m 时,*x 称为方程(3-3)的单根或)(x f 的单零点。

在方程(3-3)中,设)(x f 为[]b a ,上连续函数,且0)()(<b f a f ,由连续函数性质知,方程(3-3)在[]b a ,中至少有一实根,为简单起见,设有惟一实根*x ,可用二分法来求实根*x 的近似值。

二分法的基本思想就是逐步将含有根*x 的区间二分,
通过判别函数的符号,进一步探索有根区间,将有根敬意缩小到充分小,从而求出满足给定精度 的根*x 的近似值。

如图3.6所示,其具体做法如下:记
b b a a ==11,,先将[]
11,b a 二分,计算中点2
1
11b a x +=
及)(1x f ,如果0)(1=x f ,则*1x x =;否则如果0)()(11<a f x f ,则根一定在区间[]22,b a 内,就得到长度缩小一半的有根区间[]22,b a ,即
0)()(22<b f a f ,且)(2
1
22a b a b −=
−。

x
y
图3.6 二分法原理图
对有根区间[]22,b a 施行同样手续,即二分求中点;判别函数值符号,则可得长度又缩小一半的有根区间[]33,b a 。

重复上述过程,到第k 步就得到根*x 的近似值序列{}k x 测验包含奶*x 的区间套,且有
[][][][]L
L L 2,1,2
,2)4();
(2
1
)3(;,,0)()()2(,,,)1(*1
*2211=−≤−+=−=
−∈<⊃⊃⊃⊃−k a
b x x b a x a b a b b a x b f a f b a b a b a k k k k k k k k k k k k k k 且
由(4)显然有*lim x k =∞
→,且k x 以等比数列的收敛速度收敛于*x ,因此,可用二分法求0)(=x f 的实根*x 达到任意指精度同。

事实上,对0>ε(为给定精度要求),由
,2
*ε<−≤
−k
k a
b x x 得 a
b a b k k −<<−−−ε
ε2)(2 或 
两边取对数,即得
2
ln ln )ln(ε
−−>
a b k
这样就得到区间二分法次数k.
二分法方法可靠、程序简单,且对函数)(x f 性质要求不高,只要连续即可,但要求得较精确结果所费的时间长。

相关文档
最新文档