数学实验3-matlab
MATLAB数学实验
实验三 圆周率的计算学号: 姓名:XX一、 实验目的1. 本实验涉及概率论、定积分、三角函数等有关知识,要求掌握计算π的三种方法及其原理。
2. 学习和掌握数学软件MATLAB 的使用方法。
二、 实验内容圆周率是一个极其驰名的数。
从有文字记载的历史开始,这个数就引起了外行人和学者们的兴趣。
作为一个非常重要的常数,圆周率最早是出于解决有关圆的计算问题。
仅凭这一点,求出它的尽量准确的近似值,就是一个极其迫切的问题了。
事实也是如此,几千年来作为数学家们的奋斗目标,古今中外一代又一代数学家为此献出了自己的智慧和劳动。
回顾历史,人们对π的认识过程,反映了数学和计算技术发展情形的一个侧面。
π的研究,在一定程度上反映这个地区或时代的数学水平。
德国数学家康托说:“历史上一个国家所算的圆周率的准确程度,可以作为衡量这个国家当时数学发展水平的指标。
”直到19世纪初,求圆周率的值还是数学中的头号难题。
1. 圆周率的计算方法古人计算圆周率,一般是用割圆法。
即用圆的内接或外切多边形来逼近圆的周长。
Archomedes 用正96边形得到35位精度;刘徽用正3072边形得到5位精度;Ludolph V an Ceulen 用正2^62边形得到了35位精度。
这种基于几何的算法计算量大,速度慢,吃力不讨好。
随着数学的发展,数学家们在进行数学研究时有意无意得发现了许多计算圆周率的公式。
下面挑选一些经典的常用公式加以介绍。
除了这些经典公式外,还有很多其他公式和由这些经典公式衍生出来的公式,就不一一列举了。
1) Machin 公式2391a r c t a n451a r c t a n 16-=π ()121...753arctan 121753--++-+-=--n x x x x x x n n 这个公式由英国天文学教授John Machin 于1706年发现。
他利用这个公式计算到100位的圆周率。
Machin 公式每计算一项可以得到1.4位的十进制精度。
matlab实验三
1 + 2i 2 1 2 A= , B = 3 4 i 1
例3-9
求:A‘,A.',B’,B.’
19
矩阵函数
1、矩阵的共轭 MATLAB中求矩阵的共轭矩阵的函数是conj,其调用 格式为: B=conj(A) 求矩阵A的共轭矩阵B,复数矩阵的共轭与 复数的共轭类似,复数矩阵的共轭矩阵与复数矩阵的 实部相同,虚部相反。
5
方法二: 通过M文件创建矩阵
当矩阵的规模较大时,直接输入法就力不从心, 出现差错也不容易修改。因此可以使用M文件生成 矩阵。 方法:建立一个M文件,其内容是生成矩阵的命令, 在MATLAB的命令窗口中输入此文件名,即将矩阵 调入工作空间(写入内存)。
6
方法二: 通过M文件创建矩阵
例3-2 用建立M文件的方式生成矩阵 (1) 建立M文件mydata.m内容如下
注意: 注意:在A.\B的结果中,“Inf”表示无穷大,在MATLAB中,被零 除或浮点溢出都不按错误处理,只是给出警告信息,同时用“Inf” 标记。
16
4、 矩阵的幂运算:^ A^B A的B次方。 (1)A和B都是标量时,表示标量A的B次幂。 (2)A为矩阵,B为标量时要求A必须是方阵。
(3)当A为标量,B为矩阵时,要求B为方阵。
10
矩阵的算术运算
例3-4
1 2 3 A = 2 3 4 , 3 4 5 3 2 4 B = 2 5 3 2 3 1
求A+B,A-2
例3-5 两个矩阵如下所示,维数不同,求两者相 减的差。
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 实验三—迭代 二、实验目的和要求a. 熟悉MATLAB 软件的用户环境,掌握其一般目的命令和MATLAB 数组操作与运算函数;b. 掌握MATLAB 软件的绘图命令,能够熟练应用循环和选择结构实现各种循环选择功能;c. 借助MATLAB 软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜想,发现进而证实其中的规律。
三、实验内容问题一:将方程535210x x x +-+=改写成各种等价的形式进行迭代 观察迭代是否收敛,并给出解释。
问题二:迭代以下函数,分析其收敛性。
4f(x)=x -a使用线性连接图、蛛网图或费根鲍姆图对参数a 进行讨论和观察,会得到什么结论? 问题一: (1)画图 x1=-6:0.01:6; x2=-3:0.01:3; x3=-1:0.01:1;x4=-0.8:0.01:-0.75;y1=x1.^5 +5*x1.^3-2*x1+1; y2=x2.^5 +5*x2.^3-2*x2+1; y3=x3.^5 +5*x3.^3-2*x3+1; y4=x4.^5 +5*x4.^3-2*x4+1; subplot(2,2,1),plot(x1,y1) ,title('图 (1)') ,grid on, subplot(2,2,2),plot(x2,y2) ,title('图 (2)'),grid on, subplot(2,2,3),plot(x3,y3) ,title('图 (3)'),grid on, subplot(2,2,4),plot(x4,y4) ,title('图 (4)') ,grid on,-10-50510-1-0.500.514图 (1)-4-2024-400-200200400图 (2)-1-0.500.51-505图 (3)-0.8-0.78-0.76-0.74-0.72图 (4)有图可知x 的初值在(-0.78,0.76)之间 (2)构造迭代函数()x f x =53512x x x ++= 1()x f x =22215x x x x -+-= 2()x f x =24521x x x x -+-= 3()x f x =(3)迭代 设定初值0.78x =-函数1()n n x f x -=用MATLAB 编程:x(1)=-0.77;y(1)=-0.77;z(1)=-0.77; for i=2:20x(i)=(x(i-1)^5+5*x(i-1)^3+1)/2;y(i)=(-y(i-1)^5+2*y(i-1)-1)/(5*y(i-1)^2); z(i)=(-5*z(i-1)^3+2*z(i-1)-1)/(z(i-1)^4); endn=1:20subplot(221), plot(n,x), title('f(1)'); subplot(222), plot(n,y), title('f(2)'); subplot(223), plot(n,z), title('f(3)'); 结果显示:5101520-6-4-2249f(1)510152000.511.562f(2)5101520-4-2024f(3)如图显示,显然不收敛。
Matlab数学实验报告3
a= 311.9546 0.2798
z= Columns 1 through 8
- 6 -MATLAB 作业
3.9000 5.1385 6.7617 8.8828 11.6439 15.2202 19.8224 25.6956 Columns 9 through 16
表 3 美国人口统计数据 年(公元) 1790 1800 1810 1820 1830 1840 1850 人口(百万) 3.9 5.3 7.2 9.6 12.9 17.1 23.2 年(公元) 1860 1870 1880 1890 1900 1910 1920 人口(百万) 31.4 38.6 50.2 62.9 76.0 92.0 106.5 年(公元) 1930 1940 1950 1960 1970 1980 1990 人口(百万) 123.2 131.7 150.7 179.3 204.0 226.5 251.4 若用非线性回归模型
Optimization terminated: relative function value changing by less than OPTIONS.TolFun.
r=
0.0135
115823
z= 1.0e+005 * Columns 1 through 6 1.0165 1.0304 1.0444 1.0587 1.0731 1.0877 Columns 7 through 12 1.1026 1.1176 1.1328 1.1483 1.1639 1.1798 Columns 13 through 17 1.1958 1.2121 1.2287 1.2454 1.2624
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 中一元函数积分的计算
1、积分有定积分和不定积分,运用函数int 可以求得符号表达式的积分.
int(f) 求函数f 对默认自由变量x 的不定积分
int(f,t) 求函数f 对符号变量t 的不定积分
int(f,a,b) 求函数f 对默认自由变量x 从a 到b 的定积分
int(f,t,a,b) 求函数f 对符号变量t 从a 到b 的定积分
2、积分应用——求面积
解方程 [x,y]=solve(‘f1=0’,‘f2=0’)
作图:ezplot(f,[x1,x2],[y1,y2]); hold on 在同一坐标系作图
写出积分表达式进行积分
3、清除变量clear 清屏clc 清除图像 clf
班级 姓名 学号 成绩
1、 求下列函数的积分
(1) ln x xdx ⎰ (2)2cos x xdx ⎰
(3)20sin d 2x x π⎰ (4)1
01x x e dx e +⎰
2、 求抛物线2x y =与直线20x y --=所围图形面积.
要求:(1)解方程,求交点
(2)作图:在同一坐标系作出这两个函数的图形
(3)写出积分表达式 进行积分计算。
数学软件MATLAB实验报告 实验三
实验三:数学软件MATLAB的文件设计实验目的与要求:掌握MATABLE的M文件设计的相关知识,包括变量、表达式等基本元素和流程控制、函数等语法结构。
熟练掌握M文件的类型、结构、帮助创建和编程技巧等内容。
实验内容:1、用条件控制语句和循环控制语句编写一个M文件,解决如下问题:将数组X=(2,4,5,1,-3,6,0,-2,-19,-11,1,8,8,9,7)中介于-10与10之间的元素放入数组Y,其他的放入数组Z。
代码:x=[2 4 5 1 -3 6 0 -2 -19 -11 1 8 8 9 7];n=numel(x);y=[];z=[];l=0;k=0;for i=1:nif x(i)>=-10&&x(i)<=10l=l+1;y(l)=x(i);elsek=k+1;z(k)=x(i);endendy=yz=z2、进行下述命令help elfunhelp specfunhelp elmat了解各函数的名称。
3、理解下面函数的功能,调用此函数并写出结果。
function[avg,med]=example3-4-2(u)%主函数%本函数用内部函数计算均值和中值N=length(u);avg=mean(u,n);med=median(u,n);function a=mean(v,n%)子函数%计算均值A=sum(v)/n;Function m=median(v,n)%子函数%计算中值w=sort(v);%排序if rem(n,2)==1%奇数mw((n+1)/2);elsem=(w(n/2)+w(n/2+1));end4、通过下例,理解匿名函数的定义格式,并运行之。
a=1.3;b=0.2;c=30;y@(x)a*x.^+b*x+c;fplot(y,[-25 25])function example3-5-1a(surface)Switch surfacecase’sphere’spherecase’cylinder’cylinderendshading interp在命令窗口调用example-5-1b.m函数在命令窗口键入下面的命令行example-5-1b(’sphere’)将生成单位球面键入example-5-1b(‘cylinder’)将生成单位柱面。
MATELAB与数学实验第三次作业
《数学实验》报告实验名称 matlab作业 3 学院专业班级姓名学号2011年 10月一、【实验目的】学习编辑程序来绘制几何立体图等.二、【实验任务】(一)P79 习题5绘制圆锥螺线的图像并加各种标注,圆锥螺线的参数方程为x=tcos(π/6)ty=tsin(π/6)t, (0<=t<=20π)z=2t绘制由函数x^2/9+y^2/16+z^2/4=1形成的立体图,并通过改变观测点获得该图形在各个坐标平面上的投影。
画三维曲面z=5-x^2-y^2(-2<=x,y<=2)与平面z=3的交线.(二)P79 习题7用mesh与surf命令绘制三维曲面z=x^2+3y^2的图像,并使用不同的着色效果及光照效果。
(三)P79习题8绘制由函数x^2/9+y^2/16+z^2/4=1形成的立体图,并通过改变观测点获得该图形在各个坐标平面上的投影。
(四)P79习题9画三维曲面z=5-x^2-y^2(-2<=x,y<=2)与平面z=3的交线.【实验程序】(一)t=0:pi/50:20*pi;x=t.*cos((pi/6)*t);y=t.*sin((pi/6)*t);z=2*t;plot3(x,y,z)title('ÇúÏß4x^2+4y^2=z^2')xlabel('txÖá'),ylabel('tyÖá'),zlabel('tzÖá')(二)t=-5:0.1:5;[x,y]=meshgrid(t);z=x.^2+3*y^2;%meshÃüÁîsubplot(121);mesh(x,y,z);title('meshÃüÁî');shading flat;light('position',[0,0,10])%surfÃüÁîsubplot(1,2,2);surf(x,y,z);title('surfÃüÁî');shading faceted;light('position',[0,2,10])(三)a=3;b=4;c=2;[X,Y,Z]=ellipsoid(0,0,0,a,b,c,400);subplot(221),mesh(X,Y,Z)view(3)subplot(222),mesh(X,Y,Z)view(30,30)subplot(223),mesh(X,Y,Z)view(30,0)subplot(224),mesh(X,Y,Z)view(-120,30)axis equalaxis image(四)t=-2:0.1:2;[x,y]=meshgrid(t);z1=5-x.^2-y.^2;subplot(131)mesh(x,y,z1),title('z=5-x^2-y^2')z2=3*ones(size(x));subplot(132)mesh(x,y,z2),title('z=3')r0=abs(z1-z2)<=1;zz=r0.*z2;yy=r0.*y;xx=r0.*x;subplot(133),plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'x')三、【实验结果】(一)(二)(三)(四)【实验总结】学会使用关键字来绘制函数图象,包括加各种标注,画圆锥螺线,使用着色效果、光照效果,画椭球,并改变观测点获得不同坐标平面的投影,画曲面与平面的交线等。
实验三 MATLAB绘图(含实验报告)
实验三 MATLAB 绘图一、实验目的1.掌握二维图形的绘制。
2.掌握图形的标注3.了解三维曲线和曲面图形的绘制。
二、实验的设备及条件计算机一台(带有以上的软件环境)。
设计提示1.Matlab 允许在一个图形中画多条曲线:plot(x1,y1,x2,y2,……)指令绘制y 1 = f 1(x 1), y 2 = f 2 (x 2 )等多条曲线。
Matlab 自动给这些曲线以不同颜色。
标注可用text 函数。
2.绘图时可以考虑极坐标和直角坐标的转换。
3.三维曲线绘图函数为plot3,注意参考帮助中的示例。
三、实验内容1.生成1×10 维的随机数向量a ,分别用红、黄、蓝、绿色绘出其连线图、杆图、阶梯图和条形图,并分别标出标题“连线图”、“杆图”、“阶梯图”、“条形图”。
2、绘制函数曲线,要求写出程序代码。
(1) 在区间[0:2π]均匀的取50个点,构成向量t(2) 在同一窗口绘制曲线y1=sin(2*; y2=3cos(t+;要求y1曲线为红色点划线,标记点为圆圈;y2为蓝色虚线,标记点为星号。
(3) 分别在靠近相应的曲线处标注其函数表达式。
3.将图形窗口分成两个绘图区域,分别绘制出函数:⎩⎨⎧+-=+=1352221x x y x y 在[0,3]区间上的曲线,并利用axis 调整轴刻度纵坐标刻度,使1y 在[0,12]区间上,2y 在[-2,]区间上。
4.用mesh 或surf 函数,绘制下面方程所表示的三维空间曲面,x 和y 的取值范围设为[-3,3]。
101022y x z +-=思考题:1. 编写一个mcircle(r)函数,调用该函数时,根据给定的半径r ,以原点为圆心,画一个如图所示的红色空心圆。
(图例半径r=5);左图参考polar函数的用法,右图绘制圆形的参数方程为x=sin (t ),y=cos (t )。
其中,t 的区间为0~2*pi ,步长为。
2.(1)绘一个圆柱螺旋线(形似弹簧)图。
matlab数学实验.doc
matlab 数学实验《管理数学实验》实验报告班级姓名实验 1:MATLAB的数值运算【实验目的】(1)掌握 MATLAB 变量的使用(2)掌握 MATLAB 数组的创建,(3)掌握 MA TLAB 数组和矩阵的运算。
(4)熟悉 MATLAB 多项式的运用【实验原理】矩阵运算和数组运算在MA TLAB中属于两种不同类型的运算,数组的运算是从数组元素出发,针对每个元素进行运算,矩阵的运算是从矩阵的整体出发,依照线性代数的运算规则进行。
【实验步骤】(1)使用冒号生成法和定数线性采样法生成一维数组。
(2)使用 MA TLAB 提供的库函数 reshape,将一维数组转换为二维和三维数组。
(3)使用逐个元素输入法生成给定变量,并对变量进行指定的算术运算、关系运算、逻辑运算。
(4)使用 MA TLAB绘制指定函数的曲线图,将所有输入的指令保存为M 文件。
【实验内容】( 1)在 [0,2*pi] 上产生 50 个等距采样数据的一维数组,用两种不同的指令实现。
0:(2*pi-0)/(50-1):2*pi或linspace(0,2*pi,50)( 2)将一维数组A=1:18 ,转换为2×9 数组和 2× 3× 3 数组。
reshape(A,2,9)ans =Columns 1 through 713 5 24 6 789111012131415171618reshape(A,2,3,3) ans(:,:,1) =1 3 52 4 6 ans(:,:,2) =7 9 118 10 12 ans(:,:,3) =13 15 1714 16 18matlab 数学实验( 3)A=[0 2 3 4 ;1 3 5 0],B=[1 0 5 3;1 5 0 5] ,计算数组 A、 B 乘积,计算 A&B,A|B,~A,A==B,A>B 。
A.*Bans=0 0 15 121 15 0 0A&Bans =0 0 1 11 1 0 0A|Bans =1 1 1 11 1 1 1~Aans =1 0 0 00 0 0 1A==Bans =0 0 0 01 0 0 0A>=Bans =0 1 0 11 0 1 0t t ( 4)绘制 y= 0.5 e3 -t*t*sin(t),t=[0,pi] 并标注峰值和峰值时间,添加标题 y= 0.5 e3 -t*t*sint ,将所有输入的指令保存为M 文件。
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数学实验
Matlab数学实验1.Matlab 简介2. Matlab 运算3. Matlab 编程与绘图实验 1 一元函数的图形实验2 数列极限与函数极限实验3 导数的概念和计算实验4 Taylor 公式实验5 matlab自定义函数与导数应用实验6 积分计算实验7 空间曲线与曲面的绘制实验8 最小二乘法实验9 Fourier 级数MATLAB简介MATLAB名字是由MATrix和LABoratory两个词的前三个字母组合而成的。
它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。
被誉为“巨人肩上的工具”。
由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortran和C等那样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言。
在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来。
MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。
MATLAB自问世以来,就以数值计算著称。
MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使的MATLAB高度“向量化”。
经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。
由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。
美国许多大学的实验室都安装有MATLAB供学习和研究之用。
在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。
MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。
工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制、系统辨识、神经网络等。
Matlab数学实验报告
实验一 Matlab基本操作1.实验课程名称数学实验2.实验项目名称Matlab基本操作3.实验目的和要求了解Matlab的基本知识,熟悉其上机环境,掌握利用Matlab进行基本运算的方法。
4.实验内容和原理内容:三角形的面积的海伦公式为:area=)s-sa--)()(s(csb其中: s=(a+b+c)/2原理:将一般数学问题转化成对应的计算机模型并进行处理的能力。
了解Matlab的基本功能,会进行简单的操作。
5.主要仪器设备计算机与Windows 2000/XP系统;Matlab等软件。
6.操作方法与实验步骤步骤:(1)在M文件编辑窗口输入以下程序,并以文件名”area_helen.m”保存:a= input(‘a=‘) ; b= input(‘b=‘) ; c= input(‘c=‘) ;s= (a+b+c)/2;area=sqrt (s* (s-a) * (s-b) * (s-c))(2)在命令窗口输入文件名“area_helen”,按回车键,即可运行上面的程序,输入三边长,立即可得三角形面积(3)第二题在命令窗口输入b=6;a=3;c=a*b,d=c-2*b(4) 按回车键,即可运行上面的程序7.实验结果与分析<1> a=3; b=4; c=5;时,aera=6 当a为3,b为4,c为5时,s=6,aera=6<2> c= 18,d=6,a为3,b为6时,c=18,d=6实验二 Matlab的数值计算1.实验课程名称数学实验2.实验项目名称Matlab的数值计算3.实验目的和要求了解一些简单的矩阵、向量、数组和多项式的构造和运算方法实例,懂得编写简单的数值计算的Matlab程序。
熟悉一些Matlab的简单程序,会用Matlab的工具箱,懂得Matlab的安装和简单的使用。
4.实验内容和原理内容:从函数表:)1(),5.0(),2( ,0x 1x 021x 1x f(x) 32-⎪⎩⎪⎨⎧≤≤<>+=f f f x x求设)1(),2( ,1211)(2-⎩⎨⎧≤>+=f f x xx x x f 求设 原理:利用矩阵、向量、数组、和多项式的构造和运算方法,用常用的几种函数进行一般的数值问题求解。
matlab数学实验第三版
matlab数学实验第三版
《MATLAB数学实验第三版》是由作者C. Moler和D. J.
Little合著的一本关于MATLAB编程和数学实验的书籍。
本书旨在帮助读者利用MATLAB进行数学建模和实验,涵盖了MATLAB的基本概念、数值计算、符号计算、绘图、数据分析等内容。
在这本书中,读者将学习如何使用MATLAB进行矩阵操作、线性代数计算、微积分、常微分方程求解、曲线拟合、统计分析等数学实验。
此外,书中还介绍了MATLAB的编程技巧、脚本文件的编写、函数的创建与调用等内容,帮助读者更好地利用MATLAB解决数学问题。
除了数学实验方面的内容,本书还涵盖了工程、物理、生物等领域的实际案例,通过这些案例,读者可以学习如何将MATLAB应用于实际问题的求解和分析中。
总的来说,《MATLAB数学实验第三版》是一本全面介绍MATLAB 数学建模和实验的书籍,适合对MATLAB感兴趣的学生、工程师和科研人员阅读。
通过学习这本书,读者可以掌握MATLAB在数学建模和
实验方面的基本原理和应用技巧,从而更好地应用MATLAB解决实际问题。
MATLAB 数学实验 第三章
微积分符号计算 diff(f) — 对缺省变量求导数 diff(f,v) — 对指定变量 v 求导数 diff(f,v,n) —对指定变量 v 求n阶导数 对指定变量 阶导数 int(f) — 对f表达式的缺省变量求积分 表达式的缺省变量求积分 int(f,v) — 对f表达式的 变量求积分 表达式的v变量求积分 表达式的 int(f,v,a,b) — 对f表达式的 变量在 b] 表达式的v变量在 表达式的 变量在[a, 区间求定积分
绕X轴旋转的旋转曲面体积 轴旋转的旋转曲面体积 2π V = π ∫ [ f ( x )]2 dx 0 syms a b x f=exp(a*x)*sin(b*x); f1=subs(f,a,-0.2); f2=subs(f1,b,0.5); V=pi*int(f2*f2,x,0,2*pi) double(V) V =pi*(-125/116*exp(-4/5*pi)+125/116) ans = 3.1111
16/20
1 2 y2 例3.26 解微分方程 y ′ = 2 x +1
y ( 0) = 0
命令格式:dsolve('eq1',,'con1',,'x') y的一阶导数—— Dy, y的二阶导数—— D2y
y = dsolve('Dy=1/(1+x^2)-2*y^2','y(0) = 0','x') y= 2*x/(2*x^2+2) 符号解: 符号解: y(x)= x / (1 + x 2)
12/20
定积分数值计算命令 quad(f, a, b) t 例3.14 计算积分上限函数值 F (t ) = ∫
Matlab数学实验3 一元函数导数
例2. 已知函数 f (x) 1 ,求 f (1), f (2) ; >> syms x; x f=1/x; f1=diff(f,x)
ff=inline(f1);
ff(1) 运行结果:
/ / 注意,inline命令用来定义函数
ans =-1 >> ff(-2)
end
输出: ans =10*x^9+18*(x-10)^8
ans =90*x^8+144*(x-10)^7 ans =720*x^7+1008*(x-10)^6 ans =5040*x^6+6048*(x-10)^5 ans =30240*x^5+30240*(x-10)^4 ans =151200*x^4+120960*(x-10)^3 ans =604800*x^3+362880*(x-10)^2 ans =1814400*x^2+725760*x-7257600 ans =3628800*x+725760 ans =3628800 ans =0
运行结果: ans = -0.2500
例3.求函数 y xe x 的二阶导数,并求 y(2) 。
解:输入命令及运行结果如下所示:
syms x; f=diff(x*exp(x),x,2)
f=inline(diff(x*exp(x),x,2))
运行结果
f = Inline function:
f =2*exp(x) + x*exp(x) f(x) = 2.*exp(x)+x.*exp(x)
>>f1=inline(f) 运行结果: f1 =Inline function:
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)。
MATLAB程序: k=0; A=[0,0]; %导弹初始位置 B B=[0,100]; %飞机初始位置 v=1; dt=1; %离散时间改变量 d=100; %相距距离 while d>0.5 A plot(A(1),A(2),‟r‟); %画导弹位置 hold on plot(B(1),B(2),„b*‟); %画飞机位置 pause(0.2); k=k+1; B=B+[v*dt,0]; %飞机移动位置 e=B-A; %导弹指向飞机向量 d=norm(e); e0=e/d; %取向量方向(单位化) A=A+2.0*v*dt*e0; %导弹追击位置
直接输出: x disp([a,b]);
提示对话输入(input命令) x=input('请输入参数 x='); a=input('请输入矩阵 a='); s=input('Please input s=');
格式控制输出(fprintf命令) fprintf('x=%.0f, y=%.5f\n',pi,pi); fprintf('x=%5.0f, y=%10.5f\n',pi,pi);
数学实验
理学院数学学科 李换琴 hqlee@
MATLAB语言编程介绍
MATLAB中各种命令可以完成许多单一的任务,对 于某些较为复杂的问题,仅靠现有的命令或函数 来解决,往往是难以达到目的 。为此,要运用 MATLAB编程语言编制程序,形成M-文件。 程序是使计算机完成各项运算的命令集,运行一 个编制好的程序,计算机会从第一条命令行开始 ,一行接一行地执行相应的命令,直到终止。 程序编写调试完成后,需要存盘,形成永久性文 件,可以随时对它进行调用或修改。 文件名以字母开头,但不能用专用变量名,如 pi,ans,eps等。
function recursion(alpha,lambda,b,jd,L,limit) c=b+L*exp(i*(jd+alpha)); d=b+L*exp(i*(jd-alpha)); plot([c,b,d]) if(L>limit) jd=jd+alpha; L=L/lambda; recursion(alpha,lambda,c,jd,L,limit); jd=jd-2*alpha; recursion(alpha,lambda,d,jd,L,limit); jd=jd+alpha; L=L/lambda; end
例2:求阶乘:p=1×2 × 3 × … × n=n! n=input('请输入 n= '); p=1; for i=1:n p=p*i; fprintf(' i=%.0f, p=%.0f\n ',i,p); end aa2.m
例3:求e:e=1+1+1/2!+1/3!+…+1/n! n=input('请输入 n= '); p=1;e=1; for i=1:n p=p*i; p1=1/p; e=e+p1; fprintf(' i=%.0f, p=%.0f, e=%.8f \n ',i,p,e); end
aa3.m
例4
设A是一个3 5矩阵, 1 A(i, j) , 试编程 i j 写出矩阵A.
m=3; n=5; for i = 1:m for j = 1:n H(i,j) = 1/(i+j); end end H
例5 数列极限 MATLAB程序: hold on % 图形迭加 axis([0,100,2,3]); % 设置坐标轴 grid % 加坐标网格 for n=1:90 % 循环操作 an=(1+1/n)^n; % 计算数列值 plot(n,an,'r*'); % 画出坐标点 pause(0.05); % 暂停0.05秒 fprintf('n=%d an=%.4f\n',n,an); % 显示坐标位置 end
主程序: tree1(22.5,0.03)
function tree1(alpha,limit) a=0; L=1;lambda=1.5; alpha=alpha/180*pi; jd=pi/2; b=L*i; plot([a,b]) hold on recursion(alpha,lambda,b,jd,L,limit);
x=input(‘成绩=’) switch fix(x/10) case {10,9} grade='A' case 8 grade='B' case 7 grade='C' otherwise grade='D' end
Break 语句
Break语句的格式为: break; 用于立即跳出包含该 break语句的各种循 环语句while和for 在循环语句中使用的 break语句一般应和if 语句配合使用 例如: while 条件1 …….. if 条件2 break; end ……… end
1 n lim (1 ) 动态显示 n n
例6 导弹打击过程仿真
设 A(0,0) 为一导弹发射点,发现位于 B(0,100) 处 一架敌机沿水平方向逃离,随即发射一枚导弹 予以打击,现已知导弹时刻对准敌机,且速率 为飞机速率的两倍(设飞机速度为1)。 试编程模拟导弹打击敌机 B 的动态过程,并实时给出 飞机和导弹的位置坐标。 若要在敌机飞行距离不超 过60时(我方空域)将其 A 击落,导弹的速率应提高 到多少?
No
| b a | er ?
Yes
输出:迭代次数k,方程的近似根c.
二分法求根程序:
a=1;b=2; er=1.0e-8; f=inline('x.^2-2'); k=1; c=(a+b)/2; while abs(b-a)>er if abs(f(c))==0 fprintf('k=%.0f,r=%.8f\n',k,r); break; end
Return语句
Return语句终止当前命令的执行,并且返回 到调用函数或者等待键盘输入指令。
用M-文件定义函数
格式 function [y1,y2]=funname(x,y,a,n) 其中: function 为关键字; [y1,y2,…]为输出列表; funname为自定义的函数名; (x,y,a,n,…)为函数参数,用来传递相 关数值. 存盘时,要求用funname作为函数名.
else a c;
2) if b a er,stop, 输出根。 否则goto 1).
输入初值: f ( x ), a , b, 误差限er
c (a b) / 2
f (c ) 0 ?
No Yes
ac
No
f (a ) f (c ) 0 ?
Yes
bc
c (a b) / 2
例15 编写一个function 函数,调用该函数 ,可以将考试分数 值化为“A” ”B” “C” ”D”等级值.
function f=grad(x) switch fix(x/10) case {10,9} grade='A' case 8 grade='B' case 7 grade='C' otherwise grade='D' end
function [p,q]=fun1(a,b,n) p=(a+b).^n; q=(a-b).^n; fun1.m
例14编制程序,从键盘输入a,b,n,计算(a+b)^n,(ab)^n aa8.m a=input(„a=„);b=input(„b=„);n=input(„n=„); [p,q]=fun1(a,b,n); fprintf(„(a+b)^n=%.4f,(a-b)^n=%.4f\n‟,p,q)
M-文件中选择控制命令(if命令)
单项选择控制 格式: if (condition is true) commands; end 作用:若条件成立,则执行命令集 commands. 否则,不执行。
例9:求n个实数中最大的数M.
a=input('请输入数组 a[n]= '); [m,n]=size(a); M=a(1); for i=2:n if M<a(i) M=a(i); end end
fprintf(' M=%.5f\n ',M);
aa6.m
M-文件中选择控制命令(if命令)
多项选择控制 格式: if (condition is true) commands; elseif (condition is true) commands; else commands; end 作用:若条件成立,则执行命令集 commands. 否则,不执行。
例15:用二分法求函数x^2-2=0的正实根.
f ( x ) x 2 2, [a, b] [1,2], f (a ) f (b) 0
1)c (a b) / 2 :
if f (c ) 0(或 | f (c ) | r ), g c;
elseif f (c ) f (a ) 0 b c;
程序结构
程序一般包含: 数据输入 a=input('请输入数组 a[n]= '); [m,n]=size(a); M=a(1); for i=2:n if M<a(i) M=a(i); end end fprintf(' M=%.5f\n ',M);
数据处理
结果输出
M-文件中输入、输出命令
直接赋值输入: x=2; a=[1,2;3,4]; s= 'any string!';