MATLAB实验三
Matlab实验三 绘制根轨迹
for
Principles of Automatic Control
实验三 绘制根轨迹 1: 绘制根轨迹 2: 参量分析
① 绘制根轨迹 rlocus(sys)
Gk
(s)
K *(s 1) (s 2)(s 3)
rlocus(num, den)
rlocus(sys,k)
②参量分析(根轨迹图上一顿乱点即可)
K1
(s a )nm
1
根轨迹渐进线的方程是新的根轨迹方程。
Байду номын сангаас
• 例: 绘制根轨迹及其渐近线
G(s)
K1
s(s 1)(s 2)
⑥讨论增加零点对根轨迹的影响 试试-2至-4之间的零点
G(s)
K1
s(s 1)(s 2)
r=rlocus(sys)
Gk
(s)
K *(s 1) (s 2)(s 3)
r=rlocus(num, den)
[r,k]=rlocus(sys)
[r,k]=rlocus(num, den)
③测量出根轨迹增益和对应闭环极点坐标,
在窗口显示
Gk
(s)
K *(s 1) (s 2)(s 3)
[k,poles] = rlocfind(sys)
[k,poles] = rlocfind(sys,p) P为已知的要研究的闭环极点。
④绘制零、极点以及在窗口显示零极点
pzmap(sys)
Gk
(s)
K *(s 1) (s 2)(s 3)
[p,z]=pzmap(sys) 求解零极点的好方法
⑤绘制根轨迹渐近线
一般人我不告诉他:
当根轨迹渐进线与实轴的交点已求出后, 可得到方程,这是根轨迹渐进线的方程。
MATLAB实验三参考答案
how =collect(x)
4、求下列函数的极限(写出命令) (1) lim
cos x e x 0 x4
x2 2
syms x; limit('(cos(x)-exp(-1/2*x^2))/(x^4)',x,0) -1/12 (2) lim
2 x ln 2 x 1 x 0 1 cos x
syms n; S=symsum(1/((3*n-2)*(3*n+1)),n,1,inf) 8、试求出函数 f ( x )
sin x 的麦克劳林幂级数展开式的前 9 项,并求出关于 x=2 x 3x 2
2
的 Taylor 幂级数展开式的前 5 项。(命令 taylor 或者 taylortool)
河南财经政法大学数学与信息科学学院 1
实验报告
结果: EXPR =(x^2+x*exp(-t)+1)*(x+exp(-t)) expr1 =x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 =x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x 3、factor(因式分解),simple(简化运算,对表达式尝试多种不同的算法进行简化,并以最 简化形式给出,How 中记录的为简化过程中使用的方法, )指令的使用 syms a x; f1=x^4-5*x^3+x^2+5*x-6; factor(f1) x^4-5*x^3+x^2+5*x-6 f2=x^2-a^2; factor(f2) (x-a)*(x+a) f3=2*sin(x)^2-cos(x)^2 [y , how]=simple(f3) y 为 f 的最优化简形式,How 中记录的为简化过程中使用的方法 y =-3*cos(x)^2+2 how =simplify [y , how]=simple(f1) y =x^4-5*x^3+x^2+5*x-6
(打印)实验三 MATLAB计算的可视化
实验三MATLAB计算的可视化一、实验目的1.掌握绘制二维图形的常用函数。
2.掌握绘图三维图形的常用函数。
3.掌握绘制图形的辅助操作。
二、实验内容1.二维曲线绘图基本指令演示。
本例运作后,再试验plot(t), plot(Y), plot(Y,t) ,以观察产生图形的不同。
t=(0:pi/50:2*pi)';k=0.4:0.1:1;Y=cos(t)*k;plot(t,Y)plot指令基本操作演示plot(t)图形:plot(Y)图形:plot(Y ,t)图形:2.⎥⎦⎤⎢⎣⎡++21sin 35.0x x cosx ,在x=0~2π区间取101点,绘制函数的曲线。
实验程序如下:实验图形:3.已知y1=x2,y2=cos(2x),y3=y1 y2,完成下列操作:(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。
实验程序:实验图形:(2)以子图形式绘制三条曲线。
实验图形:(3)分别用条形图、阶梯图、杆图和填充图绘制三条曲线。
实验程序:实验图形:在条形图代码的基础上修改得到以下图形:梯形图杆图填充图4.已知 y=⎪⎪⎩⎪⎪⎨⎧>++≤+0,1ln(210,22x x x x e x π 在-5≤x ≤5区间绘制函数曲线 实验程序:实验图形:总结:本次实验使用了plot(t), plot(Y), plot(Y,t) 等绘图函数,还通过修改绘图参数,改变了图形的形状、颜色。
通过修改参数:bar 、hist 、stem 、filld 等来改变绘图种类。
MATLAB(实验三)
实验三1.利用 rand 函数编写一个新的函数 rand2,该函数能够产-之间的随机数,其中 n 为任意正数。
该函数以 rand 生[],n n函数为子函数。
解:function x=rand2(a,b,n)x=round(rand(a,b)*2*n-n);2.依据第五章创建的结构体,使用该结构体对一个班级的学生成绩进行管理,如计算总分、平均分、排列名次等。
解:student=struct('name',{'Hunter','Allen','Henry'},'number',{'1801','1803','1827'},'score',{[65 89 59],[48 63 75],[74 55 88]})student(1)Hunter_sum=sum(student(1).score)Hunter_mean=mean(student(1).score)student(2)Allen_sum=sum(student(2).score)Allen_mean=mean(student(2).score)student(3)Henry_sum=sum(student(3).score)Henry_mean=mean(student(3).score)score_sum=[ Hunter_sum,Allen_sum,Henry_sum];sort(score_sum,'descend')3.编写程序判断输入的年份是否为闰年并计算这一天是一年当中的第几天(包括当天)。
其中要求把判断闰年和计算天数的程序分别编写为两个函数文件leapyear.m和countday.m,并在主程序中输入要计算的年、月、日,实现对这两个函数的调用,输出信息说明该年是否是闰年和该天是一年的第几天。
MATLAB实验3
实验三函数式M文件和MA TLAB绘图一、实验目的:1、掌握基本的绘图命令2、掌握各种图形注释方法3、掌握三维图形的绘制方法4、了解一些特殊图形的绘制5、了解图形的高级控制技巧二、相关知识1基本的绘图命令1)、常用绘图命令常用的统计图函数:在MA TLAB 7中,使用plot函数进行二维曲线图的绘制>> x=0:0.1:10;>> y1=sin(x);>> y2=cos(x-2.5);>> y3=sqrt(x);>> plot(x,y1,x,y2,x,y3)3)、极坐标图形的绘制MA TLAB提供了polar(x1,x2,s)函数来在极坐标下绘制图形:(参数1角度,参数2极半径,参数3颜色和线性)>> x= 0:0.01:10;>> y1=sin(x);>> y2 = cos(x-2.5);>> polar(y1,y2,'-r+')4)、多个图形的绘制方法subplot函数可以实现多个图形的绘制:>>x = 0:.1:20;>>subplot(2,2,1)>>plot(x,sin(x));>>subplot(2,2,2);>>plot(x,cos(x))5)、曲线的色彩、线型和数据点型基本的绘图命令都支持使用字符串来给不同的曲线定义不同的线型,颜色和数据点型。
plot(x,sin(x),'-rd')图形注释对图形进行注释的方式A 图形注释“工具栏。
B 图形调色板中的注释工具C insert 菜单中的“注释”命令D 直接使用注释命令Annotation 函数Xlabel ,ylabel ,zlabel 函数 Title 函数 Colorbar 函数 Legend 函数实验内容: 一、 基础练习1、跟我练输入x,y 的值,并将它们的值互换后输出 x=input('Input x please:\n');y=input('Input y please:\n'); echo on z=x; x=y; y=z; disp(x); disp(y);echo off2、练习请求键盘输入命令keyboard ,处理完毕后,键入return ,程序将继续运行 求一元二次方程ax2 +bx+c=0的根。
Matlab实验三答案
Matlab实验三答案实验三 MATLAB语⾔的程序设计⼀、实验⽬的:1、熟悉MATLAB程序编辑与设计环境2、掌握各种编程语句语法规则及程序设计⽅法3、函数⽂件的编写和设计4、了解和熟悉跨空间变量传递和赋值⼆、实验基本知识:1、程序流程控制语句for循环结构语法:for i=初值:增量:终值语句1……语句nend说明:1.i=初值:终值,则增量为1。
2.初值、增量、终值可正可负,可以是整数,也可以是⼩数,只须符合数学逻辑。
while 循环结构语法:while 逻辑表达式循环体语句end说明:1、whiIe结构依据逻辑表达式的值判断是否执⾏循环体语勾。
若表达式的值为真,执⾏循环体语句⼀次、在反复执⾏时,每次都要进⾏判断。
若表达式的值为假,则程序执⾏end之后的语句。
2、为了避免因逻辑上的失误,⽽陷⼊死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执⾏。
(执⾏循环体的次数不确定;每⼀次执⾏循环体后,⼀定会改变while 后⾯所跟关系式的值。
)3、while循环也可以嵌套、其结构如下:while逻辑表达式1循环体语句1while逻辑表达式2循环体语句2end循环体语句3endelse if 表达式2(可选)语句2else(可选)语句3endend说明:1.if结构是⼀个条件分⽀语句,若满⾜表达式的条件,则往下执⾏;若不满⾜,则跳出if结构。
2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。
3.注意:每⼀个if都对应⼀个end,即有⼏个if,记就应有⼏个end。
switch-case结构语法:switch表达式case常量表达式1语句组1case常量表达式2语句组2……otherwise语句组nend说明:1.switch后⾯的表达式可以是任何类型,如数字、字符串等。
2.当表达式的值与case后⾯常量表达式的值相等时,就执⾏这个case后⾯的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执⾏otherwise后的执⾏语句。
matlab实验三报告
实验三MATLAB数值运算实验者:祝松年级:机设092 学号:09405701002一、实验目的掌握 MATLAB 的数值运算及其运算中所用到的函数,掌握结构数组和细胞数组的操作。
二、实验内容:(1)多项式运算。
(2)多项式插值和拟合。
(3)数值微积分。
(4)结构数组和细胞数组。
三、实验步骤:1. 多项式运算(1) 多项式表示。
在 MATLAB 中,多项式表示成向量的形式。
如:9s在 MATLAB 中表示为+s34^+>>S=[ 1 3 -5 0 9](2) 多项式的加减法相当于向量的加减法,但须注意阶次要相同。
如不同,低阶的要补 0 。
如多项式 2 s 2 + 3 s + 9 与多项式 s 4 + 3 s 3 − 5 s 2 + 4 s + 7 相加。
>>S1=[0 0 2 3 11 ]>>S2=[1 3 -5 4 7 ]>>S3=S1+S2(3) 多项式的乘、除法分别用函数 conv 和 deconv 实现>>S1=[ 2 3 11 ]>>S2=[1 3 -5 4 7 ] >>S3=conv(S1,S2)>>S4=deconv(S3,S1)(4) 多项式求根用函数 roots>> S1=[ 2 4 2 ]>> roots(S1)(5) 多项式求值用函数 polyval>>S1=[ 2 4 1 -3 ]>>polyval(S1,3) % 计算 x = 3 时多项式的值>>x = 1:10>>y=ployval(S1,x) % 计算 x 向量对应的值得到 y 向量练习:求(s^2+1)(s+3)(s+1)/s^3+2s+1的“商”及“余”多项式。
2、结构数组与细胞数组(1) 结构数组的创建。
>> student.number='20050731001';>> ='Jack';>> student(2).number='20050731002';>>student(2).name ='Lucy';或者用 struct 函数创建。
MATLAB实验报告3
MATLAB实验报告3MATLAB实验报告3一、实验目的1.掌握MATLAB程序的调试方法;2.掌握MATLAB中的矩阵操作;3.熟悉MATLAB中处理图像的基本操作。
二、实验内容1.用MATLAB调试程序;2.用MATLAB进行矩阵运算;3.用MATLAB处理图像。
三、实验原理及步骤1.MATLAB程序的调试方法在MATLAB中调试程序可以采用设置断点、逐行运行、单步调试等方法。
设置断点可以在程序中的其中一行上点击左键,会出现一个红色的圆点表示断点已设置。
逐行运行可以通过点击Editor界面上的运行按钮实现。
单步调试可以通过点击断点所在行的左侧按钮实现。
2.矩阵运算在MATLAB中,对于矩阵的运算可以使用一些基本的函数,如矩阵加法、减法、乘法等。
矩阵加法可以使用"+"操作符实现,减法可以使用"-"操作符实现,乘法可以使用"*"操作符实现。
另外,MATLAB还提供了一些更复杂的矩阵运算函数,如矩阵的转置、逆等。
3.图像处理在MATLAB中,可以使用imread函数加载图像文件,使用imshow函数显示图像,使用imwrite函数保存图像。
另外,还可以使用一些图像处理函数对图像进行处理,如灰度化、二值化、平滑滤波等。
四、实验步骤1.调试程序首先,在MATLAB的Editor界面中打开要调试的程序文件。
然后,在程序的其中一行上点击左键,即设置了一个断点。
最后,点击运行按钮,程序会在断点处停下,然后可以通过单步调试和逐行运行来逐步查看程序的执行过程和变量的取值。
2.矩阵运算首先,定义两个矩阵A和B,并赋值。
然后,使用"+"操作符对两个矩阵进行相加,得到矩阵C。
最后,使用disp函数显示矩阵C的值。
3.图像处理首先,使用imread函数加载一张图像。
然后,使用imshow函数显示加载的图像。
接着,使用rgb2gray函数将彩色图像转换为灰度图像。
matlab实验三
3、方阵的行列式 求方阵的行列式的函数为det,其调用格式为det(A)
4、矩阵的特征值分解
MATLAB中,求方阵的特征值和特征向量的函数为eig,调 用格式如下: e=eig(A) 求方阵A的特征值组成的列向量e。
A) 求矩阵A的逆。要求矩阵A是方阵
且是非奇异的,如果A是病态的或接近奇异
1、矩阵的加(+)减(-)运算:
A±B
矩阵A和矩阵B的和与差,即矩阵相应位置
的元素相加、减。
进行加减运算的矩阵,要求维数相同,即行数
和列数分别相等,如果A与B大小不同,MATLAB将自
动给出错误信息。 A和B其中之一可以是标量,表示矩阵中的每个 元素分别与标量相加减,结果为矩阵。
9
矩阵的算术运算
18
线性方程组的求解
线性方程组 AX=b 的求解是用矩阵除来完成的.
当 m=n 且A可逆时, 给出唯一解,此时我们可用
A\b来求解;当XA=b 时,用A/b来求解 我们也可以利用命令rref来求解任意的线性方程组.
矩阵函数
1、矩阵的共轭
MATLAB中求矩阵的共轭矩阵的函数是conj,其调用
格式为:
(3)当A为标量,B为矩阵时,要求B为方阵。
A1 1 A B V * *V A n
其中V为方阵A的特征向量矩阵,
1 D n
为方阵A的特征值对角矩阵。
(4)A和B都是矩阵时,无定义。
16
5、矩阵的点幂运算:.^
实验三 矩阵运算与线性方程组求解
MATLAB的所有数值功能都是以(复)矩阵为基本 单元进行的,向量和标量都作为特殊的矩阵来处
Matlab实验报告(三)MATLAB绘图
Matlab实验报告(三)MATLAB绘图实验⽬的1.掌握MATLAB的基本绘图命令。
2.掌握运⽤MATLAB绘制⼀维、⼆维、三维图形的⽅法。
3.给图形加以修饰。
⼀、预备知识1.基本绘图命令plotplot绘图命令⼀共有三种形式:⑴plot(y)是plot命令中最为简单的形式,当y为向量时,以y的元素为纵坐标,元素相应的序列号为横坐标,绘制出连线;若y为实矩阵,则按照列绘出每列元素和其序列号的对应关系,曲线数等于矩阵的列数;当y为复矩阵时,则按列以每列元素的实部为横坐标,以虚部为纵坐标,绘出曲线,曲线数等于列数。
⑵ plot(x,y,[linspec])其中linspec是可选的,⽤它来说明线型。
当x和y为同维向量时,以x为横坐标,y为纵坐标绘制曲线;当x是向量,y是每⾏元素数⽬和x维数相同的矩阵时,将绘出以x为横坐标,以y中每⾏元素为纵坐标的多条曲线,曲线数等于矩阵⾏数;当x为矩阵,y为相应向量时,使⽤该命令也能绘出相应图形。
⑶plot(x1,y1,x2,y2,x3,y3……)能够绘制多条曲线,每条曲线分别以x和y为横纵坐标,各条曲线互不影响。
线型和颜⾊MATLAB可以对线型和颜⾊进⾏设定,线型和颜⾊种类如下:线:—实线:点线—.虚点线——折线点:.圆点 +加号 *星号 x x型 o 空⼼⼩圆颜⾊:y 黄 r 红 g 绿 b 蓝 w ⽩ k ⿊ m 紫 c 青特殊的⼆维图形函数表5 特殊2维绘图函数[1] 直⽅图在实际中,常会遇到离散数据,当需要⽐较数据、分析数据在总量中的⽐例时,直⽅图就是⼀种理想的选择,但要注意该⽅法适⽤于数据较少的情况。
直⽅图的绘图函数有以下两种基本形式。
·bar(x,y) 绘制m*n 矩阵的直⽅图。
其中y 为m*n 矩阵或向量,x 必须单向递增。
·bar(y) 绘制y 向量的直⽅图,x 向量默认为x=1:m close all; %关闭所有的图形视窗。
MATLAB实验三(1)程序设计
实验三(1)、MA TLAB程序设计一、实验目的1、掌握建立和执行M文件的方法2、掌握利用if语句和switch语句实现选择结构的方法二、实验内容及步骤1、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~89分为B,70分~79为C,60分~69分为D,60分以下为E。
要求:1)分别用if语句和switch语句实现2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”)switch语句clear all;mark=input('请输入分数');switch markcase num2cell(90:0.5:100)result='A';case num2cell(80:0.5:89.5)result='B';case num2cell(70:0.5:79.5)result='C';case num2cell(60:0.5:69.5)result='D';case num2cell(0:0.5:59.5)result='E';otherwiseresult='输入成绩不合理';endresultif语句clear all;a=input('请输入分数');if rem(a,0.5)result='输入有误!';elseif a<=100&&a>=90result='A';elseif a<90&&a>=80result='B';elseif a<80&&a>=70result='C';elseif a<70&&a>=60result='D';elseif a<60&&a>=0result='E';elseresult='输入有误!';endresult2、设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。
matlab 实验三 matlab程序设计与优化
matlab 实验三 matlab程序设计与优化Matlab是一种高级的计算机编程语言,广泛应用于科学、工程、金融和其他领域。
在Matlab实验三中,我们将学习Matlab程序设计与优化。
本文将介绍Matlab实验三的内容和要求,并提供一些有用的技巧和建议,帮助读者更好地完成实验。
实验三的主要内容包括:1. Matlab程序设计基础2. Matlab程序优化技巧3. Matlab代码调试方法4. Matlab性能分析工具5. 实例分析与练习题下面我们将逐个介绍这些内容。
1. Matlab程序设计基础在本节中,我们将学习如何使用Matlab编写简单的程序。
以下是一些重要的概念和技巧:1)变量和数据类型:在Matlab中,变量可以存储不同类型的数据,如数字、字符串、逻辑值等。
常见的数据类型包括double、char、logical等。
2)运算符:Matlab支持各种数学运算符,包括加减乘除、幂运算等。
此外,还有逻辑运算符(如and、or)和比较运算符(如==、~=)。
3)控制结构:控制结构可以控制程序执行流程。
常见的控制结构包括if语句、for循环和while循环。
4)函数:函数是一种可重复使用的代码块,可以接受输入参数并返回输出结果。
Matlab中有很多内置函数,也可以编写自己的函数。
2. Matlab程序优化技巧在本节中,我们将学习如何优化Matlab程序以提高其性能。
以下是一些重要的技巧:1)向量化:向量化是一种将循环操作转换为矩阵操作的技术。
这样可以减少程序执行时间,并且使代码更简洁。
2)预分配数组:在编写Matlab程序时,应尽可能避免动态数组分配。
相反,应该预先分配所需大小的数组。
3)使用内置函数:Matlab中有许多内置函数,它们通常比用户自定义函数更快。
因此,在编写程序时应尽可能使用内置函数。
4)避免不必要的计算:在编写程序时,应尽可能避免不必要的计算。
例如,在循环中进行重复计算或计算已知结果等。
Matlab数学实验报告三
数学软件课程设计题目插值方法与数据拟合班级数学081姓名曹曼伦实验目的:用Matlab语言实现Lagrange插值、Newton基本插值算法,会用Matlab中关于数值微分的函数。
用Matlab语言实现最佳平方逼近及最小二乘算法,会用Matlab中的polyfit、isqnonlin函数进行数据拟和。
实验内容:(1)Lagrange插值:function f = Language(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量: x%已知数据点的y坐标向量: y%插值点的x坐标: x0%求得的拉格朗日插值多项式或在x0处的插值: fx=[0.0 0.4 0.8 1.2 1.6];%input x data(可替换为自己的数据)y=[0 0.428392 0.742101 0.910314 0.970348];%input y data(可替换为自己的数据)x0=[0.3 0.5];%input x0 data(可替换为自己的数据)syms t l;if(length(x) == length(y))n = length(x);elsedisp('x和y的维数不相等!');return; %检错endp=sym(0);for (i=1:n)l=sym(y(i));for(k=1:i-1)l=l*(t-x(k))/(x(i)-x(k));end;for(k=i+1:n)l=l*(t-x(k))/(x(i)-x(k));end;p=p+l;endsimplify(p);%简化多项式f = subs (p,'t',x0); %计算插值点的函数值f = vpa(f,6); %将插值多项式的值化成6位精度的小数end(2)Newton基本插值算法function varargout=newtonliu(varargin)clear,clcx=[0.40 0.55 0.65 0.80 0.90 1.05];fx=[0.41075 0.57815 0.69675 0.88811 1.02652 1.25382];newtonchzh(x,fx);function newtonchzh(x,fx)%由此函数可得差分表n=length(x);fprintf('*****************差分表*****************************\n'); FF=ones(n,n);FF(:,1)=fx';for i=2:nfor j=i:nFF(j,i)=(FF(j,i-1)-FF(j-1,i-1))/(x(j)-x(j-i+1));endendfor i=1:nfprintf('%4.2f',x(i));for j=1:ifprintf('%10.5f',FF(i,j));endfprintf('\n');end结果*****************差分表*****************************0.40 0.410750.55 0.57815 1.116000.65 0.69675 1.18600 0.280000.80 0.88811 1.27573 0.35893 0.197330.90 1.02652 1.38410 0.43347 0.21295 0.031241.05 1.25382 1.51533 0.52493 0.22867 0.03143 0.00029(3)数值微分函数二.数据拟合(1)最佳平方逼近及最小二乘算法function varargout=Gaussnewton(varargin)clear;clct=[0.2 1 2 3 5 7 11 16];y=[5.05 8.88 11.63 12.93 14.15 14.73 15.30 15.60];x0=[11,-1,4]';v0=40;KN=100;Lep=1e-5;KL=0;fprintf('x(%2d)=[%9.7f,%8.7f,%8.7f]\n',KL,x0(1),x0(2),x0(3)); while(norm(fj(t,x0)'*fr(t,y,x0))>Lep)d=(fj(t,x0)'*fj(t,x0)+v0*eye(3))\(-fj(t,x0)'*fr(t,y,x0));xk=x0;x0=x0+d;sL=(fj(t,xk)'*fr(t,y,xk))'*d+0.5*d'*fj(t,x0)'*fj(t,xk)*d;rk=(ff(t,y,x0)-ff(t,y,xk))/sL;if rk<0.25v0=4*v0;elseif rk>0.75v0=v0/2;endKL=KL+1;fprintf('x(%2d)=[%9.7f,%8.7f,%8.7f]\n',KL,x0(1),x0(2),x0(3));if KL>KNbreakendendfunction R=fr(t,y,x)R=x(1)*exp(x(2)./t)+x(3)-y;R=R';function G=fj(t,x)n=length(t);G=zeros(n,3);for i=1:nG(i,1)=exp(x(2)/t(i));G(i,2)=x(1)*exp(x(2)/t(i))/t(i);G(i,3)=1;endfunction F=ff(t,y,x)R=fr(t,y,x);F=0.5*R'*R;x( 0)=[11.0000000,-1.0000000,4.0000000]x( 1)=[11.0866956,-0.8433719,4.1220152]x( 2)=[11.1813520,-0.7960477,4.2442432]x( 3)=[11.2904746,-0.8391795,4.3875974]x( 4)=[11.4015888,-0.9175589,4.5547072]x( 5)=[11.4743906,-0.9922929,4.7122732]x( 6)=[11.4794657,-1.0397861,4.8309296]x( 7)=[11.4339382,-1.0609857,4.9121252]x( 8)=[11.3832407,-1.0690935,4.9640406]x( 9)=[11.3554605,-1.0720668,4.9889167]x(10)=[11.3471610,-1.0728680,4.9961421]x(11)=[11.3458361,-1.0729926,4.9972891]x(12)=[11.3457261,-1.0730029,4.9973842](2)运用polyfit、 isqnonlin函数进行数据拟合运用polyfit函数进行数据拟合x=[1,2,3,4,5,6,7,8,9,10,11,12]y=[ 96.31, 135.44, 79.5, 56.54, 256.21, 350.68, 105.62, 185.03, 493.08, 1031.17, 860.06, 746.78] z=polyfit(x,y,4)运用isqnonlin函数进行数据拟合function f2=f01(x,Data);Data=[4358 2.42207;4861 2.40374;5461 2.40126;5893 2.39352;6563 2.37776;6678 2.37684];r=Data(:,1);n=Data(:,2);z2=x(1)+x(2)./[r.^2-x(3)]-x(4)./[x(5)-r.^2];f2=z2-n.^2;>> Data=[4358 2.42207;4861 2.40374;5461 2.40126;5893 2.39352;6563 2.37776;6678 2.37684]; >> r=Data(:,1);>> n=Data(:,2);x0=[1 0 1 1 1]';x=lsqnonlin('f01',x0)Optimization terminated successfully:First-order optimality less than OPTIONS.TolFun, and no negative/zero curvature detectedx =5.74046.22611.00007.22611.0000实验结果:>>(1)Lagrange插值:ans =[ .329345, .519939](2)Newton基本插值算法*****************差分表***************************** 0.40 0.410750.55 0.57815 1.116000.65 0.69675 1.18600 0.280000.80 0.88811 1.27573 0.35893 0.197330.90 1.02652 1.38410 0.43347 0.21295 0.031241.05 1.25382 1.51533 0.52493 0.22867 0.03143 0.00029(3)数值微分函数二.数据拟合(1)最佳平方逼近及最小二乘算法x( 0)=[11.0000000,-1.0000000,4.0000000]x( 1)=[11.0866956,-0.8433719,4.1220152]x( 2)=[11.1813520,-0.7960477,4.2442432]x( 3)=[11.2904746,-0.8391795,4.3875974]x( 4)=[11.4015888,-0.9175589,4.5547072]x( 5)=[11.4743906,-0.9922929,4.7122732]x( 6)=[11.4794657,-1.0397861,4.8309296]x( 7)=[11.4339382,-1.0609857,4.9121252]x( 8)=[11.3832407,-1.0690935,4.9640406]x( 9)=[11.3554605,-1.0720668,4.9889167]x(10)=[11.3471610,-1.0728680,4.9961421]x(11)=[11.3458361,-1.0729926,4.9972891]x(12)=[11.3457261,-1.0730029,4.9973842](2)运用polyfit、isqnonlin函数进行数据拟合运用polyfit函数进行数据拟合运用isqnonlin函数进行数据拟合x =5.74046.22611.00007.22611.0000。
实验三MATLAB的程序设计
end
ifk==0
Y=1;
elseifk==1&&n==1
Y=1;
elseifk<=n
Y=(n/k)*c(k-1,n-1);
end
程序测试:
>> c(0,0)
ans =
1
>> c(0,1)
ans =
1
>> c(3,4)
ans =
4
7,计算以下和式,并估计其求和公式以及验证:
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k;
end
测试:
>> s(3)
ans =
6
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^2;
end
测试:
>> s(3)
ans =
14
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^3;
end
测试:
>> s(2)
4
>> Joseph0(7,4)
2
11,求出 之间的所有素数;
M函数文件:
functionout = nprimes(N)
A= [1:N];
A(1)=0;
i=2;
whilei<= floor(sqrt(N));
forj= 2:fix(N/i)
A(i*j) = 0;
end;
i = A(find(A>i,1));
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
效果图:
2. 当k = 1,2,3时,在同一幅图用同时画出函数sin()y kx 的图形。
MATLAB 代码:
x = 0:pi/100:2*pi; y1 = sin(x); y2 = sin(2*x); y3 = sin(3*x); plot(x,y1,x,y2,x,y3) axis([0 2*pi -1 1])
legend('y = sin(x)','y = sin(2x)','y = sin(3x)')
注:legend 的作用是对图中的不同曲线做标注
效果图:
以上画图的效果也可以用hold on实现:x = 0:pi/100:2*pi;
y1 = sin(x);
y2 = sin(2*x);
y3 = sin(3*x);
plot(x,y1);
hold on;
plot(x,y2);
plot(x,y3);
hold off
subplot(2,2,4); plot(x,y)
title('y = exp(x)*sin(4x)')
注:title 的作用是给图形写上标题 效果图:
4. 作隐函数3
3
30x y xy +-=(笛卡尔儿叶形线)的图形 MATLAB 代码:
ezplot('x^3+y^3-3*x*y',[-2 2 -2 2])
axis equal
注: axis equal 的作用是把纵横坐标的刻度比例一致 效果图:
5. 在极坐标系下画出心形线2(1cos )r θ=+ MATLAB 代码:
theta = 0:pi/100:2*pi; r = 2*(1+cos(theta)); polar(theta,r,'r')
注:参数’r’是表示用红色作图,参数与颜色之间的关系如下表所示:b 蓝色
g 绿色
r 红色
c 青绿色
m 洋红色
y 黄色
k 黑色
效果图:
5. 画出空间螺旋线cos(),sin(),x t y t z t ===的图形
MATLAB 代码:
t = 0:pi/100:10*pi;
x = cos(t);
y = sin(t);
z = t;
plot3(x,y,z)
title('x = cos(t),y = sin(t) z = t')
效果图:
7. 画出MATLAB测试函数peaks的图形
MATLAB代码:
[X,Y,Z] = peaks;
surf(X,Y,Z)
shading interp
colormap(cool)
注:shading可使用的参数及含义如下:
faceted 网络修饰,这是缺省的方式
flat 去掉黑色线条,根据小方格的值确定颜色
interp 颜色整体改变,根据小方块四角的值差补过度点的值确定颜色
colormap为色图设定函数,其参数及含义如下:hsv ——饱和值色图
gray ——线性灰度色图
hot ——暖色色图
cool ——冷色色图
bone ——兰色调灰色图
copper ——铜色色图
pink ——粉红色图
prism ——光谱色图
jet ——饱和值色图II
flag ——红、白、蓝交替色图
六、课堂练习
1. 在同一坐标系中画出函数
1sin(2*3)
y x
=+,
2sin(32)
y x
=+的图形,且对于不以同的曲线使用不同的线型;
>> x=0:pi/100:2*pi;
y1=sin(2*x+3);
y2=sin(3*x+2);
plot(x,y1,'r-',x,y2,'g+')
legend('y1=sin(2*x+3)','y2=sin(3*x+2)')
>>
2. 当k 分别取1, 2, 3, 4的时候,在同一个窗口的四个子图中分别画出函数*sin(*)y t k t ,
每个子图加上适当的标题;
>> t = 0:pi/100:2*pi;
% 画第一幅子图
y = t.*sin(1*t);
subplot(2,2,1);
3. 画出三个两两相切的圆(假设这个三个圆的方程分别是:22221,(3)4x y x y +=-+=,22(4)9x y +-=);
>> ezplot('x^2+y^2=1',[-7 7 -7 7]);
hold on
ezplot('(x-3)^2+y^2=4',[-7 7 -7 7]);
hold on
ezplot('x^2+(y-4)^2=9',[-7 7 -7 7]);
4. 在极坐标系下画出三叶形曲线3*sin(3*)r θ=,并尝试不同的线形和颜色; theta = 0:pi/100:2*pi;
>> r=3*sin(3*theta);
>> polar(theta,r,'r')
theta = 0:pi/100:2*pi; r=3*sin(3*theta); polar(theta,r,'g+')
5. 画出星形线33
2*cos ,2*sin x t y t ==的图形; >> t = 0:pi/100:10*pi;
x=2*cos(t).^3;
>> y=2*sin(t).^3;
>> plot(x,y)
6. 画出双纽线22222
()3*()x y x y +=-的图形; ezplot('(x^2+y^2)^2=3*(x^2-y^2)',[-3 3 -3 3])
7. 画出三维曲线图:*cos ,*sin ,x t t y t t z t ===
>> t=0:pi/100:2*pi;
>> x=t.*cos(t);
>> y=t.*sin(t);
>> z=t;
>> plot3(x,y,z)
8. 分别用mesh和surf函数画出马鞍面
22
46
x y
z=-+9
x=-pi:pi/50:pi;
y=x;
[X,Y]=meshgrid(x,y); z=-X.^2./4+Y.^2./6.*9; mesh(X,Y,z)
>> x=-pi:pi/50:pi;
y=x;
[X,Y]=meshgrid(x,y); z=-X.^2./4+Y.^2./6.*9; >> surf(X,Y,z)
9. 画出球心在原点的球。
Phi=0:pi/50:pi;
Theta=0:pi/50:2*pi;
[theta,phi]=meshgrid(Phi,Theta); x=sin(theta).*sin(phi);
y=sin(theta).*cos(phi);
z=cos(theta); surf(x,y,z); axis equal;
七、实验报告要求
简述实验目的;写出实验内容中解答各个题目所需要的命令及实验结果;简写实验总结与心得体会。