您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > matlab与科学计算(简单易学-老师的ppt-很不错)
matlab科学工程计算同济大学数学系陈雄达chenxiongda@gmail.com2teapotdemo3目录matlab入门matlab基础编程matlab作图matlab工具箱matlab上机操作matlab综合训练matlab命令速查4matlab入门matlab是什么matlab不是什么matlab集成环境matlabABC5matlab入门没有matlab就没有乐趣。M.N.NachtigalS.C.ReddyL.N.Trefethen关于迭代法的CopperMountain论文集19906matlab是什么一个可视化的计算程序,广泛使用于从个人计算机到超级计算机范围内的各种计算机上包括命令控制、可编程,上百个预先定义命令和函数有许多强有力的命令,能完成大量的高级矩阵处理强有力的二维、三维图形工具能与其他程序一起使用25个(不断增加中)不同的工具箱应用于特殊的应用领域工业研究与开发的有力工具数学教学,尤其线代,数值分析,科学计算方面的教研工具电子学,控制理论,物理学等工程科学方面的教研工具经济学,化学和生物学等有计算问题的所有领域中的教学与研究名字取自矩阵实验室(matrixlaboratory)7matlab不是什么不是万能的解决工具不是最高性能的编程语言受计算条件限制,不能解决超大型实际问题不能解决工具箱之外的问题种类--需要编写接口、算法甚至工具箱8集成环境窗口系统–ViewDesktopLayoutFivePanel–历史命令/变量和文件管理/命令窗口菜单系统File/Edit/View/Web/Window/Help按钮9matlabABC提示符注释符%续行...123+45-67+8–9x=3*sin(pi/4)^2向量(数组)v=[135246];矩阵(二维数组)A=[13;5,246];10matlab基础编程数据结构冒号(:)矩阵操作入门标识符初等函数(elfun)初等函数(exp)函数fix,round,ceil,floor逻辑判断关系运算运算的级别matlab帮助结构化编程脚本文件函数文件11数据结构最基本的数据结构--矩阵数和向量看成为特殊的矩阵矩阵以[]为定界符,与多维数组等同字符串看成为每个元素都是单个字符的向量,也可以有字符矩阵高维数组细胞(cell)结构体(struct)12冒号(:)冒号a:s:b从a开始,步长为s,界为b例如1:2:10[13579]7:-2:0[7531]1:6[123456]6:2[](空矩阵)13标识符文件名、变量名、函数名标识符的规定最长不超过19个字符为配合matlab的风格,采用见名知意的小写短名称以字母开头,包含数字、大小写字母、下划线变量命名规则常用从简,专用从繁矩阵大写A,B,C向量小写u,v,w,x,y,z函数小写f,g,h,fun,f1,f2常量小写alpha,beta,a,b,c14内部变量pi圆周率=3.1415926i,j虚根inf无限大eps2.2204460e-16NaN不定型(NotaNumber)内部变量的运算规则inf参与的运算NaN参与的运算15点运算(向量运算)a=[1234];b=[0123];a+bans=1357b./aans=00.50000.66670.7500b.*aans=02612a.^bans=1296416矩阵操作入门矩阵的抽取A=[816;357;492];A(2,3)得到7A(2,[321])得到[753]A([32],2:-1:1)得到[94;53]A(2,:)得到[357]A(:,end)得到[6;7;2]81635749217赋值语句A(2)=A(n-1,:)=A(2+3,2*3)=x=A(sqrt(4),x-3)=A(:)=v(end)=A(2)+2=x^2+x=A(sqrt(4),x)-3=A’=inv(A)=(x=0)=左值表达式:指向某一存储空间的表达式,放在赋值语句左边。√18初等函数(elfun)三角函数(sin,sinh,asin,asinh)指数对数(exp,log,log10,sqrt)复变函数(abs,conj,real,imag)取整取余(floor,ceil,round,mod)全部都具有向量功能:输入向量,返回对应函数值组成的向量19初等函数(exp)x=0:0.2:1x=00.20.40.60.81.0y=exp(x)y=1.001.221.491.822.222.71向量功能20函数fix,round,ceil,floorfixroundceilfloor功能朝零取整四舍五入向上取整向下取整3.141533430.61800110-2.7181-2-3-2-3-1.4142-1-1-1-221简单矩阵操作rand(n),eye(n),zeros(n)生成n阶随机、单位、零矩阵rand(2)ans=0.95010.60680.23110.4860rand(3,2)ans=0.89130.01850.76210.82140.45640.4447eye(2,3)ans=100010zeros(3)ans=00000000022diagdiag([123;456789])ans=159diag([123;456789],1)ans=26diag([159])ans=100050009diag([48],-1)ans=00040008023triu/trilA=magic(3)A=816357492U=triu(A,-1)U=816357092L1=tril(A,-1)L1=000300490L2=tril(A)L2=80035049224字符运算char([4,1,8,8,11]+100)ans=helloabs(’matlab’)ans=109971161089798eval(’exp(-pi*i)’)ans=-1+0ifeval(’sin’,pi/2)ans=1fun=’cos’;feval(fun,pi/2)ans=0字符串25字符运算fork=1:9,st=[’fun’...num2str(k)];x(k)=...feval(st,x(k));endfunctiony=fun1(x)functiony=fun2(x)str2num(’2*pi’)ans=6.2832str2num(’cos(2*pi)’)ans=1eval(’cos(2*pi)’)ans=126逻辑判断真值逻辑真(true,1)或假(false,0)逻辑运算,,=,=,==,~=例如又如pi=sqrt(10)ans=0[1:5]=pians=00011向量功能27关系运算关系运算有:与(and)and(a,b)a&b或(or)or(a,b)a|b非(not)not(a)~a异或(xor)xor(a,b)a0011b0101a&b0001a|b0111~a1100xor(a,b)011028两个特殊关系运算(any,all)仅当输入向量v每个分量为真(非零值),all(v)返回1;否则返回0。仅当输入向量v每个分量为假(零),any(v)返回0;否则返回1。any([0123])ans=1all([0123])ans=029运算的级别函数、括号算术运算逻辑运算关系运算每一个运算级别内仍有优先级的高低30matlab帮助helphelp命令名/工具箱名helphelpdocdoceigwhat列出当前matlab文件who/whos列出当前变量which寻找matlab文件或命令所在目录lookfor比较lookforcurve/helpcurve31结构化编程分支结构(if)for循环while循环嵌套结构程序规范32分支结构(if)if判断条件1执行语句1elseif判断条件2执行语句2elseif判断条件3执行语句3else执行语句n+1endiftemp10,disp(’cold!’);elseiftemp20,disp(’cool’);elseiftemp27,disp(’warm’);elseiftemp31,disp(’hot’);elsedisp(’toohot’);end33for循环for循环变量=循环值循环操作ends=0;fork=1:100,s=s+1/k^2;endfork=’helloworld’,fprintf(’%c’,k);pause(0.1);endfork=magic(3),k+1end向量功能34while循环while循环条件循环操作endwhile1,if循环条件,break;end循环操作endn=input(’n=’);whilen~=1,ifmod(n,2)==1,n=n*3+1;elsen=n/2;endendCollatz猜想35嵌套结构fork=1:9,forj=1:9,fprintf(’%d*%d=%3d’,k,j,k*j);endfprintf(’\n’);end九九乘法表36嵌套结构n=input(’n=0:’);flag=0;while~flag,nn=n;rn=0;whilenn~=0,d=mod(nn,10);rn=rn*10+d;nn=floor(nn/10);enddisp(rn)ifrn==n,flag=1;elsen=rn+n;endend输入n设置迭代指标为0当迭代不成功时(=0),保留当前n计算n的逆序为rn显示rn重新设置迭代指标或n=rn+nend%迭代不成功伪代码源代码对一个整数n,把它反过来读的数称为逆序数。如132的逆序数为231。写一个算法,输入n,若它与自己的逆序数相等,则停止;否则把它与自己的逆序数相加,重新判断。37程序规范程序按照结构缩进(matlab会自行处理)按照逻辑关系分段添加适当的注释(5%--30%)规范所有的标识符(文件名、变量名)适当增加空行、空格以保证可读性办法:参考Matlab内部程序风格38脚本文件n=input(’years:’);fork=n,ifmod(k,400)==0,disp([num2str(k)’isaleapyear’]);elseifmod(k,100)==0,disp([num2str(k)’isn’’taleapyear’]);elseifmod(k,4)==0,disp([num2str(k)’isaleapyear’]);elsedisp([num2str(k)’isn’’taleapyear’]);endend判别闰年不用这么烦吧?n=input(’years:’);fork=n,ifmod(k,400)==0|...(mod(k,4)==0&mod(k,100)~=0),disp([num2str(k)’isaleapyear’]);elsedisp([num2str(k)’isn’’taleapyear’]);endend好像简单多了...39函数文件function[p,t]=fun(n)%n:inputinteger%p:sumoffactors%t:numberoffactorsp=0;t=0;fork=1:n,ifmod(n,k)==0,p=p+k;t=t+1;endendfunction[p,t]=fun(n)%n:inputinteger%p:sumoffactors%t:numberoffactorsk=1:n;z=mod(n,k);t=sum(z==0);p=sum(k(z==0));保存为fun.m40函数的调用[z,p]=fun(15)z=24p=4x=fun(6)x=12fun
本文标题:matlab与科学计算(简单易学-老师的ppt-很不错)
链接地址:https://www.777doc.com/doc-1842306 .html