作者yhliu (老怪物)
看板Math
标题Re: [中学] 有关插值多项式
时间Sun Feb 6 11:07:00 2011
※ 引述《wa007123456 (大笨羊)》之铭言:
: 不好意思...又来发文章了..@@
: as title
: 我看了课本许久 还是无法理解他的原理
: 上网google 只查到更复杂的讲法
: 我只记得上学期我是用比较特别的方法做的
: 但是 这样下去不是办法
: 毕竟那个特别的办法只适用在3次以下的f(x)
: 因为我晚了别人一年 所以重读後..还是高一生的程度..
: 希望有高手能够以比较容易理解的讲法揭露出他的原理
: 小弟在此感激不尽!
: ps:抑或是背下公式就好,不必去了解他的原理呢?
多项式的插值主要有两种, 一种是适用所给的点其横座标
(x 座标) 是等距的, 公式称 "牛顿插值公式"; 另一种则
不论所给点 x 座标是否等距都适用, 公式为 "拉格朗吉"
(Lagrange) 插值公式.
设函数 y=f(x) 的图形通过 (x_1,y_1),...,(x_n,y_n),
其中 x_1,...,x_n 两两不等. 一个至多 n-1 阶多项式足
以描述这些资料点, 也就是说:一个至多 n-1 阶多项式函
数 y=g(x) 的图形也通过这些点, 其中
(x-x_2)...(x-x_n)
g(x) = y_1 * --------------------- +
(x_1-x_2)...(x_1-x_n)
(x-x_1)(x-x_3)...(x-x_n)
y_2 * ------------------------------ +
(x_2-x_1)(x_2-x_3)...(x_2-x_n)
. . . +
(x-x_1)(x-x_2)...(x-x_{n-1})
y_n * ----------------------------------.
(x_n-x_1)(x_n-x_2)...(x_n-x_{n-1})
这公式可以这麽想:
(1) 多项式 g(x) 至多 n-1 阶. 我们可以考虑下列 n 个
n-1 阶多项式的线性组合 (加权和, 也就是各多项式
分别乘以一个常数再加总):
g_1(x) = (x-x_2)...(x-x_n),
g_2(x) = (x-x_1)(x-x_3)...(x-x_n),
...,
g_n(x) = (x-x_1)(x-x_2)...(x-x_{n-1}).
而 g(x) = c_1*g_1(x)+...+c_n*g_n(x).
(2) 因 y=g(x) 通过 (x_i,y_i), i=1,...,n.
故 y_i=g(x_i). 但由前述 g(x) 的表现式
g(x) = c_1*g_1(x)+...+c_n*g_n(x) 很容易得到
g(x_i) = c_i(x_i-x_1)...(x_i-x_{i-1})(x_i-x_{i+1})...(x_i-x_n)
因此,
c_i = y_i/[(x_i-x_1)...(x_i-x_{i-1})(x_i-x_{i+1})...(x_i-x_n)]
(3) 更进一步 (或许在较後面的课程) 可以证明上述g(x)
的表现式是唯一的. 当然, 不甚严谨地说, 由於 (2)
中的 c_i 是唯一解, 可保证 (1) 中 g(x) 的表现式
中诸 c_i 的唯一性.
如果 x_i = a+i*h, 也就是 x_1,...,x_n 是等距的,以 h
为间距, 上述 Lagrange 多项式(插值公式)的结果固然可
以化简, 但有另外的方法可以找到多项式 g(x).
首先, 若 g(x) = mx+b, 则 g(x+h)-g(x) = mh 是常数.
若 g(x)=(x-b)(x-b-h), 则
g(x+h)-g(x) = (x+h-b)(x+h-b-h)-(x-b)(x-b-h)
= (x-b)(2h)
是直线函数.
一般,设 g(x)=(x-b)[x-(b+h)]...[x-(b+kh)], 这是一个
k+1 阶多项式, 则
g(x+h)-g(x) = (x-b)[x-(b+h)]...{x-[b+(k-1)h]}[(k+1)h]
是 x 的 k 阶多项式.
因此, 令通过 (x_i,y_i), i=1,...,n, 其中 x_i=a+ih,
的多项式函数 y=g(x) 为
y = g(x)
= c_0 + c_1(x-x_1) + c_2(x-x_1)(x-x_2)
+ . . . + c_{n-1}(x-x_1)...(x-x_{n-1})
则
g(x+h)-g(x) = c_1*h + c_2*(2h)*(x-x_1) + ... +
c_{n-1}*[(n-1)h]*(x-x_1)...(x-x_{n-2})
[g(x+2h)-g(x+h)]-[g(x+h)-g(x)]
= g(x+2h)-2g(x+h)+g(x)
= c_2*(2h)*h + c_3*(3h)*(2h)*(x-x_1)+...+
c_{n-1}*[(n-1)h]*[(n-2)h]*(x-x_1)...(x-x_{n-3})
以此类推.
因此, 得
g(x_1) = c_0 <-- g(x) 之 x 代以 x_1
g(x_2)-g(x_1) = c_1*h <-- g(x+h)-g(x) 之 x 代以 x_1
g(x_3)-2g(x_2)+g(x_1) = c_2*(2!)h^2 <-- g(x+2h)-2g(x+h)+g(x) 之 x=x_1
以此类推, 一般式
g(x_k)-C(k-1,1)g(x_{k-1))+...+(-1)^{k-1}g(x_1)
= c_{k-1}*(k-1)!*h^{k-1}, k=2,...,n.
故
c_0 = g(x_1) = y_1,
c_1 = (y_2-y_1)/h = (y_2-y_1)/(x_2-x_1)
c_2 = (y_3-2*y_2+y_1)/(2!*h^2) = (y_3-2*y_2+y_1)/[(x_2-x_1)(x_3-x_1)]
c_3 = (y_4-3*y_3+3*y_2-y_1)/(3!*h^3)
= (y_4-3*y_3+3*y_2-y_1)/[(x_2-x_1)(x_3-x_1)(x_4-x_1)]
以此类推. 即
g(x) = y_1 + (y_2-y_1)(x-x_1)/(x_2-x_1)
+ (y_3-2y_2+y_1)(x-x_1)(x-x_2)/[(x_2-x_1)(x_3-x_1)]
+ ...
(x-x_1)...(x-x_{n-1})
+ [y_n-(n-1)y_{n-1}+...+(-1)^{n-1}y_1]*-------------------------
(x_2-x_1)...(x_n-x_{n-1})
以上是牛顿插值公式.
--
嗨! 你好! 祝事事如意, 天天 happy! 有统计问题? 欢迎光临统计专业版! :)
交大资讯次世代 telnet://bs2.twbbs.org Statistics (统计与机率)
成大计中站 telnet://bbs.ncku.edu.tw Statistics (统计方法及学理讨论区)
盈月与繁星 telnet://ms.twbbs.org Statistics (统计:让数字说话)
我们强调专业的统计方法、实务及学习讨论, 只想要题解的就抱歉了!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.233.153.222
1F:推 BRIANKUO :牛顿插值不等距没办法用吗? 02/06 14:08
2F:推 wa007123456 :谢谢你 囧 02/06 15:03
3F:→ yhliu :不等距会有困难. 如果 x_1, x_2, x_3 不是等距的, 02/06 17:51
4F:→ yhliu :例如 g(x)=a+bx+cx^2, 则 02/06 17:53
5F:→ yhliu :y_3-2y_2+y_1=b(x_3-2x_2+x_1)+c(x_3^2-2x_2^2+x_1^2 02/06 17:55
6F:→ yhliu :太复杂. 考虑越高阶, 复杂度越高. 02/06 17:56
7F:→ BRIANKUO :就设g(x) = c_0 + c_1(x-x_1) + c_2(x-x_1)(x-x_2)+. 02/06 21:32
8F:→ BRIANKUO :分别代入x_1.x_2...分别解出c_1.c_2... 02/06 21:33
9F:推 jacky7987 :牛顿还有两两合成的演算法可以用 02/07 00:41
10F:推 afflic :现在高中教这个...哪里用的上呀@@? 02/07 00:55
11F:→ BRIANKUO :这有很多种类型题目 02/07 01:27