Matlab上机实验二
- 格式:docx
- 大小:116.82 KB
- 文档页数:6
北京工业大学Matlab实验报告**: ***学号: ************: **实验二、Matlab 的基本计算(一)实验目的1.掌握建立矩阵的方法。
2.掌握Matlab 各种表达式的书写规则以及常用函数的使用。
3.能用Matlab 进行基本的数组、矩阵运算。
4.掌握矩阵分析的方法以及能用矩阵运算或求逆法解线性方程组。
5.掌握Matlab 中的关系运算与逻辑运算。
(二)实验环境1.计算机2.MATLAB7.0集成环境(三)实验内容及要求1、熟练操作MATLAB7.0运行环境;2、自主编写程序,必要时参考相关资料;3、实验前应写出程序大致框架或完整的程序代码;4、完成实验报告。
(四)实验程序设计1.利用diag 等函数产生下列矩阵。
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=032570800a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=804050702b2.利用reshape 函数将1题中的a 和b 变换成行向量。
3.产生一个均匀分布在(-5,5)之间的随机矩阵(10×2),要求精确到小数点后一位。
4.已知:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=76538773443412A ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=731203321B求下列表达式的值:(1) B A K *611+=和I B A K +-=12(其中I 为单位矩阵)(2) B A K *21=和B A K *.22=(3) 331^A K =和3.32^A K =(4) B A K /41=和A B K \42=(5) ],[51B A K =和]2:);],3,1([[52^B A K = 5.下面是一个线性方程组:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡52.067.095.03216/15/14/15/14/13/14/13/12/1x x x(1)求方程的解(矩阵除法和求逆法)(2)将方程右边向量元素3b 改为0.53,再求解,并比较3b 的变化和解的相对变化。
实验报告课程名称:MATLAB上机实验实验项目:矩阵和数组的操作实验地点:专业班级:学号学生姓名:指导教师:年月日实验二矩阵和数组的操作一.实验环境计算机 MATLAB软件二.实验目的1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。
2.学习矩阵和数组的加减运算与乘法。
3.掌握对数组元素的寻访与赋值,会对数组进行一般的操作。
三.实验内容与步骤1.用三种方法创建一个3×3矩阵,然后利用矩阵编辑器,将其扩充为4×5矩阵,并保存,试着调用它。
2.建立一个等差数列,然后由它产生一个对角阵。
3.利用MATLAB的函数inv(A)求方阵的逆矩阵。
解:1.(1)>> A=[3,2,1;4,5,6;7,8,9]A =3 2 14 5 67 8 9(2)A=rand(3,3)A =0.9501 0.4860 0.45650.2311 0.8913 0.01850.6068 0.7621 0.82142.> a=linspace(0.1,5,5)a =0 0.3750 0.7500 1.1250 1.5000>> B=diag(a)B =0 0 0 0 00 0.3750 0 0 00 0 0.7500 0 00 0 0 1.1250 00 0 0 0 1.50003.>> A=[1,2;5,6]A =1 25 6>> B=inv(A)B =-1.5000 0.50001.2500 -0.2500四.练习题1.创建一个5×5矩阵,提取主对角线以上的部分。
>> A=rand(5,5)A =0.4447 0.1763 0.8936 0.1389 0.19880.6154 0.4057 0.0579 0.2028 0.01530.7919 0.9355 0.3529 0.1987 0.74680.9218 0.9169 0.8132 0.6038 0.44510.7382 0.4103 0.0099 0.2722 0.9318>> B=triu(A)B =0.4447 0.1763 0.8936 0.1389 0.19880 0.4057 0.0579 0.2028 0.01530 0 0.3529 0.1987 0.74680 0 0 0.6038 0.44510 0 0 0 0.93182.A=rand(3),B=magic(3),C=rand(3,4),计算A×B×C>> A=rand(3),B=magic(3),C=rand(3,4)A =0.4660 0.5252 0.83810.4186 0.2026 0.01960.8462 0.6721 0.6813B =8 1 63 5 74 9 2C =0.3795 0.7095 0.1897 0.30280.8318 0.4289 0.1934 0.54170.5028 0.3046 0.6822 0.1509>> D=A*B*CD =16.2278 13.1844 9.2577 9.61074.8656 4.7624 3.7848 2.692118.5715 15.9959 11.7862 10.76673.创建一个3×3矩阵,并求其转置,逆矩阵。
《MATLAB及应用A》第二次上机作业一、一球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下。
求它在第10次落下时共经过多少米?第10次反弹多高?MATLAB源程序:MATLAB运行结果:二、有如下一段MATLAB程序,请解释说明每个语句的功能,必要时用数学表达式(不是在MATLAB中的输入形式);并给出y1、y2、y3的值(可从MATLAB中复制)。
MATLAB源程序:x=linspace(0,6);y1=sin(2*x);y2=sin(x.^2);y3=(sin(x)).^2;各条命令语句的功能如下:y1、y2、y3的值分别为:三、教材第55页习题三,第3题。
MATLAB源程序:MATLAB运行结果:四、选择题(1) i=2; a=2i; b=2*i; c=2*sqrt(-1); 程序执行后,a, b, c的值分别是多少?()(A) a=4, b=4, c=2.0000i(B) a=4, b=2.0000i, c=2.0000i(C) a=2.0000i, b=4, c=2.0000i(D) a=2.0000i, b=2.0000i, c=2.0000i(2) 求解方程x4-4x3+12x-9 = 0 的所有解,其结果为()(A) 1.0000, 3.0000, 1.7321, -1.7321(B) 1.0000, 3.0000, 1.7321i, -1.7321i(C) 1.0000i, 3.0000i, 1.7321, -1.7321(D) -3.000-0i, 3.0000i, 1.7321, -1.7321五、求[100,1000]之间的全部素数(选做)。
MATLAB源程序: MATLAB运行结果:一、一球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下。
求它在第10次落下时共经过多少米?第10次反弹多高?MATLAB源程序:>> a=(0:-1:-9) %产生一个行向量aa =0 -1 -2 -3 -4 -5 -6 -7 -8 -9>> b=pow2(a) %对行向量a中的每一个元素分别求幂函数b =1.0000 0.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.007 8 0.0039 0.0020>> h=100*b %对行向量b中的每一个元素分别乘以100h =100.0000 50.0000 25.0000 12.5000 6.2500 3.1250 1.5625 0. 7813 0.3906 0.1953>> s1=sum(h) %对行向量h中的元素求和s1 =199.8047>> s=s1*2-100 %求出第10次落下时经过的高度s =299.6094>> h10=h(10)/2 %求出第10次反弹的高度h10 =0.0977二、有如下一段MATLAB程序,请解释说明每个语句的功能,必要时用数学表达式(不是在MATLAB中的输入形式);并给出y1、y2、y3的值(可从MATLAB 中复制)。
MATLAB上机实验一一、实验目的初步熟悉MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。
命令窗口二、实验内容(1) 熟悉MATLAB 平台的工作环境。
(2) 熟悉MATLAB 的5 个工作窗口。
(3) MATLAB 的优先搜索顺序。
三、实验步骤1. 熟悉MATLAB 的5 个基本窗口①Command Window (命令窗口)②Workspace (工作空间窗口)—③Command History (命令历史记录窗口)④Current Directory (当前目录窗口)⑤Help Window (帮助窗口)(1) 命令窗口(Command Window)。
在命令窗口中依次输入以下命令:>>x=1>> y=[1 2 34 5 67 8 9];>> z1=[1:10],z2=[1:2:5];>> w=linspace(1,10,10);>> t1=ones(3),t2=ones(1,3),t3=ones(3,1)>> t4=ones(3),t4=eye(4)x =1z1 =1 2 3 4 5 6 7 8 9 10 t1 =1 1 11 1 11 1t2 =1 1 1t3 =111t4 =1 1 11 1 11 1 1t4 =1 0 0 00 1 0 00 0 1 00 0 0 1思考题:①变量如何声明,变量名须遵守什么规则、是否区分大小写。
答:(1)变量声明1.局部变量每个函数都有自己的局部变量,这些变量只能在定义它的函数内部使用。
当函数运行时,局部变量保存在函数的工作空间中,一旦函数退出,这些局部变量将不复存在。
脚本(没有输入输出参数,由一系列MATLAB命令组成的M文件)没有单独的工作空间,只能共享调用者的工作空间。
当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中。
2.全局变量在函数或基本工作空间内,用global声明的变量为全局变量。
Matlab上机实验报告实验二读入MATLAB下自带图像pout.tif1)利用亮度变换函数,调整图像亮度。
a)调整范围设定[0 1],[1 0],观测显示效果;b)调整范围设定[0.5 0.75],[1 0],观测显示效果。
解:a, I=imread('pout.tif');colormap;imshow(I);j=imadjust(I,[0 1],[1 0],1.5);figure;subimage(j);b, >> I=imread('pout.tif');colormap;imshow(I);j=imadjust(I,[0.5 0.75],[1 0],1.5);figure;subimage(j);2)利用对比度拉伸函数,压缩高值灰度(c值自行设定)。
解:I=imread('pout.tif');colormap;subplot(1,2,1);imshow(I);xlabel('a)原始图像');J=double(I);J=100*log(J+1);I=uint8(J);subplot(1,2,2);subimage(J);xlabel('b)非线性变换');3)利用直方图函数,生成并绘制图像直方图。
解:I=imread('pout.tif');subplot(1,2,1);imshow(I);title('原始图像');subplot(1,2,2);imhist(I);4)利用直方图修正函数,生成均衡化后的图像直方图(n值自定设定)。
解:I=imread('pout.tif');figure(1);subplot(1,2,1);imshow(I);xlabel('a)原始图像');J=histeq(I);figure(1);subplot(1,2,2);imshow(J);xlabel('b)直方图均衡');figure(2);imhist(I,100);figure(3);imhist(J,100);实验三1.运行例3、4,显示并分析输出结果,说明逆滤波和维纳滤波的区别。
实验二:时域采样与频域采样一、时域采样1.用MATLAB编程如下:%1时域采样序列分析fs=1000A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=1000;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);subplot(3,2,1);stem(n,xn);xlabel('n,fs=1000Hz');ylabel('xn');title('xn');subplot(3,2,2);plot(n,abs(Xk));xlabel('k,fs=1000Hz'); title('|X(k)|');%1时域采样序列分析fs=200A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=200;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs);Xk=fft(xn);subplot(3,2,3);stem(n,xn);xlabel('n,fs=200Hz'); ylabel('xn');title('xn');subplot(3,2,4);plot(n,abs(Xk));xlabel('k,fs=200Hz'); title('|X(k)|');%1时域采样序列分析fs=500A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=500;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);subplot(3,2,5);stem(n,xn);xlabel('n,fs=500Hz');ylabel('xn');title('xn');subplot(3,2,6);plot(n,abs(Xk));xlabel('k,fs=500Hz'); title('|X(k)|');2.经调试结果如下图:20406080-200200n,fs=1000Hzxnxn2040608005001000k,fs=1000Hz|X (k)|51015-2000200n,fs=200Hzx nxn510150100200k,fs=200Hz |X(k)|10203040-2000200n,fs=500Hzx nxn102030400500k,fs=500Hz|X (k)|实验结果说明:对时域信号采样频率必须大于等于模拟信号频率的两倍以上,才 能使采样信号的频谱不产生混叠.fs=200Hz 时,采样信号的频谱产生了混叠,fs=500Hz 和fs=1000Hz 时,大于模拟信号频率的两倍以上,采样信号的频谱不产生混叠。
实验二 MATLAB 程序设计一、 实验目的1.掌握利用if 语句实现选择结构的方法。
2.掌握利用switch 语句实现多分支选择结构的方法。
3.掌握利用for 语句实现循环结构的方法。
4.掌握利用while 语句实现循环结构的方法。
5.掌握MATLAB 函数的编写及调试方法。
二、 实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
M 文件的编写:启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。
点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正三、 实验内容1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。
并输入几组典型值加以检验。
(提示:提示输入使用input 函数)2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。
其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。
要求:(1)用switch 语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
(提示:注意单元矩阵的用法)3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:2?13?10?5?16?8?4?2?16?3?10?5?16?8?4?2?1运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
请为关键的Matlab 语句填写上相关注释,说明其含义或功能。
实验二 Matlab 基本操作(二)一 实验目的:1. 掌握矩阵方程的构造和运算方法2. 掌握基本Matlab 控制语句3. 学会使用Matlab 绘图二 实验内容1. 求解下列线性方程,并进行解的验证:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----1323151122231592127x=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-0174 >> a=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];b=[4;7;-1;0];x=a\b2、进行下列计算。
(1)k=∑=6322i i>>i=2:63;mysum=sum(2.^i)mysum =1.8447e+019(2)求出y=x*sin(x)在0<x<100条件下的每个峰值。
>>y='x.*sin(x)';fplot(y,[0 100]);min=fmin(y,0,100)min =54.99613、绘制下列图形。
(1)sin(1/t), -1<t<1;t=-1:0.02:1;y=sin(1./t);plot(t,y)(2)1-)7(cos 3t>> t=0:0.02:pi.*3;y=1-cos(7*t).^3;plot(t,y)4、已知系统闭环传递函数G (S ),分析系统稳定性及单位脉冲、单位阶跃响应。
22s 43206s 266)S (G s s s s s 23423+++++++=>> a=[1 3 4 2 2];b=[6 26 6 20];roots(a)ans =-1.4734 + 1.0256i-1.4734 - 1.0256i-0.0266 + 0.7873i-0.0266 - 0.7873i因为无右根,故系统稳定。
当单位脉冲输入时:>> [r p k]=residue(b,a);t=0:0.2:60;>> y1=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t)+r(4)*exp(p(4)*t); >> plot(t,y1)当输入单位阶跃函数时:>> a=[1 3 4 2 2 0];b=[6 26 6 20];[r p k]=residue(b,a);t=0:0.2:100;y2=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t)+r(4)*exp(p(4)*t)+r(5); plot(t,y2)。
上机二1、输入一个华氏温度F,输出相应的摄氏温度C,计算公式如下:C=5/9*(F-32)。
答:M文件clear all;F=input('请输入华氏温度F=');C=5/9*(F-32);C窗口输入>> m1请输入华氏温度F=5C =-15>>2、输入三角形的三边,求三角形的面积。
提示:面积公式S=sqrt(p(p-a)(p-b)(p-c)),其中p=(a+b+c)/2答:建立M文件m2clear all;a=input('请输入a=');b=input('请输入b=');c=input('请输入c=');p=(a+b+c)/2;if a+b>c&a+c>b&b+c>aS=sqrt(p*(p-a)*(p-b)*(p-c));fprintf('S=%d',S)elsefprintf('error');end输入窗口>> m2请输入a=3请输入b=4请输入c=5S=6>>>> m2请输入a=1请输入b=2请输入c=3error>>3、任意输入三个整数,由小到大顺序输出。
答:首先建立M文件。
m3文件clear all;a=input('请输入a=');b=input('请输入b=');c=input('请输入c=');if a>=bmin=b;b=a;a=min;endif a>=cmin=c;c=a;a=min;endif b>=cmin=c;c=b;b=min;endfprintf('a=%d,b=%d,c=%d',a,b,c);在输入窗口输入>> m3请输入a=5请输入b=9请输入c=1a=1,b=5,c=9>>4、解一元二次方程:ax^2+bx+c=0.即输入a,b,c的值,求方程的解。
实验二报告人:王业成年级:机电131 学号:2013012496实验日期:2015.3.327报告完成日期:2015.3.30一、实验名称熟悉和掌握MA TLAB中关于矩阵变换以及矩阵运算的各种命令。
二、实验目的:熟悉和掌握MA TLAB中关于矩阵变换以及矩阵运算的各种命令。
三、实验内容:1.数、数组、矩阵的输入(1)数的输入a=5b=2-5i(2)数组的输入c=[1,3,5,7,9,11] %元素之间要用逗号用空格分开d=1:2:11e=linspace(1,11,6)体会以上输入有什么区别和联系。
(3)矩阵的输入A=[2,3,5;1,3,5;6,9,4] %行之间要用分别隔开2.矩阵大小的测试和定位A=[3,5,6;,2,5,8;3,5,9;3,7,9][n,m]=size(A)A(1,3)3. 矩阵的块操作A(2,:)A([1,3],:)A(2:3,1:2)问题2.1如何将A的2,3列互换?4.矩阵的四则运算A=[3,5,8;-2,3,6;1,4,9]B=rand(3,3)C=A+BD=A-BE=A*B问题2.2E为矩阵A、B的乘积运算结果,如果要求E的结果为A和B对应元素相乘的结果,应输入什么命令?F=A/B问题2.3 如果要求F为A,B对应元素作除法运算的结果,应输入什么命令?5.矩阵的点运算A=[1 2;3 4];B=[5 6;7 8];A*BA.*BA^2A.^26.矩阵的逻辑运算A=[1 2;3 4]; B=[0 6; 0 8]; A | BA&Bxor(A,B)a=-5;b=-10;(b~=0)&&(a/b>5)(b= =0)||(a/b>0)~a四、回答问题:问题2.1如何将A的2,3列互换?问题2.2 E为矩阵A、B的乘积运算结果,如果要求E的结果为A和B对应元素相乘的结果,应输入什么命令?问题2.3 如果要求F为A,B对应元素作除法运算的结果,应输入什么命令?五、思考题:1.输入一个矩阵A,取出A的第2行第1列的元素;取出A的第1,3,4列的所有元素;让A的第1列和第3列互换;删除A的第二列。
《数学建模实验》上机实验报告班级:计算机35班学号:2130505099姓名:田博文【实验一】一上底面半径2米、下底面半径4米、高4米的圆台形水池内盛满了水,由池底一横截面积为0.001平方米的小孔放水。
求在任意时刻的水面高度和将水放空所需的时间。
一、问题分析:在dt很小一段时间内,水的流速v可以看成是不变的与水面高度h有关的函数,即v=gh2;在dt时间内流出的水量,可以近似的为一圆柱,对应的圆柱高为dh;由于容器下降的水量与流出的水量相等,令小孔面积为b,即dV=π2r dh=bvdt;可得dh与dt的关系为:dh=bvdt/(π2r);根据相似三角形原理可得,r=4-h/2;初始条件有;h(0)=4;为表示方便,引入变量L=4-h故r=2+L/2二、代码:T=0;for L=0:0.001:4-0.001 %选取积分微元为0.001,即dhV=0.001*pi*(2+(1/2*L))^2; %水面处的dV,b=0.001t=V/(sqrt(2*(4-L)*9.8)*0.001) %dV与dt关系T=T+t;plot(T,(4-L),'red'); hold onend三、运行结果:四、结论:在任意时刻的水面高度和将水放空所需的时间如上图红线所示,横轴为时间,纵轴为水面高度。
【实验二】有A、B、C三个场地,每一个场地都出产一定数量的原料,同时也消耗一定数量的产品,具体数据如下表所示。
已知制成每吨产品需要消耗3吨原料,A、B两地,A、C两地和B、C两地之间的距离分别为150千米、100千米和200千米,假设每万吨原料运输1千米的运费为5000元,每万吨产品运输1千米的运费为6000元。
由于地区条件的差异,在不同地区设厂的费用不同,由于条件的限制,在B处建厂的规模不能超过5万吨,问:在这三地如何建厂、规模建多大才能使得总费用最小?地点年产原料(万吨)年销产品(万吨)生产费用(万元/万吨)A 20 7 150B 16 13 120C 24 0 100一、问题分析:设nij为i地运往j地的原料量,mij为i地运往j地的产品量,设A地为1地,B 为2地,C地为3地。
matlab实验报告实验二Matlab实验报告实验二引言Matlab是一种功能强大的数学软件,广泛应用于科学研究和工程实践中。
在实验二中,我们将探索Matlab的图像处理功能,并通过实际案例来展示其应用。
图像处理基础图像处理是指对图像进行数字化处理的过程,其目的是改善图像质量、提取有用信息或实现特定的应用需求。
在Matlab中,我们可以利用各种函数和工具箱来实现图像处理的各种任务,如图像增强、滤波、分割和特征提取等。
实验步骤1. 图像读取与显示在Matlab中,我们可以使用imread函数读取图像文件,并使用imshow函数将图像显示在屏幕上。
例如,我们可以读取一张名为"lena.jpg"的图像,并显示出来:```matlabimg = imread('lena.jpg');imshow(img);```2. 图像灰度化图像灰度化是将彩色图像转换为灰度图像的过程。
在Matlab中,我们可以使用rgb2gray函数将彩色图像转换为灰度图像。
例如,我们可以将上一步读取的图像转换为灰度图像:```matlabgray_img = rgb2gray(img);imshow(gray_img);```3. 图像二值化图像二值化是将灰度图像转换为二值图像的过程,其中只包含黑色和白色两种颜色。
在Matlab中,我们可以使用imbinarize函数将灰度图像二值化。
例如,我们可以将上一步得到的灰度图像二值化:```matlabbinary_img = imbinarize(gray_img);imshow(binary_img);```4. 图像平滑图像平滑是指去除图像中的噪声或细节,使得图像更加平滑和清晰。
在Matlab 中,我们可以使用imfilter函数对图像进行平滑处理。
例如,我们可以对上一步得到的二值图像进行平滑处理:```matlabsmooth_img = imfilter(binary_img, fspecial('average'));imshow(smooth_img);```5. 图像边缘检测图像边缘检测是指提取图像中物体边缘的过程,常用于目标检测和图像分割。
实验二 Matlab语言程序设计一、实验内容:1、编写命令文件:计算 1+2+…+n<2000 时的最大 n 值;>> n=1; %将变量初值设为1sum=0;while((sum+n)<2000) %若s<2000成立,则执行下一条语句,否则结束本循环sum=sum+n; %求和运算n=n+1;endsum,n-1 %显示最终s和nsum =1953ans =622、编写函数文件:分别用 for 和 while 循环结构编写程序,求 2 的 0 到 15 次幂的和。
function xunhuan(x)sum=0;for(i=0:x)sum=sum+2^i;endy=sum>> xunhuan(15)y =65535function whilexun(x)sum=0;i=0;while(i<x)sum=sum+2^i;i=i+1;endy=sum>> whilexun(16)y =655353、如果想对一个变量 x 自动赋值。
当从键盘输入 y 或 Y 时(表示是),x 自动赋为 1;当从键盘输入 n 或 N 时(表示否),x 自动赋为 0;输入其他字符时终止程序。
a=input('输入一个字符:');switch acase 'y'x=1case 'Y'x=1case 'n'x=0case 'N'x=0otherwiseend输入一个字符:'Y'x =1二、实验思考题1.用FOR和WHILE语句有何要求?答:for语句的基本命令格式为for 循环变量=表达式1表达式3表达式2循环语句组End表达式1、表达式3、表达式2的定义和C语言相似即首先执行循环变量的初始值赋成表达式1的值然后判断循环变量的值介于表达式1和表达式2的值之间则执行循环体中的语句否则结束循环语句的执行。
1. 对Runge 函数2()1/(125)R x x =+在区间[-1,1]作下列插值逼近,并和()R x 的图
像进行比较,并对结果进行分析。
(1) 用等距节点1,0.1,020i x ih h i =-+=≤≤,绘出它的20次Newton 插值
多项式的图像。
(2) 用节点21cos()(0,1,2...,20)42
i i x i π+==,绘出它的20次Lagrange 插值多项式的图像。
(3) 用等距节点1,0.1,020i x ih h i =-+=≤≤,绘出它的分段线性插值函数
的图像。
(4) 用等距节点1,0.1,020i x ih h i =-+=≤≤,绘出它的三次自然样条插值
函数的图像。
结果分析:
等距节点的Newton插值在边界附近呈现不收敛的状态,也就是所谓的Runge 现象。
这是因为被插函数2
()1/(125)
R x x
=+及其任意阶导数并不是一致有界的。
由Lagrange插值的余项
(n1)
1
()
()()()()
(1)!
n n n
f
R x f x L x x
n
ξ
ω
+
+
=-=
+
,由于高阶导数值
非常大,在等距节点的高次插值中,余项的值很大,亦即误差特别大,表现为Runge现象。
在实际中,除非被插函数的光滑性十分好,否则等距节点的高次插值一般不使用。
切比雪夫多项式零点插值没有出现Runge现象,这是因为对于Lagrange插
值的余项
(n1)
1
()
()()()()
(1)!
n n n
f
R x f x L x x
n
ξ
ω
+
+
=-=
+
,切比雪夫多项式零点插值可以
将
1()
n x
ω
+项控制在
1
2n
以下(
1
[1,1]
max()
n
x
x
ω
+
∈-
=
1
2n
),由此可得切比雪夫多项式零点
插值的误差范围
(n1)
[1,1]
()
max()
2(1)!
n n
x
f
R x
n
ξ
+
∞
∈-
≤
+
,比等距节点的高次插值小很多,因此
对于被插函数的光滑性要求要比等距节点的插值也低很多。
分段低次线性插值是常用的一种插值方式。
线性插值的优点在于计算量小,但是从图中可以看出,其光滑性不够。
三次样条插值要求其一阶导数是连续的,因此其准确性好,光滑性也较优。
2. 对函数
sin ,10()cos ,01/20,1/21x x f x x x x ππ-≤<⎧⎪=≤<⎨⎪≤<⎩
在区间[-1,1]作下列插值逼近,和被插值函数的图像进行比较,并对计算结果进行分析。
(1) 用等距节点1,0.1,020i x ih h i =-+=≤≤,绘出它的20次Newton 插值
多项式的图像。
(2) 用节点21cos()(0,1,2...,20)42
i i x i π+==,绘出它的20次Lagrange 插值多项式的图像。
(3) 用等距节点1,0.1,020i x ih h i =-+=≤≤,绘出它的分段线性插值函数
的图像。
(4) 用等距节点1,0.1,020i x ih h i =-+=≤≤,绘出它的三次自然样条插值
函数的图像。
由matlab运行结果可以看到,等距节点的Newton插值在边界附近呈现不收敛的状态,切比雪夫多项式零点插值也有一定的振荡。
这是因为被插函数是分段函数,其一阶导数都不是连续的,光滑性非常差,因此相对于函数2
=+,其切比雪夫多项式零点插值的收敛性差很多。
分段低次线()1/(125)
R x x
性插值与三次样条插值相比较,其光滑性不够,但是三次样条插值在断点附近有轻微的振荡,准确性比不上分段线性插值。