matlab复习总结.docx

上传人:b****6 文档编号:6285450 上传时间:2023-01-05 格式:DOCX 页数:14 大小:268.24KB
下载 相关 举报
matlab复习总结.docx_第1页
第1页 / 共14页
matlab复习总结.docx_第2页
第2页 / 共14页
matlab复习总结.docx_第3页
第3页 / 共14页
matlab复习总结.docx_第4页
第4页 / 共14页
matlab复习总结.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

matlab复习总结.docx

《matlab复习总结.docx》由会员分享,可在线阅读,更多相关《matlab复习总结.docx(14页珍藏版)》请在冰豆网上搜索。

matlab复习总结.docx

matlab复习总结

Matlab复习

MATLAB表达式的基本运算符

指令行中的标点符号运用

几千年前的哲人柏拉图曾经说过,哲学源于惊奇,因为对于世界的认识和人生的追问总在惊奇与困惑之中产生。

惊奇仿佛一道光明,点亮了人类的智慧之光。

然而是激情为我们打开了思想与知识的大门,使我们在惊奇中审视到自身的无知,并为自己的无知感到震惊;我们不再掩饰无知,而是勇敢地置身于其中,在茫然无知之境中展开思考。

我相信,激情是一种思想性的力量,惟有充满激情的人才能深长地沉入思考之中。

 

——王佐才

掌握冒号‘:

’,‘[]’,‘find’,‘>’,‘<‘,’()’等的用法

Matlabsolution:

%%example1

x=rand(1,5)%生成1行5列的随机数

x(3)%找到x的第三个元素值

x([1,2,5])%找到x的第1,2,5元素值

x(1:

3)%找到x的第1到3号元素值

x(3:

end)%找到x的第3到最后一位元素值

x(3:

-1:

1)%找到x的第3到最第一位元素值,倒序

x(find(x>0.5))%找到x中大于0.5的元素值

x([1,2,3,4,4,3,2,1])

x(3)=0%对x中的第3号元素赋值为0

x([1,4])=[1,1]%对x中的第1,4号元素赋值为1

例8:

一个由若干行数字组成的数表,从第二行起每一行中的数字均等于其肩上的两个数之和,最后一行仅有一个数,第一行是前100个正整数从小到大排成行,则最后一行的数是多少。

a0=[1:

100];

forj=1:

99

fori=1:

length(a0)-1

a(i)=a0(i)+a0(i+1);

end

a0=[];

a0=a;

a=[];

end

a0

✓利用左除运算符的直接解法

例1:

解:

A=[1,2,3;-1,3,7;9,0,3]

b=[1,4,7]'

x=A\b

x1=inv(A)*b

x2=pinv(A)*b

例1:

(1)Tofindthezeroofcosinebetween1and2(求出cos(x)在区间[12]之间的零解)x=fzero(@cos,[12])

(2)Tofindazeroofthefunctionf(x) = x3 – 2x – 5

(求出方程f(x) = x3 – 2x – 5的零解)

Solution:

writeananonymousfunctionf:

f=@(x)x.^3-2*x-5;

Thenfindthezeronear2:

z=fzero(f,2)

先创建一个函数文件

functiony=fun(x)

y=[x

(1)-0.5*sin(x

(1))-0.3*cos(x

(2)),x

(2)-0.5*cos(x

(1))+0.3*sin(x

(2))];

然后求解

x0=[0.1,0.1];

fsolve(@fun,x0,optimset('fsolve'))

例4:

求f(x)=x3-2x-5在[0,5]内的最小值

f=@(x)x.^3-2*x-5;

x=fminunc(f,0)

x1=fminsearch(f,0)

例5:

求f(x,y,z)=x+y2/4x+z2/y+2/z在(0.5,0.5,0.5)附近的最小值

先定义函数

functionf=myfun5(p)

x=p

(1);

y=p

(2);

z=p(3);

f=x+y^2/4/x+z^2/y+2/z;

再求解

x=fminunc('myfun5',[0.5,0.5,0.5])

x1=fminsearch('myfun5',[0.5,0.5,0.5])

第三章数值积分与微分

例1:

计算下式在区间[0,2]之间的定积分

f=@(x)1./(x.^3-2*x-5);

Q=quad(f,0,2);

f=@(x)x.*sin(x)./(1+(cos(x)).^2);

Q=quad(f,0,2)

例3:

F=@(x,y)y*sin(x)+x*cos(y);

Q=dblquad(F,pi,2*pi,0,pi)

第三章数值积分与微分

 

例4:

(1)求f(x)的导数表达式

(2)画出f(x)在[-3,3]区间的图像。

(x=[-3:

0.1:

3])

(3)

在同一坐标系中画出f(x)在[-3,3]区间的导数值的理论值和数值计算值。

(x=[-3:

0.1:

3])

Matlab命令

x=[-3:

0.1:

3];

f=sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2;

subplot(2,2,1)

plot(x,f)

f_1exact=(3*x.^2+4*x-1)./2./sqrt(x.^3+2*x.^2-x+12)+1./6./(x+5).^(5/6)+5;

f_1diff=diff(f)./diff(x);

subplot(2,2,2)

plot(x,f_1exact,'k-',x(1:

end-1),f_1diff,'r--')

例1.X由下面的matlab命令流生成的矩阵:

X(:

1)=ones(10,1);

X(1,1)=100;

X(10,1)=0.01;

rand('state',1);

randn('state',1)

X(:

2)=rand(10,1);

X(:

3)=randn(10,1);

X(:

3)=2*abs(min(X(:

3)))+X(:

3);

求其平均值,中值,几何平均值,调和平均值,标准差,方差。

X_mean=mean(X)

X_mid=median(X)

X_gmean=geomean(X)

X_hmean=harmmean(X)

X_std=std(X)

X_var=var(X)

例2.x由下面的matlab命令流生成的矩阵:

randn('state',1)

rand('state',31)

x=randn(100,1);

y=rand(100,1);

subplot(2,2,1),hist(x,7)

subplot(2,2,2),histfit(x,20)

subplot(2,2,3),hist(y,7)

subplot(2,2,4),histfit(y,20)

例3.理解下面的MATLAB程序

mu=3;sigma=0.5;

x=mu+sigma*[-3:

-1,1:

3];

yf=normcdf(x,mu,sigma);

P=[yf(4)-yf(3),yf(5)-yf

(2),yf(6)-yf

(1)];

xd=1:

0.1:

5;

yd=normpdf(xd,mu,sigma);

%

fork=1:

3

xx{k}=x(4-k):

sigma/10:

x(3+k);

yy{k}=normpdf(xx{k},mu,sigma);

end

subplot(1,3,1),plot(xd,yd,'b');holdon

fill([x(3),xx{1},x(4)],[0,yy{1},0],'g')

text(mu-0.5*sigma,0.3,num2str(P

(1))),holdoff

subplot(1,3,2),plot(xd,yd,'b');holdon

fill([x

(2),xx{2},x(5)],[0,yy{2},0],'g')

text(mu-0.5*sigma,0.3,num2str(P

(2))),holdoff

subplot(1,3,3),plot(xd,yd,'b');holdon

fill([x

(1),xx{3},x(6)],[0,yy{3},0],'g')

text(mu-0.5*sigma,0.3,num2str(P(3))),holdoff

1伪线性最小二乘

借助fminsearch指令进行非线性最小二乘估计

 

第一步:

生成data函数

function[x,y,STDY]=xydata(k_noise)

%xydata.m

x=[0:

0.2:

4]';

yo=3*exp(-0.4*x)+12*exp(-3.2*x);

rand('seed',234)

y_noise=k_noise*(rand(size(x))-0.5);

y=yo+y_noise;

STDY=std(y_noise);

第二步生成目标函数

functionE=twoexps(a,x,y)

%twoexps.m

x=x(:

);y=y(:

);Y=a

(1)*exp(-a(3)*x)+a

(2)*exp(-a(4)*x);

E=sum((y-Y).^2);

第三步:

求解并画图

k_noise=0.3;

[x,y,STDY]=xydata(k_noise);

a0=[1111];

options=optimset('fminsearch');

options.TolX=0.01;

options.Display='off';

a=fminsearch(@twoexps,a0,options,x,y);

chi_est=twoexps(a,x,y)/STDY^2;

freedom=length(x)-length(a0);

Q=1-chi2cdf(chi_est,freedom);

%

y_est=a

(1)*exp(-a(3)*x)+a

(2)*exp(-a(4)*x);

ych='y_e_s_t=';

a1=num2str(a

(1));a2=num2str(a

(2));a3=num2str(a(3));a4=num2str(a(4));

char_y_est=[ych,a1,'*exp(-',a3,'*x)+',a2,'*exp(-',a4,'*x)'];

plot(x,y,'b+');holdon,plot(x,y_est,'r');holdoff,axis([0,4,0,16])

text(0.4,14,'y=3*exp(-0.4*x)+12*exp(-3.2*x)')

text(0.4,12,char_y_est),text(2.5,9,['chi2=',num2str(chi_est)])

text(2.5,7,['freedom=',num2str(freedom)])

text(2.5,5,['Q=',num2str(Q)])

1.M文件和函数文件概述

用MATLAB语言编写的程序成为M文件。

M文件是由若干MATLAB命令组合在一起构成的。

MATLAB中提供的内部函数以及各种工具箱都是M文件。

通常M文件分为两类:

命令文件(scriptfile)和函数文件(functionfile).它们的扩展名都是.m

主要的区别在于

(1)命令文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可以返回输出参数

(2)命令文件可以直接运行,函数文件需要以函数调用的方式运行。

.M文件的创建

建立新的M文件:

(1)从MATLAB主窗口的File菜单中选择New菜单项,再选择scriptfile

(2)单击MATLAB主窗口工具栏上的Newscript命令按钮,创建M文件

函数文件的基本结构

Function输出参数=函数名(输入参数)

注释说明部分

函数体语句

函数文件调用时的格式为:

函数名(输入参数)

1.顺序结构

顺序结构式按照程序语句的排列顺序依次执行。

例如求一元二次方程的根:

ax^2+bx+c=0

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]

2.选择结构

选择结构是根据给定的条件成立或不成立,分别执行不同的语句。

MATLAB中用于实现选择结构的语句有if语句,switch语句,和try语句。

(1)if语句

单分支if语句结构

If条件

语句组

End

 

例1计算分段函数值x=-5,x=3时的值

x=-5

ifx<=0

y=(x+sqrt(pi))/exp

(1)

else

y=log(x+sqrt(1+x*x))/2

end

y=-1.1873

x=3

ifx<=0

y=(x+sqrt(pi))/exp

(1)

else

y=log(x+sqrt(1+x*x))/2

end

y=0.9092

3.循环结构

循环是指按照给定的条件,重复执行指定的语句,这是一种十分重要的程序结构。

MATLAB提供两种实现循环结构的语句:

for语句和while语句

(1)for语句for语句的格式为:

for循环变量=表达式1:

表达式2:

表达式3

循环体语句

end

例2计算分段函数值x=[-3:

0.1:

3]时的值,并画出图形

x0=[-3:

0.1:

3];

fori=1:

1:

length(x0)

x=x0(i);

ifx<=0

y(i)=(x+sqrt(pi))/exp

(1)

else

y(i)=log(x+sqrt(1+x*x))/2;

end

end

subplot(2,2,1)

plot(x0,y,'r--*')

例3:

一个由若干行数字组成的数表,从第二行起每一行中的数字均等于其肩上的两个数之和,最后一行仅有一个数,第一行是前100个正整数从小到大排成行,则最后一行的数是多少。

a0=[1:

100];

forj=1:

99

fori=1:

length(a0)-1a(i)=a0(i)+a0(i+1);

end

a0=[];

a0=a;

a=[];

enda0

7-3求下列方差的根

(1)

(2)

(3)

(4)

7-4求非线性方程的数值解。

(1)

(2)

7-7求函数在指定区间的最大值

(1)

(2)

1求二重定积分

(1)

=

(2)

=

2分别用矩形、梯形(trapz)公式计算由表中数据给出的定积分I=

表被积函数f(x)数据表

k

1234567

0.30.50.70.91.11.31.5

0.38950.65980.91471.16111.39711.62121.8325

3设X由

区间内均匀分布的10个点组成,求向量sinX的1~3阶差分。

4设

用2种不同的方法求函数f(x)的数值导数,并在同一个坐标系中做出f(x)的图像。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1