您的位置:首页 > 编程语言 > MATLAB

A guide to Matlab for Beginners and Experienced Users——学习笔记【1】

2009-01-01 13:29 766 查看
   元旦放假4天,好好学习学习这本书,也算给自己的将来加个筹码吧。   这本书作者似乎多了点,Brian R.Hunt,Ronald L.Lipsman,Jonathan M.Rosenberg,with Kevin R.Coombes,John E.Osborn,and Garret J.Stuck,看着这么多,似乎想起了中国人出书的习俗:编、编著与著的差别,希望我挑的这本不会是编或者编著吧,要不实在是有点郁闷了,寄希望与Cambridge University Press吧,希望他们出的书都比较有水平!
一、Getting Started   第一章的内容似乎有点无聊,大概包括:平台和软件版本、安装与启动、如何运行和输入命令、使用帮助、如何退出。不过有一句话我很喜欢:We know you are anxious to get started using MATLAB,so we will keep this chapter chief.国外人写书的确和国内风格不同,很有种以人为本的意思。 
二、Matlab基础
2.1 输入输出>> 1/2 + 1/3ans =    0.8333
>> ezplot('x^3-x')输出[-6,6]的x^3-x的图像,效果很不错,但是需要注意,只能使用单引号,双引号会报错。
2.2 算术   如上所示,可以使用matlab来做算术运算,加减乘除分别使用+-*/来计算,这和我们小学所学的内容对应,呵呵,还是很简单的了。>> 3^2 - (5 + 4)/2 + 6*3ans =   22.5000   对于matlab而言,运算符周围使用空格是一种风格,可以使得你的代码更加清晰易懂,这不是强制的。返回值默认为4位小数,默认的返回值被赋值给变量ans,你当然可以对ans变量进行运算>> ans^2 + sqrt(ans)ans =   510.9934   如果你想给变量另外赋值,也很简单直观>> u=cos(10)u =   -0.8391   如果你希望给出更多的小数位,可以如下来做>> format long>> cos(10)ans =  -0.83907152907645   类似的,format short可以变回原来的状态。
2.3 代数>> syms x y>> (x-y)*(x+y) ans = (x-y)*(x+y) >> expand(ans) ans = x^2-y^2 >> factor(ans) ans = (x-y)*(x+y)上面的expand表示公式展开,factor表示分解因式>> simplify((x^3-y^3)/(x-y)) ans = x^2+x*y+y^2 >> simplify((x^3+y^3)/(x+y)) ans = x^2-x*y+y^2 >> simplify((x^5-y^5)/(x-y)) ans = x^4+y*x^3+y^2*x^2+y^3*x+y^4simplify表示公式化简2.4 符号表达式的计算>> cos(pi/2)ans =  6.1232e-017>> cos(sym('pi/2')) ans = 0   上面可以看出,MATLAB在计算时是以浮点数进行的,因此对于pi/2的值通过正常的计算方式不会给出结果0,要获得正确的结果就需要将它转化为符号计算。>> sym('1/2')+sym('1/3')ans =5/6   这个结果也比较有趣。   如何设定结果的精度呢?>> vpa(pi,100) ans = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068   即计算pi的后面99位   当然我很BT的算了pi的后面10万位,结果放在这里了http://liuxin-blog.appspot.com/files/pi.html2.5 解方程>> solve('x^5-1=0') ans = [                                                1][  1/4*5^(1/2)-1/4+1/4*i*2^(1/2)*(5+5^(1/2))^(1/2)][ -1/4*5^(1/2)-1/4+1/4*i*2^(1/2)*(5-5^(1/2))^(1/2)][ -1/4*5^(1/2)-1/4-1/4*i*2^(1/2)*(5-5^(1/2))^(1/2)][  1/4*5^(1/2)-1/4-1/4*i*2^(1/2)*(5+5^(1/2))^(1/2)] >> solve('x^5+4*x-3=0') ans = [ -1.1497018561916804173894195017101-1.0229129378579045309241618357603*i][ -1.1497018561916804173894195017101+1.0229129378579045309241618357603*i][                                      .70611491577418302526709165976282][  .79664439830458890475587367182865-1.0767566643318152363781938845220*i][  .79664439830458890475587367182865+1.0767566643318152363781938845220*i]   很easy的了,不过就是不知道MATLAB是怎么算的,应该来说,这个东东对工科的挺好,对理科就一般了。理科生嘛,建议去读读M文件,知道计算的原理。>> solve('x+y=1','y')ans =-x+1   换言之,如果方程个数少于自变量个数的话,那么不可能解出最终结果的,因此需要定制表达变量。>> [x,y]=solve('x^2+y^2-z^2=0','x^2-y^2-3*z=1') x = [  1/2*(2+2*z^2+6*z)^(1/2)][ -1/2*(2+2*z^2+6*z)^(1/2)][  1/2*(2+2*z^2+6*z)^(1/2)][ -1/2*(2+2*z^2+6*z)^(1/2)] y = [  1/2*(-2+2*z^2-6*z)^(1/2)][  1/2*(-2+2*z^2-6*z)^(1/2)][ -1/2*(-2+2*z^2-6*z)^(1/2)][ -1/2*(-2+2*z^2-6*z)^(1/2)]

>> z=solve('x^2+y^2-z^2=0','x^2-y^2-3*z=1')z =     x: [4x1 sym]    y: [4x1 sym]>> z.x(1),z.x(2) ans = 1/2*(2+2*z^2+6*z)^(1/2) ans = -1/2*(2+2*z^2+6*z)^(1/2)   查找最近的结果>> fzero(inline('exp(-x)-sin(x)'),0)ans =    0.5885>> fzero(inline('exp(-x)-sin(x)'),2)ans =    3.0964>> fzero(inline('exp(-x)-sin(x)'),5)ans =    6.28502.6 向量与矩阵创建向量:>> x=[1 2 3 4 5]x =     1     2     3     4     5>> x=[2,3,4,5,6]x =     2     3     4     5     6>> x=1:9x =     1     2     3     4     5     6     7     8     9>> x=1:2:9x =     1     3     5     7     9向量元素的提取:>> x(1)ans =     1
转置>> x'ans =     1     3     5     7     9向量的操作>> xx =     1     3     5     7     9>> yy =     0     2     4     6     8>> x+yans =     1     5     9    13    17>> x-yans =     1     1     1     1     1>> x.*yans =     0     6    20    42    72>> y./xans =         0    0.6667    0.8000    0.8571    0.8889创建矩阵>> A=[1,2,3,4;2,3,4,5;3,4,5,6;4,5,6,7]A =     1     2     3     4     2     3     4     5     3     4     5     6     4     5     6     7>> xx =     1     2     3     4>> A*x'ans =    30    40    50    602.7 内置函数   例如 sqrt,sin,cos,tan,atan,log,exp等通用函数,也包括gamma,erf,besselj等更专用的函数。2.8 用户自定义函数   使用inline可以自定义函数>> f=inline('x^2','x')f =     Inline function:     f(x) = x^2>> f(2)ans =     42.9 画图ezplot>> ezplot('x^2',[-5,5])
   ezplot全民叫做easy plot,从名字就知道了,它可以提供简易的画图功能。   为了让函数看起来更像函数,可以先将变量符号化>> syms 'x'>> ezplot(x^2-x+sin(x),[-2,2])>> title "function 1"
   该命令可以设置图像的标题>> axis([-2,2,-0.5,5.5])
   该命令可以调整坐标轴,前面2个表示x坐标轴,后面2个表示y坐标轴plot>> x=1:9x =     1     2     3     4     5     6     7     8     9>> y=2:10y =
     2     3     4     5     6     7     8     9    10
>> plot(x,y)
   简单地说,plot可以对传入的x,y变量进行画图,当然,改变x,y就可以改变画图方式,如此可用性就很大了。>> x=1:9;y=sin(x)+cos(x);>> plot(x,y)   如何将多个图形画在同一个图形上,在matlab中有多种方式>> ezplot(’exp(-x)’, [0 10])>> hold on>> ezplot(’sin(x)’, [0 10])>> hold off>> title ’exp(-x) and sin(x)’
>> X = 0:0.1:10;>> plot(X, exp(-X), X, sin(X))2.10 M文件format longx = [0.1, 0.01, 0.001];y = sin(x)./x
将上面3行存在文件中f1.m,切换到该目录,在命令行输入文件名f1即可得到输出y =   0.99833416646828   0.99998333341667   0.99999983333334
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐