科学计算与数学软件实验指导书.doc_第1页
科学计算与数学软件实验指导书.doc_第2页
科学计算与数学软件实验指导书.doc_第3页
科学计算与数学软件实验指导书.doc_第4页
科学计算与数学软件实验指导书.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

科学计算实验实验指导书大学数学实验教学中心编写实验一 Matlab基本操作【实验类型】 验证性【实验学时】 1学时【实验目的】1、MATLAB的基本操作; 2、MATLAB编程;【实验内容】 1、MATLAB的基本操作; 2、MATLAB编程;【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1计算机基础知识;2熟悉编程基本思想;3熟悉常见数学函数;【实验方法或步骤】上机验证、熟悉以下函数、命令。1 常见数学函数函 数 名数 学 计 算 功 能函 数 名数 学 计 算 功 能abs(x)实数的绝对值或复数的幅值floor(x)对x朝-方向取整acos(x)反余弦arcsingcd(m,n)求正整数m和n的最大公约数acosh(x)反双曲余弦arccoshimag(x)求复数x的虚部angle(x)在四象限内求复数 x 的相角lcm(m,n)求正整数m和n的最小公倍数asin(x)反正弦arcsinlog(x)自然对数(以为底数)asinh(x)反双曲正弦arcsinhlog10(x)常用对数(以10为底数)atan(x)反正切arctanreal(x)求复数x的实部atan2(x,y)在四象限内求反正切rem(m,n)求正整数m和n的m/n之余数atanh(x)反双曲正切arctanhround(x)对x四舍五入到最接近的整数ceil(x)对x朝+方向取整sign(x)符号函数:求出x的符号conj(x)求复数x的共轭复数sin(x)正弦sincos(x)余弦cossinh(x)反双曲正弦sinhcosh(x)双曲余弦coshsqrt(x)求实数x的平方根:exp(x)指数函数 tan(x)正切tanfix(x)对x朝原点方向取整tanh(x)双曲正切tanh如:输入x=-4.85 -2.3 -0.2 1.3 4.56 6.75,则: ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 72系统的在线帮助1) help 命令:1.当不知系统有何帮助内容时,可直接输入help以寻求帮助: help(回车)2.当想了解某一主题的内容时,如输入: help syntax(了解Matlab的语法规定)3.当想了解某一具体的函数或命令的帮助信息时,如输入: help sqrt (了解函数sqrt的相关信息) 2)lookfor命令现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: lookfor line (查找与直线、线性问题有关的函数)3常量与变量系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表:特殊的变量、常量取 值ans用于结果的缺省变量名pi圆周率的近似值(3.1416)eps数学中无穷小(epsilon)的近似值(2.2204e - 016)inf无穷大,如 1/0 = inf (infinity)NaN非数,如 0/0 = NaN (Not a Number),inf / inf = NaNi,j虚数单位:i = j =数值型向量(矩阵)的输入1任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号( )内;例1: Time = 11 12 1 2 3 4 5 6 7 8 9 10 X_Data = 2.32 3.43;4.37 5.982系统中提供了多个命令用于输入特殊的矩阵:函数功 能函数功 能compan伴随阵toeplitzToeplitz矩阵diag对角阵vanderVandermonde矩阵hadamardHadamard矩阵zeros元素全为0的矩阵hankelHankel矩阵ones元素全为1的矩阵invhilbHilbert矩阵的逆阵rand元素服从均匀分布的随机矩阵kronKronercker张量积randn元素服从正态分布的随机矩阵magic魔方矩阵eye对角线上元素为1的矩阵pascalPascal矩阵meshgrid由两个向量生成的矩阵上面函数的具体用法,可以用帮助命令help得到。如:meshgrid(x,y)输入 x=1 2 3 4; y=1 0 5; X,Y=meshgrid(x, y),则X = Y = 1 2 3 4 1 1 1 1 1 2 3 4 0 0 0 0 1 2 3 4 5 5 5 5目的是将原始数据x,y转化为矩阵数据X,Y。 符号向量(矩阵)的输入1用函数 sym定义符号矩阵:函数sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制。只需将方括号置于单引号中。例2: sym_matrix = sym(a b c;Jack Help_Me NO_WAY) sym_matrix = a, b, c Jack, Help_Me, NO_WAY2用函数syms定义符号矩阵先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。例3: syms a b c ; M1 = sym(Classical); M2 = sym( Jazz); M3 = sym(Blues); A = a b c; M1, M2, M3;sym(2 3 5)A = a, b, c Classical, Jazz, Blues 2, 3, 54数组(矩阵)的点运算运算符:+(加)、-(减)、./(右除)、.(左除)、.(乘方),例4: g = 1 2 3 4;h = 4 3 2 1; s1 = g + h, s2 = g.*h, s3 = g.h, s4 = g.2, s5 = 2.h5矩阵的运算运算符:+(加)、-(减)、*(乘)、/(右除)、(左除)、(乘方)、(转置)等;常用函数:det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref(化矩阵为行最简形)例5: A=2 0 -1;1 3 2; B=1 7 -1;4 2 3;2 0 1; M = A*B % 矩阵A与B按矩阵运算相乘 det_B = det(B) % 矩阵A的行列式 rank_A = rank(A) % 矩阵A的秩 inv_B = inv(B) % 矩阵B的逆矩阵 V,D = eig(B) % 矩阵B的特征值矩阵V与特征向量构成的矩阵D X = A/B % A/B = A*B-1,即XB=A,求X上机练习(一):1练习数据和符号的输入方式,将前面的命令在命令窗口中执行通过;2输入A=7 1 5;2 5 6;3 1 5,B=1 1 1;2 2 2; 3 3 3,在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A2 A.2 B/A B./A3输入C=1:2:20,则C(i)表示什么?其中i=1,2,3,10;4查找已创建变量的信息,删除无用的变量;5欲通过系统做一平面图,请查找相关的命令与函数,获取函数的帮助信息。6编程无条件循环当需要无条件重复执行某些命令时,可以使用for循环:for 循环变量t=表达式1 : 达式2 : 表达式3 语句体end说明:表达式1为循环初值,表达式2为步长,表达式3为循环终值;当表达式2省略时则默认步长为1;for语句允许嵌套。例6: 如:生成34阶的Hiltber矩阵。 for i=1:3 for j=1:4 H(i,j)=1/(i+j-1) end end如:矩阵输入程序 m=input(矩阵行数:m=); n= input(矩阵列数:n=); for i=1:m for j=1:ndisp(输入第,num2str(i),行,第, num2str(j),列元素)A(i, j) = input ( )endend 条件循环1) if-else-end语句if-else-then语句的常使用三种形式为:(1) if 逻辑表达式 (3) if 逻辑表达式1 语句体 语句体1end elseif 逻辑表达式2 语句体2(2) if 逻辑表达式1 elseif 逻辑表达式3 语句体1 else else 语句体2 语句体nend end 2) while循环语句while循环的一般使用形式为:while 表达式 语句体end例7:用二分法计算多项式方程= 0在0,3内的一个根。 解:a = 0;fa = -inf;b = 3;fb = inf;while b-a eps*b x =(a+b)/2; fx = x3-2*x-5; if sign(fx)= sign(fa) a =x; fa = fx; else b = x; fb = fx; endendx运行结果为:x = 2.0945515148154233 分支结构若需要对不同的情形执行不同的操作,可用switch 分支语句:switch 表达式(标量或字符串) case 值1 语句体1 case 值2 语句体2 otherwise 语句体nend说明:当表达式不是“case”所列值时,执行otherwise语句体。7 M文件将多个可执行的系统命令,用文本编辑器编辑后并存放在后缀为 .m 的文件中,若在MATLAB命令窗口中输入该m-文件的文件名(不跟后缀.m!),即可依次执行该文件中的多个命令。这个后缀为.m的文件,也称为Matlab的脚本文件(Script File)。注意:文件存放路径必须在Matlab能搜索的范围内。8 建立函数文件对于一些特殊用户函数,系统提供了一个用于创建用户函数的命令function,以备用户随时调用。1格式:function 输出变量列表=fun_name(输入变量列表) 用户自定义的函数体2函数文件名为:fun_name,注意:保存时文件名与函数名最好相同;3存储路径:最好在系统的搜索路径上。4. 调用方法:输出参量=fun_name (输入变量)例8:计算s = n!,在文本编辑器中输入:function s=pp(n);s=1;for i=1:n s=s*i;ends;在MATLAB命令窗口中输入:s=pp(5) 结果为s = 120上机练习(二):1编写程序,计算1+3+5+7+(2n+1)的值(用input语句输入n 值)。2编写分段函数 的函数文件,存放于文件ff.m中,计算出,的值。9 矩阵及其运算 矩阵的创建1). 加、减运算运算符:“”和“”分别为加、减运算符。运算规则:对应元素相加、减,即按线性代数中矩阵的“十”、“一”运算进行。例1 在Matlab编辑器中建立m文件:LX0701.m A=1, 1, 1; 1, 2, 3; 1, 3, 6B=8, 1, 6; 3, 5, 7; 4, 9, 2C=A+BD=A-B在Matlab命令窗口建入LX0701,则结果显示:C=9 2 74 7 105 12 8D=-7 0 -5-2 -3 -4-3 -6 42). 乘法运算符:*运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。(1)两个矩阵相乘例2 在Mtalab编辑器中建立M文件:LX0702.mX= 2 3 4 5;1 2 2 1;Y=0 1 1;1 1 0;0 0 1;1 0 0;Z=X*Y存盘在命令行中建入LX0702,回车后显示:Z= 8 5 6 3 3 3 (2)矩阵的数乘:数乘矩阵上例中:a=2*X则显示:a =4 6 8 102 4 4 2(3)向量的点乘(内积):维数相同的两个向量的点乘。命令:dot 向量点乘函数例:X=-1 0 2;Y=-2 -1 1;Z=dot(X, Y)则显示:Z =4还可用另一种算法:sum(X.*Y)ans= 4(4)向量叉乘在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab中,用函数cross实现。命令 cross 向量叉乘函数例3 计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。在Mtalab编辑器中建立M文件:LX0703.m a=1 2 3; b=4 5 6; c=cross(a,b)结果显示: c= -3 6 -3可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为(-3, 6, -3)(5)混合积混合积由以上两函数实现:例4 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积在Matlab编辑器中建立M文件:LX0704.ma=1 2 3; b=4 5 6; c=-3 6 -3;x=dot(a, cross(b, c)结果显示:x = 54注意:先叉乘后点乘,顺序不可颠倒。3). 矩阵的除法Matlab提供了两种除法运算:左除()和右除(/)。一般情况下,x=ab是方程a*x =b的解,而x=b/a是方程x*a=b的解例:a=1 2 3; 4 2 6; 7 4 9b=4; 1; 2;x=ab则显示:x=-1.5000 2.00000.5000如果a为非奇异矩阵,则ab和b/a可通过a的逆矩阵与b阵得到: ab = inv(a)*b b/a = b*inv(a)4). 矩阵乘方运算符:运算规则:(1)当A为方阵,p为大于0的整数时,AP表示A的P次方,即A自乘P次;p为小于0的整数时,AP表示A-1的P次方。(2)当A为方阵,p为非整数时,则其中V为A的特征向量,为特征值矩阵5). 矩阵的转置运算符:运算规则:与线性代数中矩阵的转置相同。6). 矩阵的逆矩阵例5 求的逆矩阵方法一:在Matlab编辑器中建立M文件:LX07051.m A=1 2 3; 2 2 1; 3 4 3; inv(A)或A(-1)则结果显示为 ans = 1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000方法二:由增广矩阵进行初等行变换在Matlab编辑器中建立M文件:LX07052.m B=1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1;C=rref(B) %化行最简形X=C(:, 4:6)在Matlab命令窗口建入LX07052,则显示结果如下:C = 1.0000 0 0 1.0000 3.0000 -2.0000 0 1.0000 0 -1.5000 -3.0000 2.5000 0 0 1.0000 1.0000 1.0000 -1.0000X = 1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000这就是A的逆矩阵。7). 方阵的行列式命令: det 计算行列式的值例6 计算上例中A的行列式的值在Matlab编辑器中建立M文件:LX0706.mA=1 2 3; 2 2 1; 3 4 3;D=det(A)则结果显示为D = 2上机练习(三)用求矩阵逆矩阵的方式求解下列线性线性方程组实验二 Matlab绘图【实验类型】 验证性【实验学时】 1学时【实验目的】1、熟练掌握MATLAB二维曲线的绘制; 2、掌握图形的修饰; 3、掌握三维图形的绘制。【实验内容】 1MATLAB二维图形、三维图形的绘制; 2MATLAB图形的修饰。【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1MATLAB基本操作;2熟悉MATLAB绘图命令plot,polar,mesh,surf等;3熟悉MATLAB绘图辅助命令。【实验方法或步骤】 Matlab的绘图功能很强,能绘制二维图形、三维图形,下面以两道题目为例,说明绘图方法。例题:利用MATLAB绘制下列函数的图形,编写程序:1)绘制曲线的图形,要求用*号画出图形。程序清单:x=0:0.05:5;y=exp(-x/4).*sin(x.2);plot(x,y,*);xlabel(x);ylabel(y);运行结果: 2)绘制曲面的图形。程序清单:x=-pi:0.3:pi;y=-pi:0.3:pi;X,Y=meshgrid(x,y);z=sin(X).*sin(Y);mesh(x,y,z);xlabel(x);ylabel(y);zlabel(z);运行结果:上机练习:1)绘制曲线的图形。2)绘制曲面的图形。实验三 高斯消去法【实验类型】 验证性【实验学时】 1学时【实验目的】1熟悉Gauss消去法的基本原理; 2编写Matlab实现Gauss法的程序。【实验内容】 利用高斯消去法求解方程组【实验前的预备知识】 1熟悉Gauss消去法(选主元、不选主元)的基本思想,计算步骤;2Matlab中矩阵如何表示、如何访问矩阵元素。【实验方法或步骤】Gauss消元法算法:步一:消元1)得2)以此类推,有步二:回代参考程序:cleara = 9 -1 1 7;-1 10 -1 8;-1 -1 15 13;x = 0,0,0; tempo = a(2,:); a(2,:) = a(1,:); a(1,:)=tempo;aa(2,:) = a(2,:) - a(1,:)*a(2,1)/a(1,1);a(3,:) = a(3,:) - a(1,:)*a(3,1)/a(1,1); atempo = a(3,:); a(3,:) = a(2,:); a(2,:)=tempo;aa(3,:) = a(3,:) - a(2,:)*a(3,2)/a(2,2); ax(3) = a(3,4)/a(3,3);x(2) = (a(2,4) - a(2,3)*x(3)/a(2,2);x(1) = (a(1,4) - a(1,2:3)*x(2:3)/a(1,1); x运行结果:x = 0.7769 0.9760 0.9835实验四 利用矩阵的LU分解求解方程组【实验类型】 验证性【实验学时】 1学时【实验目的】1、熟悉矩阵LU分解的基本原理; 2、编写Matlab实现用LU分解法求解方程组的程序。【实验内容】利用LU分解求解方程组【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1掌握矩阵的各种分解( LU分解、Cholesky分解等)的基本计算方法;2掌握Matlab命令lu的用法:L,U,P=lu(A)其中L为置换矩阵。【实验方法或步骤】实验五 Lagrange多项式插值【实验类型】 验证性【实验学时】 1学时【实验目的】1、掌握Lagrange插值的基本原理; 2、掌握Matlab对多项式的各种计算; 3、编写Matlab实现Lagrange插值法的程序;4、通过Matlab观察龙格现象。【实验内容】 取函数 ,分别取节点数 的等距节点为插值点,构造出,画出其图形,与的图形比较;观察在 附近的现象,写出分析结果。【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1熟悉Lagrange插值多项式的基本理论知识,比如存在唯一性,插值基函数的性质,余项公式等;2熟悉Matlab对多项式计算的各种命令,求多项式系数的函数poly,求多项式根的函数roots,求多项式在某一点的函数值polyval等。【实验方法或步骤】个插值节点的Lagrange插值多项式的公式为:其中为基函数,为根据公式可得如下的参考程序清单:()x=-5:5;y=1./(1+x.2);t=-5:0.05:5;y1=1./(1+t.2);n=length(t);for i=1:n z=t(i);s=0; for k=1:11 Lk=1;u=x(k); for j=1:11 if j=k,Lk=Lk*(z-x(j)/(u-x(j); end end s=s+Lk*y(k);end y2(i)=s;endplot(x,y,r,t,y1,t,y2,o)运行结果:实验六 三次Hermite插值【实验类型】 验证性【实验学时】 1学时【实验目的】1、掌握三次Hermite插值的基本原理; 2、编写Matlab实现Hermite插值的程序。【实验内容】函数 已知 用两点三次Hermite插值公式求在2.45处的近似值。【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1熟知Hermite插值基本思想,即:由个点构造阶的多项式,并掌握Hermite插值公式的推导过程;2分段三次Hermite插值公式及其应用。【实验方法或步骤】有个插值节点,拟合这些点的Hermite插值多项式为:假设一个次多项式,当时满足这个插值条件的阶的多项式为参考程序清单:function yi=Hermite(x,y,ydot,xi)%Hermite插值公式,其中,%x为向量,全部的插值节点;%y为向量,插值节点处的函数值;%ydot为向量,插值节点处的导数值;% 如果此处缺省,则用均差代替导数;% 端点用向前、向后均差,中间点用中心均差;%xi为标量,自变量x;%yi为xi处的函数值;%如果没有给出y的导数值,则用均差代替导数.if isempty(ydot)=1 ydot=gradient(y,x);endn=length(x);m1=length(y);m2=length(ydot);%输入x,y和y的导数个数必须相同if n=m1|n=m2|m1=m2 error(The length of X,Yand Ydot must be equal); return;endp=zeros(1,n);q=zeros(1,n);yi=0;for k=1:n t=ones(1,n);z=zeros(1,n); for j=1:n if j=k %插值节点必须互异. if abs(x(k)-x(j)2, I = I+ (h/3)*2*sum(f(3:2:m);end例题:用复合Simpson公式求 在命令窗口输入:z1 = 0; z2 =pi; h = (z2-z1)/20;z = z1:h:z2;f = sqrt(exp(-x)2);I = simps_v(f , h);运行结果:I=1.4936实验九 差分近似及高阶导数的数值计算【实验类型】 验证性(选做)【实验学时】 1学时【实验目的】 1、掌握差分近似的定义以及高阶导数的数值计算的基本原理; 2、编写相应的Matlab的实现程序。【实验内容】已知函数的数据表如下:计算和处各阶可能的导数值。【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1熟知差分近似(向前差分、向后差分、中心差分)的定义;2掌握求差分近似的方法:插值多项式求导、Taylor展开法、自动求导算法;3掌握利用柯西公式求解析函数导数的原理及方法; 4掌握Matlab中求导命令polyder。【实验方法或步骤】 Matlab中求函数导数的方法分为:差分近似法、柯西公式法,下面的例题用插值多项式求导的方法求得函数导数,以供参考。例题:已知函数的数据表如下:xd00.20000.40000.60000.80001.0000yd0.39270.56720.69820.79410.86140.9053计算处各阶可能的导数值。程序清单:(利用插值多项式求导的方法)xd=0 0.2000 0.4000 0.6000 0.8000 1.0000;yd=0.3927 0.5672 0.6982 0.7941 0.8614 0.9053;a=0.3; L=length(xd);d=polyfit(xd-a,yd,L-1); fact=1;for k=1:L-1 fact=factorial(k),fact;endderiv=d.*fact 运行结果:deriv = 1.8750 -1.3750 1.0406 -0.9710 0.6533 0.6376实验十 非线性方程求根 【实验类型】 验证性【实验学时】 1学时【实验目的】1、掌握非线性方程求根的几种算法:二分法、牛顿法、割线法等; 2、编写Matlab对几种算法的实现及比较程序。【实验内容】 利用二分法或者牛顿法实现求方程的根。【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1熟悉非线性方程求根的几种方法(图形法、二分法、牛顿法、迭代法)及收敛定理; 2掌握Matlab中多项式求根命令roots。【实验方法或步骤】Matlab中求多项式的根用命令roots,求非线性方程的根时,可把图形法、二分法、牛顿法、迭代法、割线法这些数值方法转化为相应的Matlab程序,再求解,下面以二分法为例给出了用Matlab求方程根的函数文件。参考程序清单:unction bisec_n(f_name, a,c)tolerance = 0.000001; it_limit = 30;fprintf( It. a b c f(a) );fprintf( f(b) f(c)n );it = 0;Y = feval(f_name, a ); Y = feval(f_name, c );if ( Ya*Yc 0 ) fprintf( nn Stopped because f(a)f(c) 0 n );else while 1 it = it + 1; b = (a + c)/2; Y = feval(f_name, b ); fprintf(%3.0f %10.6f, %10.6f, it, a, b ); fprintf(%10.6f, %10.6f, %10.6f, %10.6fn, c, Ya, Yb, Yc ); if ( abs(c-a)it_limit ) fprintf( Iteration limit exceeded.n ); break end if( Ya*Yb 0 disp(注意ya*yb0,请重新调试区间端点a和b.) returnendmax1=-1+ceil(log(1-0)-log(abtol)/log(2);%ceil是向+inf方向取整for k=1:max1+1 a;ya=fun(a);b;yb=fun(b);x=(a+b)/2; yx=fun(x);wuca=abs(b-a)/2;k=k-1; k,a,b,wuca,ya,yb,yx if yx=0 a=x;b=x; elseif yb*yx0 b=x;yb=yx; else a=x;ya=ya; end if b-a0,请重新调试区间端点a和b.例2:求方程在内的实根,建立名为fun.m的M文件function y1=fun(x)y1=x2-2*x+4在MATLAB主窗口输入程序 k,x,wuca,yx=erfen(1,3,0.005)a = 1y1 = 3y1 = 7注意ya*yb0,请重新调试区间端点a和b.注意:二分法不能求出方程的二重根,收敛速度很慢。实验十一 线性曲线拟合【实验类型】 验证性【实验学时】 1学时【实验目的】1、掌握线性曲线拟合的几种算法; 2、掌握Matlab的实现方法; 3、掌握用最小二乘法做直线拟合、指数拟合,并能给出散点图和拟合曲线的图形。【实验内容】 用二次多项式拟合下列数据:0.10.40.50.70.70.90.610.920.991.521.472.03【实验仪器与软件平台】1PIV2.8/256M以上计算机;2Matlab6.0以上。【实验前的预备知识】 1、熟悉线性曲线拟合的基本思想及方法; 2、熟悉Matlab中命令polyfit的调用方法。【实验方法或步骤】 线性曲线拟合的方法有很多,Matlab中可调用命令polyfit,得到拟合多项式,也可采用最小二乘法这些数值方法,并将其转化为Matlab程序进行求解,下面的例题以最小二乘法为例编写了相应的Matlab程序,以供参考。例题1:用二次多项式拟合下列数据:1356781052112并做出数据点和拟合曲线图。程序清单:(用最小二乘法)function S=squar_least(x,y,n,w)%数据的最小二乘拟合,其中%x,y为数据的(x,y)坐标;%n为数据拟合的次数,缺省时n=1;%w为权值,缺省时w=1;%s为数据拟合的系数;%需要另写的外部函数.%phi(x)为基函数,通常为多项式1,x,x2,.globai i,globai j;if nargin4 w=1;endif n

温馨提示

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

评论

0/150

提交评论