统计专业数值分析上机实习

上传人:泽*** 文档编号:75247266 上传时间:2022-04-15 格式:DOCX 页数:138 大小:520.80KB
收藏 版权申诉 举报 下载
统计专业数值分析上机实习_第1页
第1页 / 共138页
统计专业数值分析上机实习_第2页
第2页 / 共138页
统计专业数值分析上机实习_第3页
第3页 / 共138页
资源描述:

《统计专业数值分析上机实习》由会员分享,可在线阅读,更多相关《统计专业数值分析上机实习(138页珍藏版)》请在装配图网上搜索。

1、上机实验李雪娇 章社生武汉理工大学统计系二零一二年二月前言数值分析 (numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。运用数值分析解决问题的过程:实际问题数学模型数值计算方法程序设计上机计算求出结果。数值分析这门学科有如下特点:1. 面向计算机;2. 有可靠的理论分析;3.要有好的计算复杂性;4. 要有数值实验;5. 要对算法进行误差分析。其主要内容有插值法,函数逼近,曲线拟合,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数

2、值解法。数值计算离不开好的计算方法, 也离不开好的编程能力。 人类社会已经迈入电子计算机时代,熟练地运用计算机进行科学计算,是广大科技工作者的一项基本技能。本书基于MATLAB软件和 C 语言给出各种算法的程序代码,在理论知识和实际应用间建立起桥梁。本书以一个学生的角度编写,贴近大学生的思维方式,能够激励学生独立思考问题和创新的意识;把基础理论的研究、方法构造的思路与利用MATLAB和 C 语言有机地结合起来。虽然现在很多软件具有数值计算的能力,但是使用者不能根据自己的实际情况来进行操作,存在着固有的局限性。 本书详细地给出各种算法的代码(除特别说明外,每节中的例题指令是独立完整的,因此读者可

3、以很容易地在自己机器上实践),读者可以根据自己的使用情况加以修改,留给了读者巨大的自我创新空间。本书利用算法编程分析、算法语言实现与说明文字配合的方式,旨在培养读者的科学精神和创新思维习惯,重视培养读者的收集处理信息的能力、获取知识的能力和分析解决问题的能力。对于那些经过大学基本数学教程的读者来说,通过本书,MATLAB精良完善的计算指令,自然易读的程序将使他们感悟“教程”数学的基础地位和局限性,看到从“理想化”简单算例通向科学研究和工程设计实际问题的一条途径。本书参加编写的还有李雪娇,阮向奎,肖先国,张维,张亮,江斌,朱海清,陈晓静,曹亮成,高丽莎,李营,于建华,郑洋,陈攀,马超,郑晓亮,劳

4、展杰。限于编著者水平,书中难免有怒当或失误之处,敬请广大读者朋友批评指正。目录第一章秦九韶算法5第二章插值方法112.1泰勒插值112.2拉格朗日插值142.3埃尔米特插值172.4分段插值202.5牛顿插值公式252.6埃特金( Aitken )算法322.7三次埃乐米特插值公式39第三章数值积分463.1 数值积分各公式的导出463.2 各积分公式的复化形式473.3龙贝格积分553.4 两点高斯公式及其复化公式593.5 三点导数公式61第四章常微分方程的差分方法674.1 一步欧拉方法674.2 二步欧拉方法694.3 隐式欧拉方法及其改进方法704.4龙格 - 库塔方法734.5四阶

5、亚当姆斯方法95第五章方程求根的方法1015.1二分法1015.2简单迭代法1035.3牛顿法1055.4弦截法107第六章线性方程组求根的方法1096.1雅克比迭代法1096.2高斯 - 塞德尔迭代法1106.3高斯消元法1126.4 追赶法1146.5矩阵行范数1176.6矩阵的列范数1206.7矩阵的 2 范数1226.8矩阵的特征根根1236.9 主元消元法1256.10高斯消元法313830 章引论;1 章 1 )牛顿插值公式 -江斌; 2)三次埃尔米特插值 -郑洋; 3)三次样条函数; 4)直线拟合 -郑晓亮; 5)多项式拟合-郑晓亮; 6)多元回归; 2.4 埃特金算法 -肖先国

6、2 章 1)龙贝格积分 - 江斌 , 陈晓静; 2 )随机抽样积分法; 2 )二维重积分计算; 3 )三维重积分计算; 4 )三点导数公式 - 高丽莎; 5 )五点导数公式 - 高丽莎; 6 )中点加速法求导数 - 高丽莎3 章 1)二阶亚当姆斯方法- 张亮; 2 )三阶亚当姆斯方法- 张亮; 3 )四阶亚当姆斯方法- 张亮; 4 )预报校正亚当姆斯方法 - 张亮; 5 )高阶方程差分法; 6 )方程组差分法 - 于建华; 7 )二阶线性边值问题差分法;4章 F(x,y)=0 计算5 章1)矩阵的行范数 -朱海清; 2)矩阵的列范数 -朱海清; 3)矩阵的 2-范数 -朱海清; 4)最大特征根

7、计算 -曹亮成; 5);最大特征根的特征向量计算-曹亮成; 6)最小特征根计算 -曹亮成; 7);最小特征根的特征向量计算-曹亮成;6 章1 )追赶法 - 曹亮成 - 张亮 - 伟文; 2 )LU 分解 -郑晓亮; 3 )平方根法 -郑晓亮; 4)改进平方根法 -郑晓亮;松弛因子法-郑晓亮; 5)主元消去法 -黄伟文; 6)矩阵条件数计算-李营,其后有学生名字的不要选。可以加上其它书已外的内容。本书参加编写的还有李雪娇,阮向奎,肖先国,张维,张亮,江斌,朱海清,陈晓静,曹亮成,高丽莎,李营,于建华,4第一章引论1 1 秦九韶算法秦九韶算法是一种将一元n 次多项式的求值问题转化为n 个一次式的算

8、法。其大大简化了计算过程,即使在现代,利用计算机解决多项式的求值问题时,秦九韶算法依然是最优的算法。本章将通过秦九韶算法来了解递推的思想。递推化的基本思想是将一个复杂的计算过程归结为简单过程的多次重复,这种重复在算法上表现为循环。例如,对给定的x 求解下列多项式的值p x a0a1 xa2 x2an xn (1)先采用直接逐项求和的算法,我们用t k 表示 x 的 k 次幂, uk 表示式 (1) 右端前 k1项的部分和,则有t kxkuka0a1 xak x kt kx tk1k 1,2, , n (2)ukuk 1ak tk作为初值,令t01, u0 a0(3)利用初值 (3) 对 k=1

9、,2,.,直到 n 反复执行公式 (2),最终得到的 un 就是所要求的值 p x 。计算上述算法的计算量为2n 次乘法,当 n 很大时,这种算法的效率不高。下面我们来介绍秦九韶算法。先将公式 (1)按照降幂的次序重排为p( x) an x nan 1 xn 1a1 x a0再进行降幂处理5p( x) ( (an x an 1 ) x an 2 )xa1 ) x a0 (4)从公式 (4) 中得到下列递推式vkxvk 1an kk 1,2, ,nv0a0这一算法的计算量为n 次乘法。可见,利用递推公式比利用直接求和的效率高出一半。下图为秦九韶算法的框架示意图。图1-1该算法看似简单,其最大的意

10、义在于将求n 次多项式的值转化为求n 个一次多项式的值。在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,对于计算机来说,做一次乘法运算所用的时间比作一次加法运算要长得多,所以此算法极大地缩短了CPU运算时间。下面给出秦九韶算法的程序代码。matlab 代码 1.1clear all ;x=input( 多项式中 x的取值 );6n=input( 多项式的次数n);a=input( 系数矩阵,按x降幂的顺序输入);v0=a(n+1);for i=1:nv1=v0*x+a(n+1-i);v0=v1;end

11、p=v0C语言代码1.1#include#includevoid main()float a100,v,x;int n,i,j;printf( 输入多项式的次数和x 的值 );scanf(%d%f,&n,&x);printf( 按照递增顺序输入多项式前的系数);for(i=0;i=n;i+)scanf(%f,&ai);v=an;j=1;while(j=n)v=x*v+an-j;j+=1;printf( 多项式的值为%f,v);C语言代码1.1 。 1#include#include 7#includevoid main()int i,n;float *a,x,p;printf(*多项式求值程序

12、(秦九韶算法 )*nn);printf(请输入待计算多项式的次数n:);scanf(%d,&n);a=(float *)malloc(sizeof(float)*n);printf(请输入待计算的多项式的每项系数a0,a1,.,an:);for(i=0;i=n;i+)scanf(%f,&ai);printf(请输入待计算多项式的x 的值 :);scanf(%f,&x);p=an;for(i=1;i=n;i+)p=x*p+an-i;printf(p(%f)=%fnn,x,p);free(a);system(pause);实例:求解多项式p(3)3x25x1 的值。图1-2图1-381 2 求解一

13、元二次方程设一元二次方程为ax2bxc0它的求根公式为bb24abx22aC语言 ( 求解一元二次方程)#include#includevoid main()float a,b,c,D,x1,x2,r,i;printf(*一元二次方程的求解程序*nn);printf( 请输入方程的三个系数 a(不为零 ),b,c,以【英文状态】下的逗号隔开,并按回车键确认: );scanf(%f,%f,%f,&a,&b,&c);D=b*b-4*a*c;if(fabs(D)1e-5)x1=(-b+sqrt(D)/(2*a);x2=(-b-sqrt(D)/(2*a);printf(该方程有两个不等实根:x1=%f

14、x2=%fnn,x1,x2);elser=-b/(2*a);i=sqrt(-D)/(2*a);printf(该方程有两个共轭复根:x1=%f+%fi,r,i);printf(x2=%f-%finn,r,i);system(pause);910第二章 插值方法插值法是函数逼近的一种重要方法,是数值计算的基本课题。它利用函数f (x) 在某区间中若干点的函数值,作出适当的特定函数, 在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f(x) 的近似值。 选用不同类型的插值函数,会有不同的插值效果。由于代数多项式的结构简单,数值计算和理论分析都很方便,实用上常取代数多项式作为插值函数,这就

15、是所谓的代数插值。2.1 泰勒插值泰勒插值是一种泰勒展开方法。已知泰勒多项式pn ( x)f ( x0 ) f ( x0 )( x x0 )f ( n) (x0 ) ( xx0 ) n(1)n!与 f(x) 在点 x0 具有相同的导数值pn( k ) ( x0 )f (k ) ( x0 ) k0,1,n因此, pn (x) 在点 x0 邻近会很好的逼近f(x) 。不同该插值函数也存在着固有的缺点,要求提供 f(x) 在点 x0 处的各阶导数值,这项要求很苛刻。当函数f(x) 的表达式简单时,泰勒插值会方便计算。现给出一次和二次泰勒插值的代码。matlab 代码 2.1.1clear all ;

16、% 一次泰勒插值syms x;x0=input( 已知的 x0 的取值 );f=input( 函数的形式 ,s);g=input( 函数的一阶导数形式,s);f=inline(f); % 调用了 inline 函数g=inline(g);p=f(x0)+g(x0)*(x-x0);p11matlab 代码clear all ;% 二次泰勒插值syms x;x0=input( 已知的 x0 的取值 );f=input( 函数的形式 ,s);g1=input( 函数的一阶导数形式,s);g2=input( 函数的二阶导数形式,s);f=inline(f); % 调用了 inline 函数g1=inl

17、ine(g1);g2=inline(g2);p=f(x0)+g1(x0)*(x-x0)+g2(x0)/2*(x-x0)2;pC语言代码#include#includefloat f(float x)return(x(1/2);/原函数的表达式float ff(float x)return(1/(2*x(1/2);/一阶导数的表达式float g(float x0,float x)float s;s=f(x0)+ff(x0)*(x-x0);return s;12void main()float x0,x;printf( 请输入 x0 和 x 的值: );scanf(%f%f,&x0,&x);pr

18、intf(%fn,g(x0,x);实例:求作 f ( x)x 在 x0 =100 的一次和二次泰勒多项式,利用它们计算115 的近似值。解: f ( x)x, f( x)1 , f (x)12x4x x图 2-113图 2-2图 2-32.2拉格朗日插值拉格朗日插值是n 次多项式插值, 它用构造插值基函数的方法解决了求n 次多项式插值函数问题。 基本思想是将待求的n 次多项式插值函数pn (x) 改写成另一种表示方式,再利用插值条件确定其中的待定函数,从而求出插值多项式。首先构造插值基函数l k ( x) , l k ( x) 是一个 n 次多项式,并且满足条件0,jkl k ( x j )j

19、( 2)1,k这表明除 xk 以外的所有节点都是lk (x) 的零点,故nl k (x) c( xx j )j 0 j k14按照公式 (2) 的一个条件 l k ( xk )1确定其系数 c, 结果有nxx jl k ( x)0 xkxjjjk利用插值函数得出拉格朗日插值为nnnxx jpn ( x)ykl k xyk0 xkx jk 0k 0jjk下面给出拉格朗日算法的代码。matlab 代码clear all ;clc;t=input( 以行向量形式输入x的取值 );y=input( 以行向量形式输入y的取值 );n=input( 多项式的次数);x=input( 计算在 x处的函数值

20、,x= );for k=1:(n+1)l(k)=1;endfor k=1:(n+1)for i=1:k-1l(k)=l(k)*(x-t(i)/(t(k)-t(i);endfor i=(k+1):(n+1)l(k)=l(k)*(x-t(i)/(t(k)-t(i);endendp=0;for k=1:n+1p=p+l(k)*y(k);end15disp(p);C语言代码#includemain()float x0,p=0,t,x100,y100;int n,i,j,k;printf( 输入 x0 的值和所求插值多项式的次数n);scanf(%f%d,&x0,&n);printf( 输入已知的x,y

21、 的取值 );for(i=0;i=n;i+)scanf(%f%f,&xi,&yi);for(k=0;k=n;k+)t=1;for(j=0;j=n;j+)if(j!=k)t=t*(x0-xj)/(xk-xj);p+=t*yk;printf( 在 x0处插值多项式为 %fn,p);实例:利用100, 121 和 144 的开方值求115.解:设 y 与 x 的关系式为 yx . 则 x100121 144 , y 10 11 12 .图 2-416图 2-52.3埃尔米特插值埃尔米特插值是利用未知函数f(x)在插值节点上的函数值及导数值来构造插值多项式的, 基本思想 : 给定 n+1 个互异的节点

22、x0 , x1 , xn 上的函数值和导数值,利用拉格朗日插值函数的构造方法 , 先设定函数形式 , 再利用插值条件求出插值函数。可见,埃尔米特插值是泰勒插值和拉格朗日插值的综合和推广。问题 求作二次式 p2x ,使满足p2 x0y0 ,p2 x0y0 ,p2 x1y1我们利用基函数的方法进行求解。为化简计算,先假设x00, x11,并且令p2 xy0 0 x y1 1 x y0 0 x式中基函数 0 x ,1 x , 0x均为二次式,且分别满足下列条件001,01000111,10100001,00010求解可得0x1x21x2 xx2 ( 3)1xx 1x类似地,当x0 , x1 是任意给

23、出的两个插值节点时,则插值公式如下17p2 xx x0x x0x x0y0 0y1 1hy0 0hhh其中 hx1x0 .我们再进行下列转换变换x1, x001,txx0 , h x x0h就能得到式(2)。matlab 代码主函数clear all ;clc;x0=input( x0的取值 );x1=input( x1的取值 );h=x1-x0;x=input( x 的取值 );y0=input( y0的取值 );y1=input( 在 x1 处 y1 的取值 );yy=input( 在 x0 处 y的一阶导数的取值);p=y0*f0(x-x0)/h)+y1*f1(x-x0)/h)+h*yy

24、*g0(x-x0)/h);disp(p);调用的子函数子函数 1function output=f0(t)output=1-t2;子函数 2function output=f1(t)output=2*t-t2;子函数 3function output=g0(t)18output=t*(t-1);C语言代码#include#includefloat f0(float x)return(1-x*x);float f1(float x)return(2*x-x*x);float g0(float x)return(x*(x-1);void main()float x0,x1,x,y0,y1,yy,h

25、,p;printf( 输入 x0,x1,x,y0,y1和 yy 的取值 );scanf(%f%f%f%f%f%f,&x0,&x1,&x,&y0,&y1,&yy);h=x1-x0;p=y0*f0(x-x0)/h)+y1*f1(x-x0)/h)+h*yy*g0(x-x0)/h);printf(%fn,p);实例:已知 H 2 满足条件 H 20 =1,H2 0 1,H 2 24.求H2 1.5 .19图 2-6图 2-72.4分段插值插值多项式余项公式说明插值节点越多, 误差越小,函数逐近越好,但后来人们发现,事实并非如此,例如:取被插函数, 在-5, 5 上的 n+1 个等距节点: 计算出 f(

26、xk)后得到拉格朗日插值多项式Ln(x), 考虑 -5,5上的一点x=5-5/n, 分别取 n=2,6,10,14,18计算f(x),Ln(x) 及对应的误差 Rn(x), 从得到的结果可知, 随节点个数 n 的增加 , 误差 lRn(x)l不但没减小 , 反而不断的增大. 这个例子最早是由Runge 研究 , 所以后来人们把这种节点加密但误差增大的现象称为 Runge现象 . 出现 Runge现象的原因主要是当节点n 较大时 , 对应的是高次插值多项式 , 此差得积累 淹没 了增加节点减少的精度 .Runge现象否定了用高次插值公式提高逼近精度的想法 , 本节的分段插值就是克服Runge 现

27、象引入的一种插值方法 .定义:设 fx 是定义在a, b 上的函数,在a, b 上节点a x0x1Lxn 1 xnb 的函数值为 y0 , y1 ,L yn 1 , yn ,若x 函数满足条件(1)x在区间 a,b 上连续;(2)x在每个子区间xi , xi 1 上是次数为 m的多项式;20则称x 是 fx 在 a, b 上的分段 m次插值多项式。本节只对分段线性插值和分段三次插值进行详细介绍。分段一次插值: 依据定义, 构造线性插值函数。 在每个子区间xi , xi 1 上 S1 x 都是一次式,且成立 S1 xiyi , S1 xi 1yi 1 ,因此可以得到S1 x = 0xxiyi1x

28、xiyi 1 ,xixxi 1hihi其中 hixi 1xi ,而0x1x, 1 xx .matlab 代码clearall;clc;x=input( 已知 x 的取值 );y=input( 已知 y 的取值 );n=numel(x);x0=input(x0 的取值 );y0=0;fori=1:n-1if(x0x(n)disp( 输入的值不在所给范围内 );break;endif(x(i)=x0x(i+1)y0=(x0-x(i+1)*y(i)/(x(i)-x(i+1)+(x0-x(i)*y(i+1)/(x(i+1)-x(i);disp(y0);endendC语言 - 分段一次插值#includ

29、e#include #include21void main()int i,n;float a,*x,*y,s;printf(*分段线性插值程序*nnn);printf(请输入已知节点数:);scanf(%d,&n);x=(float *)malloc(sizeof(float)*n);y=(float *)malloc(sizeof(float)*n);printf(n请输入已知点的坐标值,横纵坐标用英文状态下的【逗号】隔开,点与点之间用【空格】隔开:);for(i=0;in;i+)scanf(%f,%f,&xi,&yi);printf(n请输入待计算点的横坐标x【 x %f,%f 】: ,x

30、0,xn-1);scanf(%f,&a);if(axn-1)s=(a-xn-1)/(xn-2-xn-1)*yn-2+(a-xn-2)/(xn-1-xn-2)*yn-1;elsefor(i=0;axi;i+)s=(a-xi)/(xi-1-xi)*yi-1+(a-xi-1)/(xi-xi-1)*yi;printf(ns1(%f)=%f ,即插值点坐标为 (%f,%f)nnn,a,s,a,s); free(x);free(y);system(pause);实例:已知 S1 x 为( 0, 1),(1, 3),(2, 7)上的分段一次插值,求S1 1.5 .图 2-8分段三次插值: 依据定义, 构造分

31、段三次插值。在每个子区间xi , xi 1 上 S1 x 都是三次式,且成立 S3 xiyi , S3 xi yi , S3 xi +1yi +1 , S3 xi +1yi +1 ,所以可以得到下式22S3x = 0x xiyi1x xiyi 1 +hi 0x xiyihi 1x xiyi 1, xix xi 1hihihihi21 x x22x 30 x = x 1 2x 1 ,并且有2x2 x 10 x x x 1 , 1 x分段插值的一个重要特点是它的局部性质,如果修改某个数据,那么插值曲线仅仅在某个局部范围内受到影响,而代数插值却会影响到整个插值区间。matlab 代码clearall

32、;clc;x=input( 已知 x 的取值 );y=input( 已知 y 的取值 );yy=input( 已知 y的一阶导数的取值 );n=numel(x);x0=input(x0 的取值 );y0=0;fori=1:n-1if(x0x(n)disp( 输入的值不在所给范围内 );break;endif(x(i)=x0x(i+1)h=x(i+1)-x(i); t=(x0-x(i)/h;y0=(t-1)2*(2*t+1)*y(i)+t2*(3-2*t)*y(i+1)+h*t*(t-1)2*yy(i)+h*t2*(t-1)*yy(i+1);endenddisp(y0);3、 C 语言 - 分段

33、三次插值#include#include 23#includevoid main()int i,n;float *x,*y,*yx,t,a,b,s;printf(*分段三次插值程序*nn);printf(请输入已知节点数:);scanf(%d,&n);x=(float*)malloc(sizeof(float)*n);y=(float*)malloc(sizeof(float)*n);yx=(float*)malloc(sizeof(float)*n);printf( 请输入已知点的坐标值及一阶导数, 横纵坐标和导数用英文状态下的 【逗号】隔开 ,点与点之间用【空格】隔开: );for(i=0

34、;ixi;i+)a=(t-xi)/(xi-1-xi);b=(t-xi-1)/(xi-xi-1);s=pow(a,2)*(1+2*b)*yi-1+pow(b,2)*(1+2*a)*yi+pow(a,2)*(t-xi-1)*yxi-1+pow(b,2)*(t-xi)*yxi;printf(S3(%f)=%f,即插值点坐标为(%f,%f)nn,t,s,t,s);free(x);free(y);free(yx);system(pause);x :012实例:已知y :014 ,求 S3 1.5 .y :112解:当 1x2 时,分段三次插值为S3 a =(a-2)2*(2*a-1)+(a-1)2*(5

35、-2*a)*4+(a-1)*(a-2)2+2*(a-1)2*(a-2)将a=1.5代入得 s=2.375.这是理论值。利用计算机编程计算如下:24图2-92.5牛顿插值公式利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。牛顿插值是通过求各阶差商,递推得到的一个公式:n 阶差商:牛顿插值公式:25余项公式:由余项公式可以看出,牛顿插值公式实质上是拉格朗日插值公式的一种变形。下面给出牛顿插值算法的代码。matlab 代码clear all

36、 ;clc;t=input( 以行向量形式输入x 的取值 );y=input( 以行向量形式输入y 的取值 );n=input( 多项式的次数);x=input( 计算在 x 处的函数值 ,x= );fork=2 :(n+1)26f(k)=0;endfor k=2:( n+1)fori=1:ku=1;for j=1 :(i-1 )u=u*(t(i)-t(j);endfor j=(i+1):ku=u*(t(i)-t(j);endf (k)= f(k)+y(i)/u;% 计算得到各阶差商endendp= y(1) ;for k=2:( n+1 )v=1;fori=1 :(k-1)v=v*(x-t(

37、i);endp=p+ f (k)* v;enddisp(p);27实例:利用36, 49 和 64 的开方值求.28解 : 设y与x的 关 系 式 为.则,29C语言 ( 牛顿差商插值 )#include#include #includevoid main()int i,j,k,n;float a,*x,*y,*f,*l,*m,p=0;printf(*牛顿差商插值程序*nnn);printf(请输入已知点的个数:);scanf(%d,&n);x=(float *)malloc(sizeof(float)*n);y=(float *)malloc(sizeof(float)*n);f=(floa

38、t *)malloc(sizeof(float)*n);l=(float *)malloc(sizeof(float)*n);m=(float *)malloc(sizeof(float)*n);printf(n请输入已知点的坐标值,横纵坐标用英文状态下的【逗号】隔开,点与点之间用【空格】隔开:n);for(i=0;in;i+)scanf(%f,%f,&xi,&yi);printf(n请输入待计算点的横坐标x=);scanf(%f,&a);for(k=0;kn;k+)for(j=0;j=k;j+)lj=1;for(i=0;ij;i+)lj=lj*(xj-xi);for(i=j+1;i=k;i+)lj=lj*(xj-xi);30fk=0;for(i=0;i=k;i+)fk=fk+yi/li;for(j=0;jn;j+)mj=1;for(i=0;ij;i+)mj=mj*(a-xi);for(i=0;in;i+)p=p+fi*mi;n=n-1;printf(np%d(%f)=%f,即插值点坐标为(%f,%f)nnn,n,a,p,a,p);free(x);free(y);free(f);free(l);free(m);system(pause);C语言 ( 牛顿差分插值 )#include#include #includevoid main()

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!