第四章 MATLAB

合集下载

MATLAB-第4章

MATLAB-第4章

v
i 1
n
2 i


max { vi } 。
1 ≤i ≤n
设 A 是一个 m ×n 的矩阵,矩阵的 3 种常用范数如下。 1-范数: A 1 max { aij } 。
1 ≤ j ≤n i 1 m
2-范数: A 2 1 ,其中 λ 1 为 A'A 最大特征值。 ∞-范数: A max { aij } 。
【例4.6】先建立5 × 5矩阵A,然后将A的第一行元素乘以1, 第二行乘以2,…,第五行乘以5。 用一个对角矩阵左乘一个矩阵时,相当于用对角阵的第一个 元素乘以该矩阵的第一行,用对角阵的第二个元素乘以该 矩阵的第二行……依此类推,因此,只需按要求构造一个 对角矩阵D,并用D左乘A即可。命令如下: A=[1:5;2:6;3:7;4:8;5:9] D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数
(2)构造对角矩阵 设V为具有m个元素的向量,diag(V,k)的功能是产生一个 n × n(n = m + k|)对角阵,其第k条对角线的元素即为 向量V的元素。 例如: diag(1:3,-1) ans = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 省略k时,相当于k为0,其主对角线元素即为向量V的元素。
2.矩阵的秩与迹 (1)矩阵的秩 rank(A) (2)矩阵的迹 矩阵的迹即矩阵的对角线元素之和。 trace(A)。
3.向量和矩阵的范数
设向量 V = (v1 ,v2 ,…,vn ),向量的 3 种常用范数如下。 1-范数: V 2-范数: V ? -范数: V
1
vi 。
i 1
n
2

3.矩阵的转置 所谓转置,即把源矩阵的第一行变成目标矩阵第一列,第二 行变成第二列……依此类推。显然,一个m行n列的矩阵 经过转置运算后,变成一个n行m列的矩阵。MATLAB中, 转置运算符是单撇号(')。

第4章 MATLAB图像显示讲解

第4章  MATLAB图像显示讲解

第四章图像显示M a t l a b进行图像处理的步骤如下:↓↓↓↓【目录】一、读图像和图像信息 (2)1、读取图像 (2)2、读取图像信息 (4)二、图像显示 (6)1、i m s h o w(I,n) (6)2、i m s h o w(I,[l o w,h i g h]) (7)3、i m s h o w(B W) (8)4、i m s h o w(X,M A P) (12)5、i m s h o w(R G B) (13)6、显示多帧图像序列 (14)7、i m s h o w f i l e n a m e (17)8、s u b i m a g e (17)三、保存图像 (18)1、i m w r i t e函数 (18)四、图像数据格式转换 (19)07-11、索引图像 (19)2、灰度图像 (19)3、真彩色图像 (20)4、二值图像 (20)一、读图像和图像信息1、读取图像函数i m r e a d可以从任何M a t l a b支持的图像文件格式中,以任意位深度读取一幅图像。

格式为:[X,M A P]=i m r e a d('F I L E N A M E.F M T'),其中:F I L E N A M E-为需要读入的图像文件名称,F M T-为图像格式。

【例】图像读取演示[X1,M A P1]=i m r e a d('演示图像-1位黑白.t i f');[X2,M A P2]=i m r e a d('演示图像-8位灰度.t i f');[X3,M A P3]=i m r e a d('演示图像-256色.t i f');[X4,M A P4]=i m r e a d('演示图像-16位灰度.t i f');[X5,M A P5]=i m r e a d('演示图像-24位色.t i f');[X6,M A P6]=i m r e a d('演示图像-48位色.t i f');07-207-3w h o sN a m e S i z e B y t e s C l a s sM A P10x00d o u b l e a r r a yM A P20x00d o u b l e a r r a yM A P3256x36144d o u b l e a r r a yM A P40x00d o u b l e a r r a yM A P50x00d o u b l e a r r a yM A P60x00d o u b l e a r r a yX1427x427182329l o g i c a l a r r a yX2427x427182329u i n t8a r r a yX3427x427182329u i n t8a r r a yX4427x427364658u i n t16a r r a yX5427x427x3546987u i n t8a r r a yX6427x427x31093974u i n t16a r r a yG r a n d t o t a l i s1824058e l e m e n t s u s i n g2558750b y t e s2、读取图像信息可以通过调用i m f i n f o函数获得与图像文件有关的信息,格式如下:I N F O=i m f i n f o('F I L E N A M E.F M T')其中:返回的I N F O是M a t l a b的一个结构体。

matlab第四章课件

matlab第四章课件

4.1.1 M文件的分类
M文件是由若干 Matlab 命令组合在一起构成的,它可 以完成某些操作,也可以实现某种算法
事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言编写的 M文件 用户也可以结合自己的工作需要,开发自己的程序或工具箱
M文件根据调用方式的不同可以分为两类: Script file:命令文件/脚本文件 Function file:函数文件
例2 输入x,y的值,并将它们的值互换后输出(swap.m)。 x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y); 例3 求一元二次方程ax2 +bx+c=0的根(root.m)。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
例如:
s=0; a=[12 13 14;15 16 17;18 19 20;21 22 23] for k=a s=s+k; end disp(s); 该程序的功能是求矩阵各行元素之和,执行结果是: 39 48 57 66
while语句
while expr (条件) statement(循环体语句) end 若expr成立,则执行循环体的内容,执行后 再判断条件是否为真,如果不成立则跳出循环体。

Matlab教学第四章 MATLAB符号运算(Symbolic)

Matlab教学第四章 MATLAB符号运算(Symbolic)

>> y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') >> syms x; diff(y)+2*x*y - x*exp(-x^2)
f2=2*(u+2)
ans=14 ans=2*((a+2)+2) f3=2*x+2*y ans=6
符号矩阵
使用 sym 函数直接生成 >> A=sym('[1+x, sin(x); 5, exp(x)]') 将数值矩阵转化成符号矩阵 >> B=[2/3, sqrt(2); 5.2, log(3)]; >> C=sym(B) 符号矩阵中元素的引用和修改 >> A=sym('[1+x, sin(x); 5, exp(x)]'); >> A(1,2) % 引用 >> A(2,2)=sym('cos(x)') % 重新赋值
符号对象的基本运算
基本函数
三角函数与反三角函数、指数函数、对数函数等
sin、cos、tan、cot、sec、csc、… asin、acos、atan、acot、asec、 acsc、…
exp、log、log2、log10、sqrt abs、conj、real、imag
rank、det、inv、eig、lu、qr、svd
How 中记录的为简化过程中使用的方法。
f
2*cos(x)^2sin(x)^2
(x+1)*x*(x-1)
R
HOW
3*cos(x)^2-1 simplify
x^3-x combine(tri g)

第四章 MATLAB的其他函数库

第四章  MATLAB的其他函数库

现代通信仿真技术
15 10 5 0 -5
15 10 5 0 -5
15 10 5 0 -5
0
0.5
1
0
0.5
1
0
0.5
1
15 10 5 0 -5
15 10 5
20 15 10 5
0 -5
0 0 0.5 1 -5 0 0.5 1
0
0.5
1
第四章
MATLAB的其他函数库 MATLAB的其他函数库
现代通信仿真技术
现代通信仿真技术
第4章
MATLAB的其他函数库 MATLAB的其他函数库
本章内容
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8
第四章
数据分析函数库 矩阵的分解与变换 多项式函数库
函数功能和数值积分函数库
字符串函数库 稀疏矩阵函数库 图形界面函数库 数据类型函数库
MATLAB的其他函数库 MATLAB的其他函数库
现代通信仿真技术
多项式求导、 4.3.2 多项式求导、求根和求值
1)多项式求导数 多项式的微分由polyder函数实现。 polyder函数实现 多项式的微分由polyder函数实现。 求导
c=[6 24 60 e=polyder(c) e= 30 96 102 72]
96 180 192 102
现代通信仿真技术
学习重点
掌握多项式的运算; 1、掌握多项式的运算; 掌握字符串的赋值; 2、掌握字符串的赋值; 3、掌握字符串的输入和输出; 掌握字符串的输入和输出 字符串的输入和输出;
第四章
MATLAB的其他函数库 MATLAB的其他函数库
现代通信仿真技术
自学 4.1 数据分析函数库 4.2 矩阵的分解与变换 4.4 函数功能和数值积分函数库 4.6 稀疏矩阵函数库 4.7 图形界面函数库 4.8 数据类型函数库

第四章_MATLAB的数值计算功能

第四章_MATLAB的数值计算功能

第四章MATLAB 的数值计算功能Chapter 4: Numerical computation of MATLAB数值计算是MATLAB最基本、最重要的功能,是MATLAB最具代表性的特点。

MATLAB在数值计算过程中以数组和矩阵为基础。

数组是MATLAB运算中的重要数据组织形式。

前面章节对数组、矩阵的特征及其创建与基本运算规则等相关知识已作了较详尽的介绍,本章重点介绍常用的数值计算方法。

一、多项式(Polynomial)`多项式在众多学科的计算中具有重要的作用,许多方程和定理都是多项式的形式。

MATLAB提供了标准多项式运算的函数,如多项式的求根、求值和微分,还提供了一些用于更高级运算的函数,如曲线拟合和多项式展开等。

1.多项式的表达与创建(Expression and Creating of polynomial)(1) 多项式的表达(expression of polynomial)_Matlab用行矢量表达多项式系数(Coefficient)和根,系数矢量中各元素按变量的降幂顺序排列,如多项式为:P(x)=a0x n+a1x n-1+a2x n-2…a n-1x+a n则其系数矢量(V ector of coefficient)为:P=[a0 a1… a n-1 a n]如将根矢量(V ector of root)表示为:ar=[ ar1 ar2… ar n]则根矢量与系数矢量之间关系为:(x-ar1)(x- ar2) … (x- ar n)= a0x n+a1x n-1+a2x n-2…a n-1x+a n(2)多项式的创建(polynomial creating)a,系数矢量的直接输入法利用poly2sym函数直接输入多项式的系数矢量,就可方便的建立符号形式的多项式。

例1:创建给定的多项式x3-4x2+3x+2poly2sym([1 -4 3 2])ans =x^3-4*x^2+3*x+2也可以用poly2str.求一个方阵对应的符号形式的多项式。

matlab第4章

matlab第4章

行向量元素为按降幂排列的多项式系数。
1.多项式乘法函数 conv ( )
格式:C= conv (A, B) %求多项式A和B的乘积
A、B是两个多项式的系数向量,按降幂排列。 conv( ) 把两个多项式相乘合并成一个多项式。
2
p1 2s 3;
2
p2 s 2 4
3 2
A (2s 3)(s 4) 2s 3s 8s 12
x:操作点处的状态向量
u:操作点处的输入向量
x,u缺省值为0。
20
( s 1)(s 2 2s 6) 2 【例4.4】 求传递函数 G(s) 2 s (s 3)(s 3 2s 2 3s 4)
的分子和分母多项式,并求传递函数的特征 根。
21
% num 分子多项式 % conv( ) 采用嵌套形式
G (s)
5s 3 s 3 6 s 2 11s 6
13
3.部分分式展开函数residue ( ) 功能:对两个多项式的比进行部分展开。 格式:[r, p, k]=residue(b, a) 求B(s)/A(s)的部分分式展开式 向量b和a是按s降幂排列的多项式系数。
14
B( s) bn s n bn1s n1 ...b0 F ( s) A( s) an s n an1s n1 ...a0
38
2.并联 G(s)=G1(s)+G2(s) 模型并联函数 parallel 格式:[num, den]=parallel(num1, den1, num2, den2) num1, den1:G1(s) 的分子、分母多项式 num2, den2:G2(s)的分子、分母多项式 num, den:G(s) 的分子、分母多项式

《MATLAB程序设计》第4章数组及应用

《MATLAB程序设计》第4章数组及应用
数组在内 存中的地 址
0x0012FF68 a[0] 0x0012FF6C a[1] 0x0012FF70 a[2] 0x0012FF74 a[3]
数组元素
0x0012FF78 a[4]
0x0012FF7C a[5]
8
一维数组在内存中的存储形式
说明:
(1)数组名a表示内存首地址,是地址常量。
(2)数组a中每个数组元素占的内存空间根据 数组类型确定,整个数组占的内存为:数组元 素个数乘以每个元素所占内存空间如: int a[10]; 4×10=40 float b[20]; 4×20=80 double c[5]; 8×5=40 char d[8]; 1×8=8
第4章 数组
教学内容
数组的定义及应用
字符串处理函数
几个常用算法:排序算法(选择排序、
冒泡排序)
1
第4章 数组
重点、难点
数组的定义及应用
常用算法的设计(选择排序、
冒泡排序)
2
第4章 数组
教学目标
熟练掌握数组的定义及应用
掌握字符数组的定义及应用
掌握常用的字符串处理函数
熟练掌握几个常用算法:排序
算法(选择排序、冒泡排序)
分析:所谓转置就是将矩阵的行列互换,即将 a矩阵 的a[i][j]元素变成b矩阵的b[j][i]。
24
#include <iostream> using namespace std; int main() { int a[3][4] ={{1,2,3,4},{3,4,5,6},{5,6,7,8}}; int b[4][3],i,j; for(i=0;i<3;i++) //输出二维数组a[3][4] { for(j=0;j<4;j++) cout<<a[i][j]<<" "; cout<<endl; } for(i=0;i<4;i++) //将矩阵a转置给矩阵b for(j=0;j<3;j++) b[i][j]=a[j][i]; for(i=0;i<4;i++) //输出二维数组b[4][3] { for(j=0;j<3;j++) cout<<b[i][j]<<" "; cout<<endl; } return 0;}

Matlab第四章详细讲解

Matlab第四章详细讲解
v21 v2 = v22
v11 v21 V = v12 v22
λ 1 v11 A .v1 = λ 1 v1 = λ 1 v12
λ 2 v 21 A.v 2 = λ 2 v 2 = λ 2 v 22
A .v1
A .v 2
a11 a12 v11 v21 a11v11 + a12v12 a11v21 + a12v22 A*V = v v = a v + a v a v + a v a21 a22 12 22 21 11 22 12 21 21 22 22
2 − at
f ( t ) = (sin
t )e
−b=fzero(fun ,x0 ,option,p1,p2)
%(1)使用字符串表示被处理函数 P1=0.1;P2=0.5;
%按泛函指令要求,这里参数必须用P1,P2表示
y_C='sin(x).^2.*exp(-P1*x)-P2*abs(x)';
1、求函数的零点 (1)字符串表达式 q=quad(fun,a,b) 2、数值积分 (2)内联函数 3、解微分方程 q=quadl(fun,a,b) (3)“M函数文件”的函数句柄
[t,y]=ode45(fun ,tspan,y0)
4.3.1 求函数的零点
例:求以下函数的零点。
零点初始 猜测值
向函数fun传 递的参数
4.4 多项式和卷积
4、多项式的根
功能:计算多 项式P的根。
R=roots(P)
p1 x + p2 x
n
n −1
+ ... + pn x + p
-27 ];

第4章MATLAB程序设计

第4章MATLAB程序设计

例 求一个值n,使n!最大但小于1050。 MATLAB程序如下: %初始化 r=1;k=1; 执行后结果如下: %做循环 The 41!Is while r<1e50 3.345253e+049 r=r*k; k=k+1; end k=k-1;r=r/k;k=k-1; % 输出结果 disp(['The',num2str(k),'!is',num2str(r)])
4.2.3 循环结构 for 循环:可完成指定次重复的循环,且在循环开 始之前,就知道代码重复的次数。
while 循环:while语句可完成不定次重复的循 环,与for语句不同,每次循环前要先判断条件 是否满足,再决定循环是否进行。
例 利用rand函数产生10个随机数,然后利用嵌套 for循环进行从小到大排序。
2 1.5 1 0.5 0 150 100 50
然后通过调用函数fun计算出z, 并利用mesh绘制出网格线。 编写的脚本文件如下: % 坐标系准备 x=[0:.02:2]; y=[-2:.02:0]; % 调用函数计算函数值 z=fun(x,y); % 绘图 figure mesh(z)
150 100 50
4.3.2 函数的调用 函数调用的一般格式如下: [输出实参表] = 函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺 序、个数,应与函数定义时形参的顺序、 个数一致,否则会出错。函数调用时,先 将实参传递给相应的形参,从而实现参数 传递,然后再执行函数的功能。
例 对于函数
z ( x 1)2 ( y 1)2
fprintf函数中,format字符中常常会使用到一些特 殊字符来灵活的实现一些显示功能 format string 结果 %d %e %f %g 把值作为整数来处理 用科学记数法来显示数据 用于格式化浮点数,并显示这个 数 用科学记数格式,或浮点数格式, 根据那个表示的数位短,显示那 个 转到新的一行

MATLAB第四章(刘卫国编)

MATLAB第四章(刘卫国编)

25
例4.9 求定积分。 以梯形法为例,程序如下: a=0;b=3*pi; n=1000; h=(b-a)/n; x=a; s=0; f0=exp(-0.5*x)*sin(x+pi/6); for i=1:n x=x+h; f1=exp(-0.5*x)*sin(x+pi/6); s=s+(f0+f1)*h/2; f0=f1; end s

例4.13 求[100,200]之间第一个能被21整除 的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break end n
2
例4.1 建立一个命令文件将变量a,b的值互换,然后 运行该命令文件。 程序1: 首先建立命令文件并以文件名exch.m存盘: clear; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执行 该命令文件。
16
当表达式的值等于表达式1的值时,执行 语句组1, 当表达式的值等于表达式2的值时,执行 语句组2,…, 当表达式的值等于表达式m的值时,执 行语句组m, 当表达式的值不等于case所列的表达式 的值时,执行语句组n。 当任意一个分支的语句执行完后,直接 执行switch语句的下一句。
17
例4.5 某商场对顾客所购买的商品实行打折 销售,标准如下(商品价格用price来表示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。

04Matlab4(M文件)

04Matlab4(M文件)
>> help stat STAT Mean and standard deviation For a vector x,stat(x) returns the mean and standard deviation of x. for a matrix x,stat(x) returns two row vectors containing respectively the mean and standard deviation of each column.
② while 语句 用于不知道重复次数的循环可以用while语句。其一般格式为:
while <关系表达式> 语句 (循环体) end 当关系表达式的值为1(真) 时,执行循环,在执行循环过 例4、由ex的级数展开式求ex的值:
x=[1:0.5:4]; k=1;ex=1;dlt=1; while any(dlt>=0.0001) dlt=dlt.*x./k; ex=ex+dlt; k=k+1; end ex
量。这表明函数文件对于变量的运算是在函数本身的工作空
间内进行的,它和MATLAB的命令窗口中的工作空间是相互
独立的。
⑸为增加函数的可读性,通常在函数定义行后是注释行,以%开头.
function [mean,stdev]=stat(x) % STAT Mean and standard deviation % For a vector x,stat(x) returns the mean and standard deviation of x. % for a matrix x,stat(x) returns two row vectors containing respectively % the mean and standard deviation of each column. [m,n]=size(x); if m==1 m=n; end mean=sum(x)/m; stdev=sqrt(sum(x.^2)/m-mean.^2)

第4章 MATLAB 绘图

第4章 MATLAB 绘图

4.图例标注
菜单Insert---legend 命令legend('string1','string2',...)
4.1.6 一个图形窗口多个子图的绘制
subplot(m,n,i)把图形窗口分为m*n个子图,并在第i个子图 中画图 例 4-11 在同一坐标系中画出两个函数,y=cos2x,y=sinxsin6x 的图形,自变量的范围为0≤ x ≤π,函数y=cos2x用红色星号,函数 y=sinxsin6x用蓝色实线,并加图名、坐标轴、图形、图例标注 解 MATLAB命令为: x=0:pi/50:pi; y1=cos(2*x);y2=sin(x).*sin(6*x); plot(x,y1,'r*',x,y2,'b-'),grid on title(‘曲线y1=cos(2x)曲线y2=sin(x)sin(6x)') xlabel('x轴'),ylabel('y轴') gtext('y1=cos(2x)'),gtext('y2=sin(x)sin(6x)') legend('y1=cos(2x)','y2=sin(x)sin(6x)')
group 8 6 4 2 0 10 30 20
stack
1
2
3
4 stack
5
6
0
1
2
3
4 stack
5
6
8 6 5 4 3 2 1 0 10 20 30 6 4 2 0
其它特殊绘图略(见教科书 )
1
2
3
4
5
6
4.3 三维曲线绘图

第四章Matlab语言数据结构1

第四章Matlab语言数据结构1

例3:将二进制按每3位转为十进制数 clc,clear
Xfram=[0 1 1 1 1 1]; Xfram_re=reshape(Xfram,3,2);
%每3位转为十进制数
NumTrans=zeros(1,2);%放转换后的十进制数
for i=1:2
NumTrans(i)=bin2dec(num2str(Xfram_re(:,i)'));
Thank you for your cooperation
4.1.2 结构和单元阵列
在工程和管理系统中,常常需要分层次地 把一些有一定联系但不同类型、不同规模 的数据组织起来成为一个变量。 如:要为一个班的学生建立一套student管 理档案,记录每个学生的三个项目:姓名 (字符串)、出生日期(字符串)、四门 课(高数,英语,马列,体育)的成绩 (数组)。
单元型:cell
结构型:struct Jave类 函数句柄型
§4.1 Matlab语言的数据结构
MATLAB的数据类型
array char numeric double sparse cell struct user- object -
storage
各种数据类型的层次关系
常用基本数据类型 double(双精度数值) char(字符) storage(存储型):只用于内存的有效存储 sparse(稀疏数据):专门用于处理稀疏矩阵 cell(单元数组):
结构阵列的数据索引举例
clc,clear ='John'; student.birthday='1985.06.15'; student.score=[85,85,87,97]; student(2).name=' Alice '; student(2).birthday=' 1986.01.20 '; student(2).score=[77,71,75,76]; ans = 85 85 ans = 77 71 87 97 75 76

第四章 MATLAB程序设计

第四章 MATLAB程序设计

第二节 选择结构
2.1 if 语句
在MATLAB中,if 语句有三种格式
1、单分支if 语句
语句格式为: if 条件 语句组 end 当逻辑表达式的值为真时,执行该结 构中的执行语句,执行完之后继续向 下进行;若为假,则跳过结构中的内 容,向下执行。
实例分析
例4.4 当x是整数矩阵时,输出x的值。
程序3:
x=input('输入x='); y=cos(x+1)+sqrt(x*x+1);
u=cos(x+1);
v= sqrt(x*x+1); y=u+v end if x~=10
if x~=10
y=x*sqrt(x+sqrt(x));
end
y
y=x*sqrt(x+sqrt(x))
end
第二节 选择结构
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else if-elseif的执行方式为:如果逻辑表达式1 的值为真,则执行语句1;如果为假,则判 语句组m+1 断逻辑表达式2,如果为真,则执行语句2, end 否则向下执行。
3、多分支if语句
实例分析
y
实例分析
例4.11 求
ye
0.5 x
sin( x

6
)
定积分。
a=0;b=3*pi;n=1000; h=(b-a)/n; x=a:h:b; f=exp(-0.5*x).*sin(x+pi/6);
for i=1:n
s(i)= (f(i)+f(i+1))*h/2; end s=sum(s)

第4章Matlab的其他函数库

第4章Matlab的其他函数库

求值
采用polyval函数可以求出当多项式中的未知 数为某个特定值时该多项式的值。 例:求上例中x=1时的值。 p=[2 -6 3 0 7]; polyval(p,1) ans = 6
常用的多项式函数
函数 roots poly polyval polyvalm residue polyfit polyder conv deconv
第4章 Matlab的其他函数库
第1节 数据分析数据库 4.1.1 基本的数据分析
基本数据处理功能是按列进行,行向则表示数 据的不同的样本。P63表 例 data=[154 49 83 67;158 99 81 75;155 100 68 86;145 63 75 96;145 63 75 96;... 141 55 65 75;155 56 64 85;147 89 87 77;147 96 54 100;145 60 76 67] std(标准差)指各列中N个元素与该列平均值的 平方和开方 trapz(求积分)梯形法求积分近似求元素和
4.3.3 多项式拟合
P=polyfit(x,y,n) x,y为是已知的N个数据点坐标的变量,其 长度为N,n是用来拟合的多项式的次数, p是求出的多项式的系数,n+1个系数

x=0:0.1:1;y=[0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2]; a1=ployfit(x,y,1); xi=linspace(0,1); yi1=polyval(a1,xi);plot(x,y,'o',xi,yi1,'b'),hold on a2=polyfit(x,y,2);yi2=polyval(a2,xi);plot(x,y,'o',xi,yi2,'m');hol d on a3=polyfit(x,y,3);yi3=polyval(a3,xi);plot(x,y,'o',xi,yi3,'r');hold on a9=polyfit(x,y,9);yi9=polyval(a9,xi);plot(x,y,'o',xi,yi9,'c');hold on a10=polyfit(x,y,10);yi10=polyval(a10,xi);plot(x,y,'o',xi,yi10,'g ');hold on
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常识上,r应比当时活期存款月利率略高一 些。我们用活期存款月利率0.0198/12 作为 迭代初值,用fzero求解 >>clear; fun=inline('25.2*(1+r)^360-((1+r)^360-… 1)/r*0.1436' ,'r') >>r=fzero(fun,0.0198/12); >>R=12*r 得年利率为5.53%. (你知道最新利率吗?)
x→x(1) → y →x(2)
4.2 函数极值MATLAB指令 函数极值MATLAB指令
min(y) max(y) 返回向量y的最小值 返回向量y的最大值
[x,f]=fminbnd(fun,a,b) x返回一元函数y=f(x)在[a,b]内的 局部极小值点,f返回局部极小值 fun为函数句柄或inline。 [x,f]=fminsearch(fun,x0) x返回多元函数y=f(x)在初始值x0 附近的局部极小值点,f返回局部极小值. x, x0均为向量。
0 0 0.5 1
4.2 最小二乘拟合MATLAB指令 MATLAB指令
假设已知经验公式 假设已知经验公式y=f(c,x)(c和x均可为向量 要求根 和 均可为向量 均可为向量), 确定参数c.这 据一批有误差的数据(x 据一批有误差的数据 i,yi), i=0,1,…,n, 确定参数 这 样的问题称为数据拟合。 最小二乘法就是求 使得均方误差最小化 最小二乘法就是求c使得均方误差最小化 Q(c)=
MATLAB数学实ቤተ መጻሕፍቲ ባይዱ MATLAB数学实验
第四章 函数和方程
第四章 函数和方程
4.1 预备知识:零点、极值和最小二乘法 预备知识:零点、 4.2 函数零点、极值和最小二乘拟合的 函数零点、 MATLAB指令 MATLAB指令 4.3 计算实验:迭代法 计算实验: 4.4 建模实验:购房贷款的利率和最佳订货 建模实验: 量
4.1 预备知识:极值 预备知识:
设x为标量或向量,y=f(x)是x∈D上的标量值函数。 如果对于包含x=a的某个邻域 ,有 f(a)≤f(x) (f(a)≥f(x))对任意x∈成立, 则称a为f(x)的一个局 部极小(大)值点。 如果对任意x∈D,有f(a)≤f(x)(f(a)≥f(x))成立, 则称a为f(x)在区域D上的一个全局极小(大)值点。
x返回一元或
多元函数Fun在x0附近的一个零点, f返回Fun在x的函数值, 应该接近0; h返回值如果大于0, 说明计算结果可靠, 否则计算结果不可靠。
例3 求函数y=xsin(x2-x-1)在(-2, -0.1)内的 零点 >> fun=inline('x*sin(x^2-x-1)','x') >> fzero(fun,[-2 -0.1]) 例4 求方程组在原点附近的解 1 x 4x y + 10 e =1 x + 4y + 1 x2 = 0 8
对于Logistic模型 解得有两个不动点0和1-1/a 当0≤a<1, 在[0,1]内有一个不动点0, 且由|g’(0)| =a<1,可知它是稳定的, 说明资源匮乏时,昆虫趋于消亡;
当a>1, 不动点0不再稳定; 当1<a≤3,由|g’ (1-1/a)| =|2-a|<1可知 不动点1 - a -1稳定,说明资源适当时, 昆虫稳定于一定数量。
例8 .下面是《新民晚报》2000年3月30日 上的一则房产广告:
建筑面积 总价 30%首付 70%按揭 月还款 85.98 m 36 万 10.8 万
2
30 年
1436 元
不难算出,你向银行总共借了25.2万, 30年内共要还51.696万, 这个案例中贷款年利率是多少呢?
解 设xk为第k个月的欠款数, a为月还款数, r为月利率。 xk+1 = (1+r) xk- a 那么 xk = (1+r) xk-1- a = (1+r)2 xk-2 – (1+r)a – a =…… = (1+r)k x0 – a[1+(1+r)+……+(1+r)k-1] = (1+r)k x0 – a[(1+r)k-1]/r 根据 a=0.1436, x0=25.2, x360=0 得到 25.2(1+r)360 – 0.1436[(1+r)360-1]/r=0 很难用roots求解!
c= lsqnonlin (Fun,c0) 使用迭代法搜索最 优参数c. 其中Fun是以参数c(可以是向量) 为自变量的函数,表示误差向量 y-f(c,x)(x, y为数据), c0为参数c的近似值,作为迭代初值
c=lsqcurvefit(Fun2,c0, x, y) 从外部输入数据, 这里Fun2为两变量c和x的函数 f(c, x)
4.2 函数零点MATLAB指令 函数零点MATLAB指令
x=fzero(Fun, x0) 返回一元函数Fun的一 个零点,其中Fun为函数句柄、 内嵌函数或字符串表达方式。 x0为标量时, 返回函数在x0附近的零点; x0为向量[a, b]时, 返回在[a,b]中的零点
[x,f,h]=fsolve(Fun, x0) 其中x0为迭代初值;
( yi f (c, xi ))2 ∑
i=0
n
当f关于 是线性函数 问题转化为一个线性方程组求解, 关于c是线性函数 问题转化为一个线性方程组求解, 关于 是线性函数,问题转化为一个线性方程组求解 且其解存在唯一。 且其解存在唯一。 如果f关于 是非线性函数, 关于c是非线性函数 如果 关于 是非线性函数,问题转化为函数极值问题
4.4 建模实验:最佳订货量 建模实验:
每次订货需要收取一定量的生产准备费。 没用完的配件,要在仓库里储存一段时间,为 此要付出储存费。 若订货量很小,则需频繁定货,造成生产准备 费的增加; 反之,若订货量很大,定货周期延长而使生产 准备费减少但会造成储存费的增加。 如何确定合适的订货量?
2.线性化拟合 . 线性最小二乘拟合可直接用求解超定线 性方程组的方法,计算速度快且唯一。 非线性最小二乘拟合的缺点是求解结果 依赖于初值的选取,可能会陷于局部极小 值而难以求得真解。 常常将有些非线性函数拟合问题转化为 线性问题求解。 例7 .用函数y=aebx 拟合例2的数据
4.4 建模实验:购房贷款的利率 建模实验:
4.1 预备知识:零点 预备知识:
非线性方程 f (x) = 0 若对于数α有f (α) = 0, 则称α为方程的解或根,也 称为函数f (x)的零点 若f (α) = 0, f ’(α)≠0 则α称为单根。 若有k >1, f (α) = f ’(α) = …= f (k-1)(α) = 0,但f (k)(α)≠0 , 称为k重根 非线性方程求解通常用数值方法求近似解,常见 的有二分法、牛顿法等 非线性方程(组)f (x) = 0, x=(x1, x2, …, xn), f=(f1, f2, …, fm)
a>3,出现两个周期2解,且3<a<1+ 6 周期2轨道稳定。 迭代开始发生所谓倍周期分岔, 从周期2,周期4,…,周期2 n,… 直到 a∞ = 3.569945672…。 说明a在[3,a∞]取值时, 昆虫数量呈现规律性振荡。 a >a∞ 迭代序列几乎杂乱无章, 即所谓混沌。
*混沌的特征 (i)初值敏感性: 两个任意近的点出发的两条轨迹 迟早会分得很开; (ii)遍历性: 任意点出发的轨迹总会进入 [0,1]内任意小的开区间。
t =1
2k1r (经济批量订货公式) x= k2
4.4 建模实验:混沌 建模实验:
线性迭代要么收敛于它的不动点,要么 趋于无穷大。 不收敛的非线性迭代可能会趋于无穷大, 也可能趋于一个周期解, 但也有可能在一个有限区域内杂乱无章 地游荡,这类由确定性运动导致的貌似 随机的现象称为混沌现象
*平衡与稳定 若g (α) = α,称α为映射g(x)的不动点 若对于不动点附近的初始值x0,迭代收敛于 此不动点,称此不动点是稳定的 *昆虫数量的Logistic模型 xk+1 = a x k (1 - x k), 0≤a≤4 xk表示第k代昆虫数量(1表示理想资源 环境最大可能昆虫数量)。 a为资源系数 0≤a≤4保证了xk在区间(0,1)上封闭。
4.3 计算实验:迭代法 计算实验:
1 迭代法
迭代法是从解的初始近似值x0(简称初值)开 始,利用某种迭代格式x k+1 = g (x k ), 求得一近似值序列x1, x2, …, xk, xk+1, … 逐步逼近于所求的解α(称为不动点)。 最常用的迭代法是牛顿迭代法,其迭代格式 为
xk +1
例9(蛛网图)我们用蛛网图来显示混 沌的遍历性。 yk = a x k (1 - x k), xk+1 = yk 蛛网图正好显示迭代计算 x0, y0, x1, y1,……的一系列变化过程。 eg4_9.m
1
1
0.5
0.5
0 0 1 0.5 1
0 0 1 0.5 1
0.5
0.5
0 0 0.5 1
解 先作一些必要的假设将问题简化 1)汽车工厂对配件的日需求量是恒定的, 每日为r件; 2)所订配件按时一次性交货, 生产准备费每次k1元; 3)储存费按当日实际储存量计算, 储存费每日每件k2元; 4)你的工厂不允许缺货。 设一次订货x件,则订货周期为 T= x/r, 第t天的储存量为 q(t)= x-r t, 0<t<T
MATLAB中一个多项式用系数降幂排列 向量来表示。
例1.求多项式x3 + 2 x2 - 5的根 p=[1 2 0 -5]; x=roots(p) , polyval(p,x) 例2.用2次多项式拟合下列数据. x 0.1 0.2 0.15 0 -0.2 0.3 y 0.95 0.84 0.86 1.06 1.50 0.72
相关文档
最新文档