1.7 分段插值法
分段插值

2012-2013(1)专业课程实践论文分段线性插值徐琼希,0818180205,R数学08-2班所谓分段线性插值就是通过插值点用折线段连接起来逼近f (x )。
设已知节点a=x 0<x 1<…<x n =b 上的函数值f 0,f 1,…,f n ,求一折线函数满足:1o ],,[)(b a C x I h ∈2o k h f x I =)( ),,1,0(n k =,3o )(x I h 在每个小区间[k x ,1+k x ]上是线性函数。
则称)(x I h 为分段线性插值函数。
模型一:由定义可知)(x I h 在每个小区间[k x ,1+k x ]上可表示为)(x I h =1111++++--+--k kk k k k k k f x x x x f x x x x )(1+≤≤k k x x x 模型二:首先确定间隔序列k ,使得:1+≤≤k k x x x第二个量是局部变量s ,其定义为 :k x x s -=最后一个量是一阶均差kk k k k x x y y --=++11δ 则插值基函数可表示为 k k k k k k x x y y x x y x L ---+=++11)()(k k s y δ+=.开始输入n,xi,yi,xNi=n?YS=ps[i-1].y*(x-ps[i].x)/(ps[i-1].x-ps[i].x)+ps[i].y*(x-ps[i-1].x)/(ps[i].x-ps[i-1].x)N i=n?Y输出Si(x)结束#include <stdio.h>#define N 100struct POINT{double x;double y;};void main(){int i,n;double x,S;struct POINT ps[N];printf("please input n,0<=n<=100: \n");scanf("%d",&n);printf("please input xi,yi: \n");for(i=0;i<n;i++){scanf("%lf,%lf",&ps[i].x,&ps[i].y);}printf("Now input x:\n");scanf("%lf",&x);printf("please input i:\n");scanf("%d",&i);S=ps[i-1].y*(x-ps[i].x)/(ps[i-1].x-ps[i].x)+ ps[i].y*(x-ps[i-1].x)/(ps[i].x-ps[i-1].x);printf("S%d(%lf)=%lf \n",i,x,S);}例1.给定函数y=f(x)的函数表,结点个数n=5,分3段,求x=0.47的函数值。
《分段低次插值法》课件

分段二次插值适用于需要更高精度插值的情况,但计 算相对复杂。
分段三次插值
三次插值
三次插值使用三次多项式进行插值,比二次插值 更为精确。
分段三次插值
分段三次插值是将数据点分成若干段,每一段使 用三次多项式进行插值。
适用场景
分段三次插值适用于需要更高精度插值的情况, 但计算相对复杂。
04
分段低次插值法的优势与局限性
分段低次插值法
• 引言 • 分段低次插值法的基本原理 • 分段低次插值法的数学模型 • 分段低次插值法的优势与局限性
• 分段低次插值法的应用实例 • 分段低次插值法的未来展望
01
引言
插值法的定义
插值法是一种数学方法,用于通过已知的离散数据点来构造一个连续函数,以便在 整个定义域内进行预测或逼近。
分段低次插值法可以与机器学习算法结合,利用插值结果作 为特征输入,提高机器学习模型的预测精度。
与优化算法结合,通过优化算法对插值结果进行优化,提高 插值的精度和效率。
在大数据处理中的应用前景
在大数据时代,分段低次插值法可以应用于大规模数据的插值处理,提高数据处 理效率。
在数据挖掘和机器学习领域,分段低次插值法可以作为特征提取和数据预处理的 一种有效方法。
多项式插值
使用多项式函数逼近已知数据点,通 过求解多项式来找到未知点的坐标。
分段低次插值的定义
分段低次插值法是一种数学方法,它 将整个数据集分成若干个小的分段, 并在每个分段上使用低次多项式进行 插值。
分段低次插值法的特点是每个分段上 的多项式次数较低,从而减少了计算 复杂度,提高了计算效率。
分段低次插值的实现方式
分段低次插值法的提出,为解决实际 问题提供了一种新的思路和方法,具 有重要的理论和应用价值。
《数值分析》课程教学大纲

拉格朗日插值公式插值余项牛顿插值公式埃尔米特插值 数值分析课程教学大纲(Numerica1Ana1ysis)学时数: 其中: 学分数:48实验学时:4课外学时:O3适用专业:计算机科学与技术 一、课程的性质、目的和任务本课程是计算机专业学科的基础课程。
它利用计算机使学生将已学的数学和程序设计知识等有关知识有机地结合起来,并应用它解决实际问题。
其主要任务是:介绍数值理论、函数逼近、数值微积分、非线性方程求根、线性代数方程组、特征值问题的常用数值法,要求学生能够评价各种算法的优劣,使用高级语言描述学过的算法并上机调试。
这对于学生从事数值软件的研制与维护是十分有益的。
二、课程教学的基本要求通过本课程的学习,学生应充分理解数值方法的特点,熟练掌握使用各种数值方法解决数学问题的技巧,为今后结合计算机的应用而解决实际问题打下坚实的基础。
三、课程的教学内容、重点和难点引论(4学时)教学内容:引论A 算法B 误差基本要求:了解掌握误差的基本概念,理解数值运算中误差的来源,并掌握误差分析的方法与原则。
重点和难点:误差分析。
第1章插值方法(8学时)I 问题的提法 2 3 5 61.7 分段插值法基本要求:掌握1agrange 插值与牛顿插值这两种形式不同而实质一致的插值的概念及余项估计;掌握分段低次插值及余项估计。
了解这几种插值的联系及区别并能熟练地进行运算。
J⅛,.*拉格朗日插值,牛顿插值。
难点:拉格朗日插值,余项估计。
第2章数值积分(8学时)教学内容:2.1机械求积2.2 牛顿•柯特斯公式 2.3 龙贝格算法 2.4 高斯公式 2.5 数值微分基本要求:了解数值积分的基本思想和代数精度的概念,掌握插值型求积公式与高斯型求积公式,理解等距节点的牛顿•柯特斯公式及余项估计。
掌握数值微分的基本思想与运算。
重点:牛顿-柯特斯求积公式。
难点:龙贝格求积算法,高斯求积公式。
第3章常微分方程的差分方法(4学时)教学内容:3.1欧拉方法3.2 改进的欧拉方法 3.3 龙格-库塔方法基本要求:掌握欧拉方法,特别是改进的欧拉方法的基本思想和计算过程;了解龙格-库塔方法。
插值方法

格朗日(Lagrange)插值。
2.n=2
线 性 插 值 只 利 用 两 对 值 (x0,y0) 及 (x1,y1) 求 得
y=f(x)的近似值,误差较大。
p2(x0)=y0,p2(x1)=y1,p2(x2)=y2
p2(x)是x的二次函数,称为二次插值多项式。
第1章 插值方法
插值法是一种古老的数学方法。早在 1000多年前,我国历法上已经记载了应用一 次插值和二次插值的实例。 拉格朗日(Lagrange)、牛顿 (Newton)、埃特金(Aitken)分别给出了 不同的解决方法。
1.1 拉格朗日插值公式 1.2 牛顿插值公式 1.3 埃特金插值公式 1.4 存在惟一性定理 1.5 插值余项 1.6 分段三次埃尔米特插值 1.7 三次样条插值 1.8 应用实例
[a,b],有与x有关的ξ(a<ξ<b)存在, 使得
其中ω(x)=(x-x0)(x-x1)…(x-xn)。
[例5] 设f(x)=lnx, 并假定已给出值表试近 似计算ln(0.6)的值,并指出精度。 值表 0.4 -0.916291
x lnx
0.5 -0.693147
0.7 -0.356675
0.8 -0.223144
(x∈[-5,5])。
取等距节点xi=-5+i(i=0,1,…,10), 试建立插值多项式 L10(x), 并作图形, 观察L10(x)对f(x)的逼近效果。
图1-3 例6的图形
1.6 分段三次埃尔米特插值
为了避免 Runge现象的发生 , 我们很自 然地会想到把区间[-5, 5]等分为10个小区 间, 在每一个小区间内应用低次插值。但由 于每个小区间只有两个端点(插值节点) , 按照我们已知的方法, 得到的将是一个分段 线性插值函数。
分段线性插值

分段线性插值分段线性插值是一种在机器学习、数学、信号处理等领域中广泛应用的方法。
分段线性插值的主要目的是为漏洞、持续时间等数据展示提供更好的视觉效果,同时也可以使数据更容易进行处理。
在分段线性插值中,每一段数据都可以看作是一条直线段。
通过在相邻数据点之间插入一条直线来实现插值。
每个数据点或任意数段可以称为一个插值区间,插值区间内部的数据点都采用一条直线进行插值,直线的斜率由插值区间上下数据点构成。
例如:在一个区间(x1,y1)和(x2,y2)之间进行插值,其中x1<x<x2。
那么,我们可以使用线性公式y = mx + b来估计数据点的y值。
方程中m是插值区间的斜率,通过公式m = (y2-y1)/(x2-x1)计算。
而b是在插值区间x1和x2之间的截距,通过公式b = y1 - m x1计算。
最后,我们就可以通过已知的数据点,估计同一段中任意点的y值。
下面我们通过一个实例来进一步解释分段线性插值的应用。
比如我们有一组工作时间数据如下:|年份| 工作时间 ||----|----|| 2010 | 6.5 || 2011 | 7.0 || 2013 | 7.5 || 2015 | 8.0 |目前,我们需要在2012年估计工作时间。
首先,我们需要找到分段线性插值的区间。
2012年的数据点在2011年和2013年之间。
因此,我们可以使用2011年和2013年之间的数据点进行插值。
然后,通过计算斜率来确定m和b的值。
斜率可以通过公式m = (y2-y1)/(x2-x1)来计算。
2011年和2013年的工作时间分别是7.0和7.5,年份分别是2011和2013。
因此,斜率为:(7.5-7.0)/(2013年-2011年)= 0.25/2 = 0.125插值区间的y截距b可以通过公式b = y1 - m x1来计算。
这使得我们可以计算出截距:接下来,我们就可以使用斜率和截距来计算2012年的工作时间,这将是我们所需的数据点的估计值:y = mx + b= 0.125 * 2012 + 258.375= 259.875。
数值计算方法 拉格朗日插值、分段插值 - 拉格朗日插值、分段插值

4!
(x x j ),
j0
[0.10, 0.30]
R3 (0.20)
e 24
(0.20
0.10)(0.20
0.15)(0.20
0.25)(0.20
0.30)
0.000001 e 106
插值多项式计算值 f (0.20) 0.818730 实际更精确的值为 f (0.20) 0.8187308 与上面讨论的余项表明6位的精度是相符的。
其截断误差为
R3( x)
M3 6
(x
x0 )( x
x1 )( x
x2 )
R2
其中 M3
(0.3367) sin 0.3367
max f ( x)
x0 x x2
1
L2(0.3367) 6
cos x0 0.828
(0.828)(0.0167)(0.033)(
0.0233)
0.178
10
用抛物插值计算sin 0.3367时,由公式(2.5)得
sin 0.3367
y0
(x ( x0
x1 )( x x2 ) x1 )( x0 x2 )
y1
(x ( x1
x0 x0
)( )(
x x2 ) x1 x2 )
y2
(x ( x2
x0 x0
)( )(
x x1 ) x2 x1 )
L2(0.3367) 30374
6
拉格朗日插值问题
课后练习
设函数 f (x) ex,已知下列数据点:
x0 y0
0.10 0.904837
,
x1 y1
0.15 ,
0.860708
x2 y2
插值方法

一、插值思想简介
二、一维插值 三、二维插值 四、利用matlab进行插值计算 五、建模实例
一、插值思想简介
插值:最初来源于天体计算的需要,比如,人们得到了
若干观测值,即某个星球在若干已知时刻的位置,需要计 算星球在另一些时刻的位置。所谓插值,就是在若干已知 的函数值之间插入计算一些未知的函数值。
n=3时 n=9时 n=15时
二、分段多项式插值 由于高次插值多项式的振荡缺陷,促使人们转而寻求简单的低 次多形式插值。分段插值的基本思想是将插值区间划分为若干 个小区间,然后在每个小区间上做满足一定条件的低阶插值。 1、分段线性插值 设函数f(x)在n+1个节点x0,x1,…,xn处的函数值已知, 为 y0,y1,…,yn 。 要求一个分段( 共 n段)线性函数q(x),使其满足: q(xi)=yi, i=0,1,…,n. 这n+1个点 x0,x1,…,xn 称为节点,q(x) 称为插值基函数 y
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊插值方法啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊插值方法在工程实践和科学实验中常常需要从一组实验观测数据揭示自变量x与因变量y之间的关系一般可以用一个近似的函数关系式
分段线性插值

摘要用函数来表示变量间的数量关系广泛应用于各学科领域,但是在实际问题中,往往是通过实验、观测以及计算等方法,得到的是函数在一些点上的函数值。
如何通过这些离散数据找到函数的一个满足精度要求且便于使用的近似表达式,是经常遇到的问题。
对于这类问题我们解决的方法为插值法,而最常用也最简单的插值方法就是多项式插值。
当然用插值法得到的近似表达式必须满足插值条件即假设给定了n+1个点的自变量的值以及函数值,近似函数必须要过这n+1(x)通个点。
多项式插值,从几何角度看,就是寻求n次代数曲线y=Pn过n+1个点作为f(x)的近似。
但是随着插值节点个数的增加,高次插值多项式的近似效果并不理想。
根据大量实验得出,在进行高次多项式插值时,会出现龙格现象。
龙格(Runge)现象即当n趋于无穷大时,x在某一邻域内,f(x)收敛,而在这个区域外f(x)发散。
因此,为了解决这样的一个问题,我们可以通过缩小插值区间的办法达到减小误差的目的,所以本实验将针对低次分段插值多项式来做具体的讨论和学习。
关键词:龙格现象分段差值1、实验目的1)通过对分段线性插值算法程序的编写,提高自己编写程序的能力2)体会分段线性插值是如何消除龙格现象的。
3)用实验报告的形式展现,提高自己在写论文方面的能力2、算法理论设在节点处的函数值为,i=0,1,,n。
为了提高近似程度,可以考虑用分段线性插值来逼近原函数,这时的插值函数为分段函数:在区间上的线性函数为误差为:易见,是平面上以点为节点的折线,有如下的特点:1.在上为次数不超过一次的多项式;2.;3.;如果,由线性插值的误差公式得到令,则有关于整体误差:可以按如下方式考虑,若记则对任一都有于是,当时,说明分段线性插值收敛于。
3、数值算例已知点坐标如下表所示:xiyi用分段线性插值法,求解当x为时,对应y的值解:具体程序如下所示:#include ""float Fdline(float x[],float y[],float x1,int len){int i=0;float s=0;for(i=0;i<len-1;i++){if(x1>=x[i] && x1<x[i+1])break;}s=(x1-x[i])/(x[i-1]-x[i])*y[i-1]+(x1-x[i-1])/(x[i]-x[i-1])* y[i];return s;}float Fdline(float x[],float y[],float x1,int len);void main(){float x[]={,,,,};float y[]={,,,,};int len=sizeof(x)/sizeof(x[0]);float x1=0;float s=0;printf("请输入要求解的x1的值:\n");scanf("%f",&x1);s=Fdline(x,y,x1,len);printf("经过分段三次Hermite插值的结果为:\n");printf("%f\n",s);}运行结果:5、对结果进行分析根据分段线性插值的原理,可以看出分段线性插值虽然有很好的收敛性质,但却不是光滑的,所以线性插值的结果和实际的结果差距较大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我们已经知道:f(x)在n+1个节点xi(i=0,1,2,…,n) 上的n次插值多项式Pn (x) 的余项
f(n 1 )()n
R (x )f(x ) P n (x )(n 1 )!i 0(x x i)
设想当节点数增多时会出现什么情况。由插值余项可 知,当f(x)充分光滑时时,余项随n增大而趋于0的,这 说明可用增加节点的方法达到这个目的,那么实际是这 样吗?
这种插值多项式
当节点增加时反而不 能更好地接近被插值 函数的现象,称为龙 格现象。
上述现象告诉我们用高次插值多项式是 不妥当的,从数值计算上可解释为高次插 值多项式的计算会带来舍入误差的增大, 从而引起计算失真。因此,实践上作插值 时一般只用一次、二次最多用三次插值多 项式。
那么如何提高插值精度呢?采用分段 插值是一种办法。
龙格(Runge)给出的一个例子:
[例6] 给定
(x∈[-5,5])。
取等距节点xi=-5+i(i=0,1,…,10), 试建立插值 多项式L10(x), 并作图形, 观察L10(x)对f(x)的 逼近效果。
图1-8 例6的图形
从图中,还可看见, 在0附近插值效果是 好的,即余项较小, 另一种现象是插值多 项式随节点增多而振 动更多。
1.7 分段插值法
1,多项式插值的问题
我们已经知道插值有多种方法: Lagrange 插值、 Newton插值、Hermit 插值 等多种方式。插值的目的就是数值逼近的 一种手段,而数值逼近,为得是得到一个 数学问题的精确解或足够精确的解。那么, 是否插值多项式的次数越高,越能够达到 这个目的呢?现在,我们来讨论一下这个 问题。
则称(x)是f(x)在[a ,b]上的分段m次插值多项式。
m=1称为分段线性插值 m=2称为分段抛物线插值
分段线性插值的构造:
由定义, (x)在每个子区间[xi , xi+1](i=0,1,2,,n-1) 上是一次插值多项式;
(x ) y ix x i x x ii 1 1 y i 1x x i 1 x x ii x i, x x i 1
局部性 插值的光滑性不高
本节主要内容
高次插值的龙格现象 分段插值的概念 分段线性插值、抛物插值 分段三次埃尔米特插值 分析分段插值的余项、收敛性
实际上,上面介绍的分段低次插值,虽然具有计 算简便,收敛性有保证,数值稳定性又好且易在 计算机上实现等优点,但它却不能保证整条曲线 的光滑性,从而不能满足某些工程技术上的要求, 从六十年代开始,首先由于航空、造船等工程设 计的需要而发展起来的样条插值(spline)方法, 既保留了分段低次插值的各种优点,又提高了插 值函数的光滑性,在许多领域显得越来越广泛的 应用。
若用插值基函数表示,则在整个区间上为
n
Ih(x)
fjlj (x)
j0
分段线性插值的余项:
定理5:设f(x)在[a,b]上有二阶连续导数f″(x) ,且| f″(x)| ≤m2, 记: h = max |xi+1-xi|,就有估计:
|f(x)- (x) |=|R(x)| ≤m2h2/8, x∈[a, b]。
分段线性插值曲线图:
y=f(x)
Y
x0
x1
x2
…
xn X
例:设
在[0,5]上取等
距节点 x i 0 i(i 0 ,1 , ,5 )求分段插 值函数,及 f (4.5) 近似值
解
yi
1
1 x2
1.00000
0.50000
0.20000
0.10000
0.05882
0.03846
证明:由Hermite余项公式,当x∈[xi, xi+1]时 |f(x)- (x) |=|R(x)| = |f (4)()(x-xi)2(x- xi+1 )2|/4! ≤m4max|(x-xi)2(x-xi+1)2|/24≤m2h2/384,证
毕。
分段插值法优缺点
一种显示算法,算法简单,收敛性能得到 保证
注意到h随分段增多而减少,因此用分段法提高精度 是很好的途径. 证明:由Lagrange 余项公式,当x∈[xi, xi+1]时
|f(x)- (x) |=|R(x)| = |f″()(x-xi)(x- xi+1 )|/2! ≤m2max|(x-xi)(x-xi+1)|/2≤m2h2/8,
上式右端与小区间的位置无关,证毕。
.
xkx1xkxk
2(xxk1)yk1
分段三次Hermite插值的误差估计
定理6:设f(x)在[a,b]上有四阶连续导数f(4) (x) ,且| f (4)(x) | ≤m4, 记: h = max |xi+1-xi|,就有估计:
|f(x)- (x) |=|R(x)| ≤m4h4/384, x∈[a, b]。
3,分段插值定义:
设f(x)是定义在[a,b]上的函数,在[a,b]上节点 a= x0< x1<x2<…<xn-1<xn=b,
的函数值为 y0 , y1 ,y2 ,…yn-1 ,yn ,若函数(x)满足条 件
(1) (x)在区间[a , b]上连续; (2) (x)在每个子区间[xi , xi+1](i=0,1,2,,n-1)上是 次数为m的多项式;
f(x)L2(x)k i i1 1ykjj i ik1 1((x xk i x xji))
这种分段的低次插值叫分段二次插 值,在几何上就是用分段抛物线代 替y=f(x),故分段二次插值又称分段 抛物插值。
4,分段三次插值
考虑到插值曲线的光滑度,主要讨论 分段 三次埃尔米特插值,即 假定在每个节点xi上给出了函数值yi和导数 值 y'i 。
f( 4 .5 ) I h ( 4 .5 ) 0 .0 5 8 8 2 l4 ( 4 .5 ) 0 .0 3 8 4 6 l5 ( 4 .5 ) 0 .0 5 8 8 2 0 .5 0 .0 3 8 4 6 0 .5 0 .0 4 8 6 4
精确值为 f(4.5)0.04706。
分段二次插值即:选取跟节点x最近 的三个节点xi-1,xi, xi+1进行二次插值, 即在区间[xi-1, xi+1],取:
在每个小区间[xk , xk1] 上是Hermite三次多项
式,由Hermite三次插
2
值子多区项间式[x表k ,达xk式1]上得的在12xxk xxkk 11yk1xxk xxkk 11(xxk)yk
表达式为
2
2
S3(x) x x k x x kk 1 1 12xk x 1 xk xk yk xk x 1 xk xk
分段线性插值基函数为:
xi1 x[i1,i](i0)
li(x)(xi1) x[i,i1](i5)
0
x[0,i1) (i1,5]
分段线性插值函数为:
Ih (x ) l0 (x ) 0 .5 0 0 0 0 l1 (x ) 0 .2 0 0 0 0 l2 (x ) 0 .1 0 0 0 0 l3 (x ) 0 .0 5 8 8 2 l4 (x ) 0 .0 3 8 4 6 l5 (x )