天津大学matlab讲义应用基础第五章.docx

上传人:b****8 文档编号:9156866 上传时间:2023-02-03 格式:DOCX 页数:21 大小:97.18KB
下载 相关 举报
天津大学matlab讲义应用基础第五章.docx_第1页
第1页 / 共21页
天津大学matlab讲义应用基础第五章.docx_第2页
第2页 / 共21页
天津大学matlab讲义应用基础第五章.docx_第3页
第3页 / 共21页
天津大学matlab讲义应用基础第五章.docx_第4页
第4页 / 共21页
天津大学matlab讲义应用基础第五章.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

天津大学matlab讲义应用基础第五章.docx

《天津大学matlab讲义应用基础第五章.docx》由会员分享,可在线阅读,更多相关《天津大学matlab讲义应用基础第五章.docx(21页珍藏版)》请在冰豆网上搜索。

天津大学matlab讲义应用基础第五章.docx

天津大学matlab讲义应用基础第五章

第5章符号运算

MATLAB的工具包SymbolicMathToolbox以MAPLE为内核,实现了符号计算,如符号表达式与矩阵的操作、微积分、线性代数、方程求解、化简与展开、特殊数学函数等。

5.1符号表达式和符号矩阵的创建

1、用字符串创建符号表达式

如:

f='sin(x)^2';

%创建函数sin2(x)赋给f

q1='a*x^2+b*x+c=0';

%创建方程赋给q1

de='Dy+y^2=1';

%创建微分方程y'+y2=1并赋给de

2、创建符号矩阵的方法

1)直接使用Sym命令矩阵

如:

k=sym('[a,b;c,d]')

运行结果如下:

k=

[a,b]

[c,d]

msy=sym('[1/(a+x),sin(x),(b-x)/(a+x);2*x,1/(8+x^2),exp(x)]')

运行结果如下:

msy=

[1/(a+x),sin(x),(b-x)/(a+x)]

[2*x,1/(8+x^2),exp(x)]

1)使用Sym命令创建符号变量,再利用数组运算生成符号矩阵

如,下面的命令生成5阶符号矩阵:

t=sym('t');%创建符号变量t

[I,J]=meshgrid(1:

5)

H=1./(I+J-t)

运行结果如下:

I=

12345

12345

12345

12345

12345

J=

11111

22222

33333

44444

55555

H=

[1/(2-t),1/(3-t),1/(4-t),1/(5-t),1/(6-t)]

[1/(3-t),1/(4-t),1/(5-t),1/(6-t),1/(7-t)]

[1/(4-t),1/(5-t),1/(6-t),1/(7-t),1/(8-t)]

[1/(5-t),1/(6-t),1/(7-t),1/(8-t),1/(9-t)]

[1/(6-t),1/(7-t),1/(8-t),1/(9-t),1/(10-t)]

3)使用Sym命令把数值矩阵化成符号矩阵

设A为数值矩阵,则:

msy=Sym(A)

将A转化为符号矩阵msy。

如:

A=[123;789;456]

M=sym(A)

运行结果如下:

A=

123

789

456

M=

[1,2,3]

[7,8,9]

[4,5,6]

3、符号矩阵元素的引用和修改

Sym(S,i,j)

%引用符号矩阵元素Sij

A=[123;789;456]

M=sym(A)

disp('第3行2列的元素为:

')

sym(M,3,2)

运行结果如下:

A=

123

789

456

M=

[1,2,3]

[7,8,9]

[4,5,6]

第3行2列的元素为:

ans=

5

5.2符号表达式与矩阵的基本运算

1、加、减、乘、除

Symadd(A,B)

%A+B与sym(A)+sym(B)等价

SymSub(A,B)

%A–B与sym(A)-sym(B)等价

Symmul(A,B)

%A×B与sym(A)*sym(B)等价

Symdiv(A,B)

%A/B与sym(A)/sym(B)等价

2、幂

sympow(S,p)

%Sp与sym(S)^sym(p)等价

若S为标量符号表达式,p可为标量符号或数值表达式;

若S为符号矩阵,p必须为整数

5.3因式分解、展开和简化及微积分

设s是一个符号表达式。

1、因式分解

factor(s)

如:

f=sym('x^4-5*x^3+5*x^2+5*x-6')

factor(f)

运行结果如下:

f=

x^4-5*x^3+5*x^2+5*x-6

ans=

(-1+x)*(x-2)*(x-3)*(x+1)

2、展开

expand(s)

如:

f=sym('x^4-5*x^3+5*x^2+5*x-6')

g=factor(f)

expand(g)

运行结果如下:

f=

x^4-5*x^3+5*x^2+5*x-6

g=

(-1+x)*(x-2)*(x-3)*(x+1)

ans=

x^4-5*x^3+5*x^2+5*x-6

3、化简

simplify(s)

如:

simplify(sin(x)^2+3*x+cos(x)^2-5)

运行结果如下:

ans=

-4+3*x

 

4、微分

diff(S)

%对符号S关于缺省变量x求微分

diff(S,'v')

%对符号S关于变量v求微分

diff(S,'v',n)

%对符号S关于变量的n次微分

如:

f='x^4-a^3*sin(x)^3+b*x^2+c*x-d'

diff(f)

diff(f,'a')

diff(f,'a',2)

运行结果如下:

f=

x^4-a^3*sin(x)^3+b*x^2+c*x-d

ans=

4*x^3-3*a^3*sin(x)^2*cos(x)+2*b*x+c

ans=

-3*a^2*sin(x)^3

ans=

-6*a*sin(x)^3

5、积分

int(S)

求不定积分

int(S,'v')

int(S,a,b)

求定积分

int(S,'v',a,b)

如:

f='sin(x)^3+b*x-d'

int(f)

diff(f,'b')

F=sym('[a*x,b*x^2;c*x^3,d*x]')

disp('对x求微分')

diff(F)

disp('对x求积分')

int(F)

运行结果如下:

f=

sin(x)^3+b*x-d

ans=

-1/3*sin(x)^2*cos(x)-2/3*cos(x)+1/2*b*x^2-d*x

ans=

x

F=

[a*x,b*x^2]

[c*x^3,d*x]

对x求微分

ans=

[a,2*b*x]

[3*c*x^2,d]

对x求积分

ans=

[1/2*a*x^2,1/3*b*x^3]

[1/4*c*x^4,1/2*d*x^2]

6、泰勒级数展开

taylor(S)

求泰勒级数前6项

taylor(S,'v')

taylor(S,n)求泰数级数前n项

如:

f=taylor(sym('log(x+1)/(x-5)'))

disp('整理为:

')

pretty(f)

运行结果如下:

f=

-1/5*x+3/50*x^2-41/750*x^3+293/7500*x^4-1207/37500*x^5

整理为:

2413293412075

-1/5x+3/50x----x+----x------x

750750037500

7.求解常微分方程

DSOLVE('eqn1','eqn2',...)

其中:

eqn1,eqn2为单个的常微分方程。

在这些常微分方程中用字母D表示微分,D2,D3等表示二重、三重微分。

任何D后所跟的字母为因变量。

自变量缺省为t。

例如:

1)求单个常微分方程的解

dsolve('D2y-2(1-x^2)*Dy+x=0')

ans=

1/2*x*t+C1+C2*exp(2*t)

2)求带初值的单个常微分方程的解

y=dsolve('(Dy)^2+y^2=1','y(0)=0')

y=

[sin(t)]

[-sin(t)]

3)求常微分方程组的解

[f,g]=dsolve('Df=3*f+4*g',

'Dg=-4*f+3*g')

f=

exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)

g=

exp(3*t)*(-sin(4*t)*C1+cos(4*t)*C2)

4)求带初值的常微分方程组的解

[f,g]=dsolve('Df=f+g','Dg=-f+g',...

'f(0)=1','g(0)=2')

f=

exp(t)*(cos(t)+2*sin(t))

g=

exp(t)*(-sin(t)+2*cos(t))

此外,还有求解线性代数等函数。

请自学。

第6章MATLAB应用开发

在MATLAB中可将C或Fortran源程序转换为m文件。

还可以在MSVisualC++、MSVisualBASIC、MSFortranPowerStation4.0、DigitalVisualFortran5.0等开发环境中执行MATLAB命令或m文件。

也可使用其编译程序MCC将m文件转换为C或C++程序,从而生成独立于MATLAB执行环境的应用程序。

6.1将C或Fortran源程序转换为m文件

1、设置C或Fortran编译程序的目录

mex–setup

2、生成.DLL文件

mex源程序

如:

mexyprimef.foryprimefg.for

mexyprime.c

6.2在其它语言中调用MATLAB

以VisualBasic为例

DimSasobject

Dimtasstring

Dimxasstring

SetS=createobject("MATLAB.application")

t=s.execute("surf(peaks)")

x=imputbox("输入")

6.3MATLAB应用界面开发工具的使用

MATLAB的应用界面开发工具有下面五个:

属性编辑器(propedit)

菜单编辑器(menuedit)

对象排列工具(align)

回调命令编辑器(cbedit)

控制面板(guide)

在建立一图形窗口后,拍入上面的前四个命令可分别使用相应工具。

使用guide命令可启动界面开发控制面板,它包含属性编辑器,菜单编辑器,对象排列工具,回调命令编辑器的全部功能。

使用这些工具,系统会引导用户逐步完成图形用户界面的设计。

设计完成后,会自动生成一个m文件。

下面简介控制面板的使用。

1)建立一图形窗口

例如:

surf(peaks);

colormap(hot)

shadinginterp

title('hot色图函数效果')

建立一图形窗口如下:

2)启动控制面板

拍入命令:

guide

出现如下的GuideControlPanel窗口:

单击PropertyEditor按钮出现属性编辑器窗口,设置对象的属性:

单击MenuEditor按钮出现菜单编辑器窗口,设计所需要的菜单:

单击CallbackEditor按钮出现回调编辑器窗口,设置菜单和按钮被选中时的动作:

单击AlignmentTool按钮出现对齐工具窗口:

在增加菜单axis及其子菜单Boxon和Boxoff、设置XLABEL为“深度”后,图形窗口如下所示:

当退出Guide窗口、并保存变化的结果,生成了如下的m文件:

functionfig=guidemo()

%Thisisthemachine-generatedrepresentationofaHandleGraphicsobject

%anditschildren.Notethathandlevaluesmaychangewhentheseobjects

%arere-created.Thismaycauseproblemswithanycallbackswrittento

%dependonthevalueofthehandleatthetimetheobjectwassaved.

%ThisproblemissolvedbysavingtheoutputasaFIG-file.

%

%Toreopenthisobject,justtypethenameoftheM-fileattheMATLAB

%prompt.TheM-fileanditsassociatedMAT-filemustbeonyourpath.

%

%NOTE:

certainnewerfeaturesinMATLABmaynothavebeensavedinthis

%M-fileduetolimitationsofthisformat,whichhasbeensupersededby

%FIG-files.Figureswhichhavebeenannotatedusingtheploteditortools

%areincompatiblewiththeM-file/MAT-fileformat,andshouldbesavedas

%FIG-files.

loadguidemo

h0=figure('Color',[0.80.80.8],...

'Colormap',mat0,...

'FileName','D:

\matlabcai\guidemo.m',...

'PaperPosition',[18180576432],...

'PaperUnits','points',...

'Position',[469237338280],...

'Renderer','zbuffer',...

'Tag','Fig1',...

'ToolBar','none');

h1=uimenu('Parent',h0,...

'Label','axis',...

'Tag','&axisuimenu1');

h2=uimenu('Parent',h1,...

'Callback','set(gca,''Box'',''on'')''',...

'Label','Boxon',...

'Tag','Subuimenu1');

h2=uimenu('Parent',h1,...

'Callback','set(gca,''Box'',''off'')',...

'Label','Boxoff',...

'Tag','axisBoxoff');

h1=axes('Parent',h0,...

'View',[-37.530],...

'CameraUpVector',[001],...

'Color',[111],...

'ColorOrder',mat1,...

'Position',[0.13017751479289940.11071428571428570.77514792899408280.8142857142857143],...

'Tag','Axes1',...

'XColor',[000],...

'XGrid','on',...

'YColor',[000],...

'YGrid','on',...

'ZColor',[000],...

'ZGrid','on');

h2=surface('Parent',h1,...

'CData',mat2,...

'EdgeColor','none',...

'FaceColor','interp',...

'Tag','Axes1Surface1',...

'VertexNormals',mat3,...

'XData',mat4,...

'YData',mat5,...

'ZData',mat6);

h2=text('Parent',h1,...

'Color',[000],...

'HandleVisibility','off',...

'HorizontalAlignment','center',...

'Position',[-228.8782724349788-307.1119945659601101.0108740618285],...

'String','hot色图函数效果',...

'Tag','Axes1Text4',...

'VerticalAlignment','bottom');

set(get(h2,'Parent'),'Title',h2);

h2=text('Parent',h1,...

'Color',[000],...

'HandleVisibility','off',...

'Position',[-246.6029180022339-356.685057254068172.07463546117215],...

'String','深度',...

'Tag','Axes1Text3',...

'VerticalAlignment','top');

set(get(h2,'Parent'),'XLabel',h2);

h2=text('Parent',h1,...

'Color',[000],...

'HandleVisibility','off',...

'HorizontalAlignment','right',...

'Position',[-278.700848987954-331.272303985345272.43334916283318],...

'Tag','Axes1Text2',...

'VerticalAlignment','top');

set(get(h2,'Parent'),'YLabel',h2);

h2=text('Parent',h1,...

'Color',[000],...

'HandleVisibility','off',...

'HorizontalAlignment','center',...

'Position',[-284.8033645023182-294.219703779407487.26018216482238],...

'Rotation',90,...

'Tag','Axes1Text1',...

'VerticalAlignment','baseline');

set(get(h2,'Parent'),'ZLabel',h2);

ifnargout>0,fig=h0;end

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

当前位置:首页 > 工作范文 > 制度规范

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

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