基于matlab的数值分析课程设计(编辑修改稿)内容摘要:

值, 按公式 14 )2()2(4)(11111mkmkmmmhThThT 逐个求出如表的第 k 行其余 各元素 Tj(kj)(j=1,2,… ,k). ⑭若 )0(1)0(  kk TT (预先给定的精度 ),则终止计算,并取 Tk(0)≈ I,否则令 k+1→ k 转⑫继续计算。 Romberg 算法的计算过程列出如下表: k h(步长 ) T0(k) T1(k) T2(k) T3(k) 0 h T0(0)① 1 h/2 T0(1)② T1(0)③ 2 h/22 T0(2)④ T1(1)⑤ T2(0)⑥ 3 h/23 T0(3)⑦ T1(2)⑧ T2(1)⑨ T3(0)⑩ … … … … … … 表中① ~⑩表示计算顺序, k 表示二分次数。 程序框图: 编写 Matlab 程序 : function Romberg(p,k) M=1。 a=0。 b=2*pi。 h=ba。 err=1。 i=0。 R=zeros(4,4)。 R(1,1)=h*(feval(39。 f39。 ,p,a)+feval(39。 f39。 ,p,b))/2。 while (erramp。 ik)|i4 i=i+1。 h=h/2。 s=0。 for n=1:M x=a+h*(2*n1)。 s=s+feval(39。 f39。 ,p,x)。 end R(i+1,1)=R(i,1)/2+h*s。 M=2*M。 for j=1:i 构造 4 阶零矩阵 D 第一列元素 R(J,1)存放二分 J 次后的梯形值 利用公式依据 T 表顺序求每行其余元素 R(J,K),保存在一个特别的下三角矩阵中 当 |R(J,J)R(J+1,J+1)|ε 时,程序在第 J+1 行结束 R(i+1,j+1)=R(i+1,j)+(R(i+1,j)R(i,j))/(4^j1)。 end err=abs(R(i,i)R(i+1,i+1))。 end S=R(i+1,i+1) function y=f(p,x) y=sqrt(1+p.^2*cos(x).^2)。 在 Matlab 中运行,分别输入 p=,… , 计算结果列出如表:  s ⑫ 利用⑪的计算结果,求插值多项式。 插值问题实际上就是根据给定的 n+1 个结点上的函数值 yi=f(xi),I=0,1, „ ,n 确定 n 次多项式 Pn(x)=anxn+an1xn1+„ +a0 中的系数 an,an1, „ ,a1,a0。 即由 n+1 个条件确定 n+1 个待定系数,也就是求解下列关于 an,an1, „ ,a1,a0 的线性代数方程组:  00011010 xfaxaxaxa nnnn     10111111 xfaxaxaxa nnnn    „ „  10111111   nnnnnnnn xfaxaxaxa   nnnnnnnn xfaxaxaxa   0111  该线性代数方程组中共有 n+1 个方程, n+1 个未知数 an,an1, „ ,a1,a0。 因此,方程组是否有唯一解将取决于系数行列式 x0n x0n1 „ x0 1 x1n x1n1 „ x1 1 ∣ X∣ = det „ „ „ „ „ xn1n xn1n1 „ xn1 1 xnn xnn1 „ xn 1 的值是否为零。 由线性代数理论可知,这个行列式是范德 蒙行列式,即 x0n x0n1 „ x0 1 x1n x1n1 „ x1 1 V(x0,x1,„ ,xn1,xn) = det „ „ „ „ „ xn1n xn1n1 „ xn1 1 xnn xnn1 „ xn 1 根据插值问题的叙述,所有的结点互不相同,即 xi≠ xj(i≠ j).因此有 V(x0,x1,„ ,xn1,xn) ≠ 0, xi≠ xj(i≠ j) 即上述线性代数方程组存在唯一解 an,an1, „ ,a1,a0,即通过给定 n+1 个数据点的次数不超过 n 的插值多项式 Pn(x)是唯一的。 这就是代数插值问题的唯一有解性。 ① Lagrange 插值多项式:    nk kkn xlyxL 0 求 n 次 Lagrange 插值多项式的关键在求 n 次插值基函数 lk(x)(k=0,1,2,… n).               nkkkkkk nkkk xxxxxxxx xxxxxxxxxl     ...... ...... 110 110 nk ,...,1,0 程序框图: 编写 Matlab 程序 : function lagrange(x,y) n=length(x)。 L=zeros(n,n)。 for k=1:n l=1。 for i=1:n if k~=i l=conv(l,poly(x(i)))/(x(k)x(i))。 %conv 和 poly 是 Matlab 自带的函数 end end L(k,:)=l。 end C=y*L 在 Matlab 中运行,结果为: C = Columns 1 through 7 Columns 8 through 9 Lagrange 插值多项式为: y=++++ 构造 9 阶零矩阵 L 用于存放插值基函数 根据定义求插值基函数 l 将第 k 个结点对应的 l值存于矩阵 L 的第 k 行 根据插值基函数和 y的值求得 Lagrange插值多项式 验证结果: y=*power(x,8)*power(x,7)+*power(x,6)*power(x,5)+*power(x,4)*power(x,3)+*power(x,2)*x+ y = Columns 1 through 7 Columns 8 through 9。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。