课程所属类型及服务专业 本课程是理工科专业课程,适用专业:信科,数本,工程类专业 二、实验教学目的和要求 MATLAB是一种以数值计算和数据图示为主的计算机软件,并包含适应多 个学科的专业软件包,以及完善程序开发功能。本课程要求学生掌握 MATLAB 的数据类型、矩阵输入和操作方法、语法结构、函数的使用以及二维、三维绘图 功能,并能够熟练地将 MATLAB应用于学习中,解决相关课程中的复杂的数学 计算问题。上机操作是本课程重要的教学环节,学生只有通过上机实习,才能领 会 MATLAB中众多功能,才能达到熟练应用的程度。本课程将一半的课时用于 安排学生上机实习。 三、学时分配及实验项目表 本课程实验共安排30学时,其中16学时为必选实验,14学时为可选实验。 序实验项目 学时每组人实验类必选/可选 数 MATLAB基础知识 综合 必选 2|矩阵与数组 综合 3基本操作命令 综合 4|高级操作命令 综合 必选 5|绘图功能 综合 可选 6控制流语句 4 7文件 4 l1111111 综合 综合 可选 MATLAB应用 四、实验课考核 课内考查 五、实验指导(参考)书实验报告 《MA∏LAB程序设计语言》,楼顺天,闫华梁,西安电子科技大学出版社,1997 年 《科学计算与 MATLAB语言》,刘卫国,2000年4月 《 MATLAB命令大全》,姚东等,2000年6月。 六、实验项目信息 实验项目信息 实验室名称:计算科学、数学建模 实验项目名称: Matlab语言及 应用实验 实验课程| Matlab语言及应|课程代码 120415 实验类别 实验依据 实验学时 实验类型综合 实验专业 信科 每组人数 实验者
一、课程所属类型及服务专业 本课程是理工科专业课程,适用专业:信科,数本,工程类专业 二、实验教学目的和要求 MATLAB 是一种以数值计算和数据图示为主的计算机软件,并包含适应多 个学科的专业软件包,以及完善程序开发功能。 本课程要求学生掌握 MATLAB 的数据类型、矩阵输入和操作方法、语法结构、函数的使用以及二维、三维绘图 功能,并能够熟练地将 MATLAB 应用于学习中,解决相关课程中的复杂的数学 计算问题。上机操作是本课程重要的教学环节,学生只有通过上机实习,才能领 会 MATLAB 中众多功能,才能达到熟练应用的程度。本课程将一半的课时用于 安排学生上机实习。 三、学时分配及实验项目表 本课程实验共安排 30 学时,其中 16 学时为必选实验,14 学时为可选实验。 序 号 实验项目 学时 数 每组人 数 实验类 型 必选/可选 1 MATLAB 基础知识 3 1 综合 必选 2 矩阵与数组 3 1 综合 必选 3 基本操作命令 3 1 综合 必选 4 高级操作命令 3 1 综合 必选 5 绘图功能 4 1 综合 可选 6 控制流语句 4 1 综合 必选 7 文件 4 1 综合 可选 8 MATLAB 应用 6 1 综合 可选 四、实验课考核 课内考查 五、实验指导(参考)书实验报告 《MATLAB 程序设计语言》,楼顺天,闫华梁,西安电子科技大学出版社,1997 年 《科学计算与 MATLAB 语言》, 刘卫国,2000 年 4 月 《MATLAB 命令大全》,姚东等,2000 年 6 月。 六、实验项目信息 实验项目信息 实验室名称:计算科学、数学建模 实验项目名称:Matlab 语言及 应用实验 实验课程 Matlab 语言及应 用 课程代码 120415 实验类别 专业 实验依据 实验学时 30 实验类型 综合 实验专业 信科 每组人数 1 实验者 本
实验内容概述:学习使用 Matlab 设备名称 规格 数量/组 备注 计算机P420G以上 本实验所需主要专用设备 实验3导数及偏导数计算 实验目的 进一步理解导数概念及其几何意义 2.学习 matlab的求导命令与求导法 实验内容 1.学习 matlab命令 建立符号变量命令sm和syms调用格式 x=sym('x'),建立符号变量x syms y z,建立多个符号变量x,y,z matlab求导命令dif调用格式 df数),求的一阶导数 dff函数,n),求的n阶导数(n是具体整数)
实验内容概述:学习使用 Matlab. 本 实 验 所 需 主 要 专 用 设 备 设备名称 规格 数量/组 备注 计算机 P4 2.0G 以上 1 实验 3 导数及偏导数计算 实验目的 1.进一步理解导数概念及其几何意义. 2.学习 matlab 的求导命令与求导法. 实验内容 1.学习 matlab 命令. 建立符号变量命令 sym 和 syms 调用格式: x=sym(`x`), 建立符号变量 x; syms x y z , 建立多个符号变量 x,y,z; matlab 求导命令 diff 调用格式: diff(函数 ) , 求 的一阶导数 ; diff(函数 , n) , 求 的 n 阶导数 (n 是具体整数);
dff函数,变量名),求对的偏导数: dff函数,变量名,n),求对的n阶偏导数 matlab求雅可比矩阵命令 jacobian,调用格式 jacobian(函数;函数;函数],[])给出矩阵 2.导数概念 导数是函数的变化率,几何意义是曲线在一点处的切线斜率 (1)点导数是一个极限值 例3.1.设,用定义计算 解:在某一点的导数定义为极限 我们记,输入命令 syms h; limit((exp(o+h)-exp(O)/h, h, 0) 得结果ans=1.可知 (2)导数的几何意义是曲线的切线斜率 例3.2画出在处()的切线及若干条割线,观察割线的变化趋势 解在曲线上另取一点,则的方程是 取,分别作出几条割线 h=[3,2,1,0.1,0.01l;a=exp(h)-1)/h;x=-1:0.1:3 plot(x, exp(x),'r): hold on plot(h(1),exp(h(),’r.”)
diff(函数 ,变量名 ), 求 对 的偏导数 ; diff(函数 , 变量名 ,n) ,求 对 的 n 阶偏导数 ; matlab 求雅可比矩阵命令 jacobian,调用格式: jacobian([函数 ;函数 ; 函数 ], [ ])给出矩阵: 2.导数概念. 导数是函数的变化率,几何意义是曲线在一点处的切线斜率. (1)点导数是一个极限值. 例 3.1.设 ,用定义计算 . 解: 在某一点 的导数定义为极限: 我们记 ,输入命令: syms h;limit((exp(0+h)-exp(0))/h,h,0) 得结果:ans=1.可知 (2)导数的几何意义是曲线的切线斜率. 例 3.2.画出 在 处( )的切线及若干条割线,观察割线的变化趋势. 解:在曲线 上另取一点 ,则 的方程是: .即 取 ,分别作出几条割线. h=[3,2,1,0.1,0.01];a=(exp(h)-1)./h;x=-1:0.1:3; plot(x,exp(x),’r ’);hold on for i=1:5; plot(h(i),exp(h(i)),’r.’)
plot(x, a(i)*x+1) end axis square 作出在处的切线 po(x,x+1,r”) 从图上看,随着与越来越接近,割线越来越接近曲线的割线 3.求一元函数的导数 (1)的一阶导数 例3.3求的导数 解:打开 matlab指令窗,输入指令 dy dx=diff(sin(x)/x) 得结果 dy dcos()/x-sin( x)/x 2. matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们 用dydx表示 例34求的导数 解:输入命令 dy dx=diff(log (sin(x))) 得结果 dy dx=cos(x)/sin(x) 在 matlab中,函数用log(x)表示,而log10x)表示 例3.5求的导数 解:输入命令dydx=diff(x^2+2*x)^20)
plot(x,a(i)*x+1) end axis square 作出 在 处的切线 plot(x,x+1,’r ’) 从图上看,随着 与 越来越接近,割线 越来越接近曲线的割线. 3.求一元函数的导数. (1) 的一阶导数. 例 3.3.求 的导数. 解:打开 matlab 指令窗,输入指令: dy_dx=diff(sin(x)/x). 得结果: dy_dx=cos(x)/x-sin(x)/x^2. matlab 的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们 用 dy_dx 表示 . 例 3.4.求 的导数. 解: 输入命令: dy_dx=diff(log(sin(x))). 得结果: dy_dx=cos(x)/sin(x). 在 matlab 中,函数 用 log(x)表示,而 log10(x)表示 . 例 3.5.求 的导数. 解: 输入命令:dy_dx=diff((x^2+2*x)^20)
得结果 dydx=20*(x^2+2*x)y19*(2*x+2 注意输入时应为2*x 例3.6求的导数 解:输入命令 dy dxdiff(xx 得结果 dydx=x^x°(log(x)+1) 利用 matlab命令df一次可以求出若干个函数的导数 例3.7求下列函数的导数: 解:输入命令 diff(I sgrt(x2-2x+5), cos(x2)+2*cos(2* x),4(sin(x)) log(log(x))D) 得结果 [/2/(x^2-2*x+5)(12)*(2*x-2),-2*sin(x^2)*x-4sn(2*x) 4sin(x)*cos(x)*log (4), 1/x/log(x) dy l dx=a(1)
得结果: dy_dx=20*(x^2+2*x)^19*(2*x+2). 注意 输入时应为 2*x. 例 3.6.求 的导数. 解: 输入命令: dy_dx=diff(x^x). 得结果: dy_dx =x^x*(log(x)+1). 利用 matlab 命令 diff 一次可以求出若干个函数的导数. 例 3.7.求下列函数的导数: 1. . 2. . 3. . 4. . 解: 输入命令: a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)), log(log(x))]). 得结果: a= [1/2/(x^2-2*x+5)^(1/2)*(2*x-2),-2*sin(x^2)*x-4*sin(2*x), 4^sin(x)*cos(x)*log(4), 1/x/log(x)]. dy1_dx=a(1)
dy l dx=1/2/(x^2-2*x+5)(1/2)*(2*x2) dy 3 dx=a(3) dy 3 dx=4 sin( x)cos(x)*log(4) 由本例可以看出, matlab函数是对矩阵或向量进行操作的,a(i)表示向量a的第i个分量 (2)参数方程所确定的函数的导数 设参数方程确定函数,则的导数 例3.8设,求 解:输入命令 dx dt=diff(a (t-sin(t))): dy dt=diff(a*(1-cos(t))) 得结果 其中分号的作用是不显示结果 4.求多元函数的偏导数 例3.9设u=求u的一阶偏导数 解:输入命令 diff(x2+y^2+z^2)^(1/2),x) 得结果
dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2). dy2_dx=a(2) . dy2_dx=-2*sin(x^2)*x-4*sin(2*x). dy3_dx=a(3) . dy3_dx=4^sin(x)*cos(x)*log(4). dy4_dx=a(4) . dy4_dx=1/x/log(x). 由本例可以看出,matlab 函数是对矩阵或向量进行操作的,a(i)表示向量 a 的第 i 个分量. (2)参数方程所确定的函数的导数. 设参数方程 确定函数 ,则 的导数 . 例 3.8.设 ,求 . 解: 输入命令: dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t))); dy_dx=dy_dt/dx_dt. 得结果: dy_dx=sin(t)/(1-cos(t)). 其中分号的作用是不显示结果. 4.求多元函数的偏导数. 例 3.9.设 u= 求 u 的一阶偏导数. 解: 输入命令: diff((x^2+y^2+z^2)^(1/2), x). 得结果:
ans=1/(x^2+y^2+2^2)^(1/2)*x 在命令中将末尾的x换成y将给出y的偏导数 ans=1/(x^2+y^2+2^2)^(l/2)*y 也可以输入命令 jacobian(x^2+y^2+2^2)^(12),[xy) 得结果 ans=[1/x^2+y^2+22)(1/2)*x,x^2+y2+z2)(1/2)*y] 给出矩阵 例3.10.求下列函数的偏导数 解:输入命令 diff(atan(y/x) 得结果 ans=-y/x 2. 输入命令: diff(atan(y/x), y) 得结果 ans=1/x(1+y^2x^2) 输入命令: 得结果
ans=1/(x^2+y^2+z^2)^(1/2)*x. 在命令中将末尾的 x 换成 y 将给出 y 的偏导数: ans=1/(x^2+y^2+z^2)^(1/2)*y. 也可以输入命令: jacobian((x^2+y^2+z^2)^(1/2),[x y]). 得结果: ans=[1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y] 给出矩阵 . 例 3.10.求下列函数的偏导数: 1. . 2. . 解: 输入命令: diff(atan(y/x). 得结果: ans=-y/x^2/(1+y^2/x^2). 输入命令: diff(atan(y/x), y). 得结果: ans=1/x/(1+y^2/x^2). 输入命令: diff(x^y, x). 得结果:
输入命令 得结果 使用 jacobian命令求偏导数更为方便 输入命令: jacobian (latan(y/x), xy],x, yD) 得结果 ans[yx^2/1+y^2/x^2),1x(1+y^2/x^2 xy*log(x) 5.求高阶导数或高阶偏导数 例3.11设,求 解:输入指令 diff(x 2exp(2 得结果 99614720*eXp(2*x)+20971520*x*exp(2*x)+1048576*X^2exp(2*x) 例3.12.设,求 解输入命令: difx6-3y^4+2*x^2*y^2,x,2) 可得到
ans=x^y*y/x. 输入命令: diff(x^y, y). 得结果: ans=x^y*log(x). 使用 jacobian 命令求偏导数更为方便. 输入命令: jacobian([atan(y/x),x^y],[x,y]). 得结果: ans=[ -y/x^2/(1+y^2/x^2), 1/x/(1+y^2/x^2)] [ x^y*y/x, x^y*log(x)]. 5.求高阶导数或高阶偏导数. 例 3.11.设 ,求 . 解:输入指令: diff(x^2*exp(2*x),x,20). 得结果: ans = 99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x) 例 3.12.设 ,求 . 解:输入命令: diff(x^6-3*y^4+2*x^2*y^2,x,2) 可得到 :
ans=30*x^4+4y^2 将命令中最后一个x换为y得 ans=36*y^2+4*x^2 输入命令 diff(diff(x^6-3*y4+2*x^2*y^2,x),y) ans=8*x 同学们可自己计算比较它们的结果 注意命令df(x6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求 6.求隐函数所确定函数的导数或偏导数 例3.13.设,求 解:,先求,再求 输入命令: df dxdiff(log(x)+exp(-y/x)-exp(1), x) 得到 /x2*exp(-y/x) 输入命令 df dy=diff(log(x)+exp(-y/xH-exp(1), y) 得到: 输入命令 可得所求结果
ans=30*x^4+4*y^2. 将命令中最后一个 x 换为 y 得 : ans=-36*y^2+4*x^2. 输入命令: diff(diff(x^6-3*y^4+2*x^2*y^2,x),y) 可得 : ans=8*x*y 同学们可自己计算 比较它们的结果. 注意命令:diff(x^6-3*y^4+2*x^2*y^2,x,y),是对 y 求偏导数,不是求 . 6.求隐函数所确定函数的导数或偏导数 例 3.13.设 ,求 解: ,先求 ,再求 . 输入命令: df_dx=diff(log(x)+exp(-y/x)-exp(1),x) 得到 : df_dx=1/x+y/x^2*exp(-y/x). 输入命令: df_dy=diff(log(x)+exp(-y/x)-exp(1),y) 得到 : df_dy=-1/x*exp(-y/x) 输入命令: dy_dx=-df_dx/df_dy 可得所求结果:
dy dx=-(-1/x-y/x2*exp(-y/x))x/exp(-y/x) 例3.14.设,求 输入命令: a=jacobian (sin(x*y)+cos(y*)+tan(z*x),x, y, z) 可得矩阵 [cos(x*y)*y+(1+tan(z*x)2)*z, cos(x*y)*x-sin(y*z)*z sin(y*z)y+(1+tan(z*x)2)x 输入命令 dz dx-a(1)a(3) (-cos(x*y)*y-(1+an(2*x)2)*2)(-sin(y*2)y+(1+an(2*x)2)*x) 输入命令 dz_dy=-a(2)a(3) (-cos(x*y)*x+sin(y*2)*2)(-sn(y*2)*y+(1+tan(z*x)2)*x) 实验7矩阵与线性方程组 实验目的: 1.掌握 matlab求矩阵的秩命令
dy_dx=-(-1/x-y/x^2*exp(-y/x))*x/exp(-y/x). 例 3.14.设 ,求 解: 输入命令: a=jacobian(sin(x*y)+cos(y*z)+tan(z*x),[x,y,z]) 可得矩阵 a= [cos(x*y)*y+(1+tan(z*x)^2)*z,cos(x*y)*x-sin(y*z)*z, -sin(y*z)*y+(1+tan(z*x)^2)*x]. 输入命令: dz_dx=-a(1)/a(3) 得: dz_dx= (-cos(x*y)*y-(1+tan(z*x)^2)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x) 输入命令: dz_dy=-a(2)/a(3) 得: dz_dy= (-cos(x*y)*x+sin(y*z)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x) 实验 7 矩阵与线性方程组 实验目的: 1.掌握 matlab 求矩阵的秩命令.