350 likes | 626 Views
《 经济数学 》 实训课. ------ 用 MATLAB 解决数学问题 任课老师 金慧萍. 主 要 内 容. 一、 Matlab 基本介绍 二、 Matlab 基本用法和常用的函数介绍 三、用 Matlab 解决经济数学中的数学问题. 使用 Matlab 软件时 , 需特别注意几点. ① 必须在 英文状态下 输入 ② clc 并回车 = 清屏 ③ clear 并回车 = 取消变量 ④ 乘法运算符号 * ,不能省略 ⑤ 分号 ; 表示先不运算 ⑥ inf = ⑦ pi= ⑧ Syms x y = 定义变量 x y.
E N D
《经济数学》实训课 ------用MATLAB解决数学问题 任课老师 金慧萍
主 要 内 容 • 一、Matlab基本介绍 • 二、Matlab基本用法和常用的函数介绍 • 三、用Matlab解决经济数学中的数学问题
使用Matlab软件时,需特别注意几点 ① 必须在英文状态下输入 ② clc并回车=清屏 ③ clear并回车=取消变量 ④ 乘法运算符号 * ,不能省略 ⑤ 分号 ;表示先不运算 ⑥ inf= ⑦ pi= ⑧ Syms x y =定义变量 x y
一、 MATLAB 的基本介绍 MATLAB 是Matrix Laboratory 的缩写, 是Mathworks 公司于1984 年推出的一套科学计算软件,分为总包和若干工具箱. 具有强大的矩阵计算和数据可视化能力. 一方面,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、系统仿真等若干个领域的数学计算, 另一方面,可以实现二维、三维图形绘制、三维场景创建和渲染、科学计算可视化、图像处理、虚拟现实和地图制作等图形图象方面的处理. 同时,MATLAB 是一种解释式语言.简单易学、代码短小高效、计算功能强大、图形绘制和处理容易、可扩展性强.
其优势在于: • 矩阵的数值运算、数值分析、模拟; • 数据可视化、 2D/3D 的绘图; • 可以与FORTRAN、C/C++做数据链接; • 几百个核心内部函数; • 大量可选用的工具箱.
二、 Matlab基本用法和常用的函数介绍 1. Matlab的启动与退出 常用的进入 Matlab 方法是鼠标双击Windows 桌面上的Matlab 图标 。 在Matlab 的环境中,键入 quit(或 exit) 并回车,将退出Matlab,返回到Windows 桌面.
2. Matlab命令窗口的使用 下图展示了进入Matlab后的工作桌面(窗口). 在matlab命令窗口直接输入命令,再按回车键,则运行显示相应的结果.
3. 三角函数值的计算 在MATLAB 环境下,计算三角函数的一个值或一组值非常方便,只要给定自变量的数据并知道函数名就可以计算出对应函数值. 常用的三角函数和反三角函数为: 正弦函数: sin(x), 反正弦函数: asin(x), 余弦函数: cos(x),反余弦函数: acos(x), 正切函数: tan(x), 反正切函数: atan(x)。
注1:Matlab中的“角度”,采用弧度制,且用”pi”表示注1:Matlab中的“角度”,采用弧度制,且用”pi”表示 例1:计算sin30o的值。 只须在Matlab 环境下键入: sin(pi/6) 并回车,计算机屏幕将显示出计算结果: ans = 0.5000. 例2:计算sin30o ,sin45o ,sin60o的值。 键入: x=[pi/6,pi/4,pi/3];sin(x) 并回车,计算机屏幕将显示计算结果:ans = 0.5000 0.7071 0.8660. 或键入:sin([pi/6,pi/4,pi/3]),结果是一样的。 • 注2:Matlab中输入的命令,一定要在“英文半角的状态下”输入。
4. 其他函数值的计算 除了三角函数和反三角函数以外,Matlab 的内部函数还包括基本初等函数在内的一些函数.这些函数的使用如同正弦函数一样,需要给定自变量数据,然后键入函数名、括号、自变量名并回车,便可得对应的函数值数据. 常用基本函数有: 开平方:sqrt(x) 或 x^(1/2), x的n次幂:x^n; 以e为底的指数:exp(x) , 以a为底的指数函数:a^x; 自然对数: log(x), 以10为底的对数:log10(x) ; 最大值:max(x) , 最小值:min(x); 绝对值:abs(x) ; 取整:fix(x) ; 元素的总和:sum(x), 符号函数:sign(x) . 例3:计算log(1),log10(100),sqrt(16)=16^(1/2),3^10,sign(-5)等。
5.基本的数学运算 例4:计算(5×2+1.3-0.8)×102 ÷25 键入: (5*2+1.3-0.8)*10^2/25 并回车,得: ans =42 在Matlab下进行基本数学运算,只需将运算式直接打入提示号(>>)之后,并按回车键即可. Matlab会将运算结果直接存入一变数ans,代表Matlab运算后的答案(Answer)并显示其数值于屏幕上. 例4也可以用变量的方法做,如:
我们也可将上述运算式的结果设定给另一个变数x(定义变量) 例4:计算(5×2+1.3-0.8)×102 ÷25 键入: Syms x; x = (5*2+1.3-0.8)*10^2/25 回车得:x = 42 注3: Matlab认识所有一般常用到的加(+)、减(-)、乘(*)、除(/) 的数学运算符号,以及幂次运算(^). 注4: Matlab还会自动进行记忆体的使用和回收; 若不想让Matlab每次都显示运算结果,只需在运算式最后加上分号(;). 例5:计算 y=sinx e-0.3×16 ,当x=10时的值。 键入:Syms x y; x=10; y = sin(x)*exp(-0.3*16); >>y 回车得:y =-0.0045.
定义多个变量的情况: 例6:计算 , 当 时的值。 Syms x y z; x=2; y=4; z=x^2+exp(x+y)-y*log(x)-3 回车,可以运算出结果是401.6562。 注5:变量要区分字母的大小写,标点符号必须是在英文状态下输入。 注6:要清除前面定义的变量,只需要输入clear即可。但是输入了clear 后又必须要重新定义变量,否则变量无意义。如果没有清除变量,则表示该变量可以继续使用。
6. 解方程 命令格式: Solve (‘方程’,’变量’)。 例7:求方程x2=4的根。 >> solve ('x^2-4=0','x') ans = -2 2 例8:求方程x-sinx=1/2的根。 >> solve ('x-sin(x)=1/2','x') ans = 1.4973003890958923146815215409476 注7:方程与变量一定要用单引号‘ ’;方程中的“=0与变量x”可以省; 另外这个命令只适合求一元方程的根。
7. 求极限 命令格式: Syms x; Limit (函数名,变量,趋近值) 例9:求 。 >> syms x; >> limit(sin(x)/x) ans = 1 注8:当 时,变量和趋近值都可以不用写; 其他情况,必须写出变量和趋近值。
例10求: >> syms x; >> limit((x^2-1)/(x^2+3*x-4),x,1) ans = 2/5 例11 求: >> syms x; >> limit(exp(x),x,-inf) ans = 0
8.求导数 命令格式: syms x; diff(函数名)表示求函数的一阶导数; diff(函数名,变量名,n)表示函数对该变量求n阶导数。 例12:求 的一阶导数,10阶导数,11阶导数等。 >> syms x; >> diff(x^10) ans =10*x^9 >>diff(x^10,x,10) ans =3628800 >>diff(x^10,x,11) ans =0
的导数。 例13: 求函数 >> diff(x^x) 或diff(x^x,x,1) ans = x^x*(log(x)+1) 例14: 求函数 的导数。 >>diff((sin(1/x))^2) ans = -2*sin (1/x)* cos (1/x))/x^2 注9:当变量为x,并求1阶导数时,可省略”变量名”与”n”。
9. 绘平面图形 (1)linspace函数的使用 命令格式: Linspace(x1,x2,n) 表示:x1为首分量,x2为末分量的n维向量(即n-1等分)。 例15: >> linspace(0,100,5) ans = 0 25 50 75 100 >> linspace(0,-100,5) ans = 0 -25 -50 -75 -100 >> linspace(0,100,101) ans=1 2 3 --- 100 101 >> linspace(1,100) ans=1 2 3 ---99 100 注10:如果没有指明n,则默认100维向量(即99等分)。
(2) 一元函数的绘图 命令格式: fplot(‘fun’,[a,b]) 例16: 画出 y=sinx的图像,x属于[0,2pi]. >> fplot('sin(x)',[0,2*pi])
例17 画出 在[-5,5]内的图像。 >> fplot('x*sin(1/x)',[-5,5]) 问:>> fplot(‘x*sin(1/x)’,[-0.1,0.1]) 图会如何?
(3)多个函数的绘图 plot是Matlab的最基本的绘制二维图形指令。 其主要功能是根据函数自变量的一组值,绘制出函数的图形; 基本格式有下面几种: • plot(X,Y) • (2) plot(Y) • (3) plot(X1,Y1,X2,Y2) • (4) plot(x,y,’s’) s是控制图形的颜色及图形的连线方式(见下表)
例18: 绘制 y=sinx 在 [0,2pi] 内的图像 >>x=linspace(0,2*pi,100); >> y=sin(x); >> plot(x,y) 问: ① >>x=linspace(0,2*pi,5); >> y=sin(x); >> plot(x,y) ② >>x=linspace(0,2*pi,100); >> y=sin(x); >> plot(x) ④>>x=linspace(0,2*pi,100); >> y=sin(x); >> plot(x,y,‘r’) 它们的图形会如何? ③>>x=linspace(0,2*pi,100); >> y=sin(x); >> plot(x,y,‘s’)
例19: 在同一个坐标系内画出函数y=sinx和y=cosx在[-2pi,2pi]内的图像。 >>x=linspace(-2*pi,2*pi,200); y1=sin(x); y2=cos(x); plot(x,y1,x,y2)
例20: 在同一个坐标系内画出函数y=sinx和y=cosx在[0,2pi]内的图像;并且 正弦函数图像用红色的五角星表示,其余部分用实线连接;余弦函数的图像用黑色的加号表示,其余部分用虚线连接。 >> x=linspace(0,2*pi,50); y1=sin(x); y2=cos(x); plot(x,y1,'-rp',x,y2,'--k+')
Matlab提供了许多很实用的绘制特殊二维图形的函数,常用的有如下表所列的函数。Matlab提供了许多很实用的绘制特殊二维图形的函数,常用的有如下表所列的函数。 注11:如需要具体了解某个函数的用法和效果,可以输入“help 函数名”即可。 如需要画柄状图,则输入“help pie”就可以查看。
例21: 绘制y=sinx在[0,2pi]内的条形图。 >> x=linspace(0,2*pi,20); y=sin(x); bar(x,y,'r')
>> x=linspace(0,2*pi,40); y=sin(x); bar(x,y,'r')
*(4)三维空间的绘图 Plot3 命令将绘制二维图形的函数plot的特性扩展到三维空间。 除了数据多了一维之外,它的格式与plot相同。具体的命令格式为: Plot3 (X1,Y1,z1,X2,Y2,z2)后面可以相应的加上控制组合。 *例22 绘制函数x=tsint,y=tcost,z=t的三维图形。 >> t=linspace(0,20*pi,1000); >> plot3 (t.*sin(t),t.*cos(t),t) >> t=linspace(0,20*pi,1000); plot3 (t.*sin(t),t.*cos(t),t); >> grid on
Matlab中绘制带网格的曲面图使用mesh函数。 *例23:绘制 的图像。 syms x y z r >> x=linspace(-10,10,50); y=linspace(-10,10,50); [xx,yy]=meshgrid(x,y); >> r=sqrt(xx.^2+yy.^2); z=sin(r)./r; mesh(z)
三、用Matlab解决经济数学中的数学问题 例24.某厂生产一批产品,其固定成本为2000元,每生产一吨产品的成本为60元,对 这种产品的市场需求规律为 ( 为需求量, 为价格). 试求: (1)成本函数,收入函数; (2)产量为多少吨时利润最大?
解:(1)成本函数 . 因为 ,即 , 所以 收入函数 . (2)因为利润函数
令 得 故有最大利润为 用matlab计算如下: 1.求利润函数L(q)的导数。 >> syms p q; >> diff(-1/10*q^2+40*q-2000) ans = 40 - q/5 2.令L’(q)=0,解方程。 >> solve('40 - q/5') ans = 200
3.作出利润函数的图像,根据图像观察最值点。3.作出利润函数的图像,根据图像观察最值点。 >> fplot('-1/10*q^2+40*q-2000',[0,1000,0,3000])