数学软件实验报告实验二

  • 格式:doc
  • 大小:133.00 KB
  • 文档页数:24

数学软件实验报告学院名称:理学院专业年级:姓名:学号:课程:数学软件实验报告日期:2014年10月25日实验二MATLAB的基本数值运算一.实验目的MATLAB具有非常强大的数值计算能力,对各种常量(包括一般常量和固定常量)、各种变量(包括数值变量、字符变量、单元形变量和结构变量)熟悉其用法,向量及其运算,矩阵及其运算,数组及其运算,多项式及其各种运算,线性方程组的求解,数值统计的基本函数及其应用,简单插值函数,简单优化函数,微分方程数值解的基本函数等。

二.实验要求理解常量、变量、向量、矩阵、多项式等概念,掌握向量在MATLAB中的表示,熟练掌握矩阵及其运算,数组及其运算,多项式运算,线性方程组求解,了解数值统计的基本函数,简单插值函数,简单优化函数,微分方程数值解的基本函数等。

三.实验内容实验一:第二节MATLAB基本数学运算一:简单矩阵的建立与矩阵元素(1)直接输入矩阵>> a=[1 2 3;4 5 6;7 8 9]a =1 2 34 5 67 8 9(2)通过语句或者函数产生矩阵>> b=sin(a)b =0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894 0.4121 >> c=a+0.1*(1+b/2)c =1.14212.14553.10714.06225.05216.08607.13288.14959.1206 >> d=ones(3)+eye(3)d =2 1 11 2 11 1 2(3)利用文件创建矩阵load filel.txt>> filelfilel =1 2 34 5 67 8 9(4)从外部数据文件中装入已有矩阵load filel.txt>> x=[-1.3 sqrt(3) (1+2+3)*4/5] x =-1.3000 1.7321 4.8000 定义或修改某一元素load filel.txt>> x(5)=abs(x(1))x =-1.3000 1.7321 4.8000 0 1.3000小矩阵生成大矩阵load filel.txt>> e=[a,b]e =1.00002.00003.0000 0.8415 0.9093 0.14114.00005.00006.0000 -0.7568 -0.9589 -0.27947.00008.00009.0000 0.6570 0.9894 0.4121 >> e=[a,d]e =1 2 3 2 1 14 5 6 1 2 17 8 9 1 1 2大矩阵抽取元素变为小矩阵f=e(:,[2,5])f =2 15 28 12:常量,变量与表达式t='how about this character string't =how about this character string>> v='I can''t find the litter'v =I can't find the litter>> A='Hello'A =Hello>> B=2*AB =144 202 216 216 2223:命令窗口常用的命令与标点符号的使用help cdCD Change current working directory.CD directory-spec sets the current directory to the one specified.CD .. moves to the directory above the current one.CD, by itself, prints out the current directory.WD = CD returns the current directory as a string.Use the functional form of CD, such as CD('directory-spec'), when the directory specification is stored in a string.See also pwd.Overloaded methods:ftp/cdReference page in Help browserdoc cd二:算数运算1:加减法运算a=[1 2;3 4];b=ones(2);c=a+bc =2 34 5>> d=[1 2 3];e=a+d??? Error using ==> plusMatrix dimensions must agree.>> c1=c-1c1 =1 23 42:乘除法运算f=a*bf =3 37 7>> g=b*ag =4 64 6>> h=pi*ah =3.1416 6.28329.4248 12.5664>> F=a.*cF =2 612 20>> G=c.*aG =2 612 20>> a=[1 2 3;4 2 6;7 4 9] b=[4 1 2] a*x=b ??? a=[1 2 3;4 2 6;7 4 9] b=[4 1 2] a*x=b |Error: Unexpected MATLAB expression.四a=rand(3),b=rand(3),a =0.8147 0.9134 0.27850.9058 0.6324 0.54690.1270 0.0975 0.9575b =0.9649 0.9572 0.14190.1576 0.4854 0.42180.9706 0.8003 0.9157>> A1=a/bA1 =0.7571 0.3356 0.03230.2462 -0.4341 0.7590-0.9446 0.4093 1.0035 >> A2=a\bA2 =-2.5775 -1.3591 -0.0618 3.0365 2.0130 -0.0863 1.0462 0.8110 0.9734 >> A3=b\aA3 =-1.8233 -1.1435 -0.2172 2.7367 2.1961 0.3685 -0.3205 -0.6006 0.9537 >> A4=b/aA4 =0.8306 0.3601 -0.29911.0730 -0.8795 0.6307 0.3442 0.6978 0.4577 >> A5=(a'/b')'A5 =-1.8233 -1.1435 -0.2172 2.7367 2.1961 0.3685 -0.3205 -0.6006 0.9537 >> A6=a.\bA6 =1.1843 1.0479 0.5095 0.1740 0.7676 0.7712 7.6433 8.2046 0.9564 >> A7=a.\bA7 =1.1843 1.0479 0.5095 0.1740 0.7676 0.77127.6433 8.2046 0.9564>> A8=1./A7A8 =0.8444 0.9542 1.96285.7469 1.3028 1.29670.1308 0.1219 1.04563.乘幂运算g=[1 2 3 4;5 6 7 8;9 10 11 12]g =1 2 3 45 6 7 89 10 11 12>> g=[1 2 3 4;5 6 7 8;9 10 11 12];>> g.^2 %对g中的元素求平方ans =1 4 9 1625 36 49 6481 100 121 144>> h=[1 1 1 1;2 2 2 2;3 3 3 3];>> g.^(h-1) %求以g元素为底,以h中相应元素减一为幂指数产生的矩阵ans =1 1 1 15 6 7 881 100 121 144>> 2.^g %以2为底,以中相应元素为幂指数产生的矩阵ans =2 4 8 1632 64 128 256512 1024 2048 40964:转置运算x=[1 2 3;4 5 6;7 8 9]x =1 2 34 5 67 8 9>> y=x'y =1 4 72 5 83 6 9>> a=[1+2i 2-3i;4+5i 5-6i]a =1.0000 +2.0000i 2.0000 -3.0000i4.0000 +5.0000i 5.0000 -6.0000i >> b=a'b =1.0000 -2.0000i 4.0000 - 5.0000i2.0000 +3.0000i 5.0000 + 6.0000i >> b=a.'b =1.0000 +2.0000i 4.0000 + 5.0000i2.0000 -3.0000i 5.0000 - 6.0000i >> conj(a')ans =1.0000 +2.0000i 4.0000 + 5.0000i2.0000 -3.0000i 5.0000 - 6.0000i 三:关系运算与逻辑运算1:关系运算a=[-1 2 4;5 4 8];b=[0 1 5;5 1 2];>> c=a>bc =0 1 00 1 12.逻辑运算(1)逻辑运算与(&)a=[-1 2 4;5 4 8];b=[0 1 5;5 1 2]; >> c=a&bc =0 1 11 1 1(2)逻辑运算与(|)c=a|bc =1 1 11 1 1(3)逻辑非> c=~ac =0 0 00 0 0四:建立特殊数据组1.用特殊函数建立数组2.用小数组建大数组a=[1 2;3 4]a =1 23 4>> b=[a,eye(2,3);ones(3,2),rand(3)]b =1.00002.0000 1.0000 0 03.00004.0000 0 1.0000 01.0000 1.0000 0.7922 0.0357 0.6787 1.0000 1.0000 0.9595 0.8491 0.7577 1.0000 1.0000 0.6557 0.9340 0.7431 3.利用冒号建立数组x=1:5x =1 2 3 4 5>> y=0:pi/4:piy =0 0.7854 1.5708 2.3562 3.1416 >> z=6:-1:1z =6 5 4 3 2 1>> a=0:0.2:1;b=exp(-a).*sin(a);[a',b']ans =0 00.2000 0.16270.4000 0.26100.6000 0.30990.8000 0.32231.0000 0.30964.空数组x=[]x =[]>> y=1:-3y =Empty matrix: 1-by-0>> a=[1 2 3;4 5 6]a =1 2 34 5 6>> a(:,3)=[]a =1 24 5>>实验四第一节1、由文件生成和保存矩阵>> clear %清除当前工作空间中的变量>> myfile %执行M文件A =3 4 -1 1 -9 106 5 07 4 -161 -4 7 -1 6 -82 -4 5 -6 12 -8-3 6 -7 8 -1 18 -4 9 1 3 0>> who %查看工作空间中的变量Your variables are:A>> load txefile.txt %装入txtfile.txt文件>> whoYour variables are:A>> save matfile %保存工作空间变量到matfile.mat文件中>> clear>> who>> load matfile>> whoYour variables are:A>> txtfile %显示变量txtfile的内容2、由函数生成矩阵>> eye(5,6)ans =1 0 0 0 0 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 00 0 0 0 1 0>> eye(5)ans =1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1>> ones(8)ans =1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> zeros(4)ans =0 0 0 00 0 0 00 0 0 00 0 0 0>> rand(3)ans =0.8147 0.9134 0.27850.9058 0.6324 0.54690.1270 0.0975 0.9575>> diag(4)ans =43、符号矩阵的创建>> exam=sym('[1,x/a,sin(x);y/x,1+1/y,tan(x/y);1=0,3+3,4*r]') ??? Error using ==> sym.sym at 198Error using ==> sym.sym at 165Error using ==> maplemex`;` unexpected>> syms x y z a b cf=a*x^2+b*x+c;g=x*y*z;h=(f+g)*b/a;e1=sym( 'a*x^2+b*x+c=0');>> e2=sym('x*y*z=0');>> e3=sym('h=0');M=[1 2 3 xf g h ye1 e2 e3 z]M =[1 , 2 , 3 , x][ ][ 2 ][ 2 b (a x + x y z + b x + c) ][a x + b x + c , z y x , -------------------------- , y][ a ][ ][ 2 ][a x + b x + c = 0 , z y x = 0 , h = 0 , z]>> syms x y c ra=sin((c+(r-1)*3));b=exp(r+(c-1)*4);c=(c+(r-1)*3)*x+(r+(c-1)*4)*y;A=symmat(3,3,a)forC =1 2 34、矩阵的修改>> A=rand(5)A =0.8147 0.0975 0.1576 0.1419 0.65570.9058 0.2785 0.9706 0.4218 0.03570.1270 0.5469 0.9572 0.9157 0.84910.9134 0.9575 0.4854 0.7922 0.93400.6324 0.9649 0.8003 0.9595 0.6787>> A([1 3],:)=[]A =0.9058 0.2785 0.9706 0.4218 0.03570.9134 0.9575 0.4854 0.7922 0.93400.6324 0.9649 0.8003 0.9595 0.6787 >> A(2:3,2:3)=eye(2)A =0.9058 0.2785 0.9706 0.4218 0.03570.9134 1.0000 0 0.7922 0.93400.6324 0 1.0000 0.9595 0.6787 二:矩阵与向量的基本运算(1)矩阵的运算A+txtfile %矩阵加法ans =4 6 3 7 -12 1213 14 16 2 12 -239 7 27 0 11 -212 11 33 7 11 19 25 29 33 -8 2410 0 15 -2 3 5>> A-txtfile %矩阵减法ans =2 2 -5 -5 -6 8-1 -4 -16 12 -4 -9-7 -15 -13 -2 1 -14-8 -19 -23 -19 13 -17-15 -13 -43 -17 6 -226 -8 3 4 3 -5>> A*txtfile %矩阵乘法ans =-55 -85 -180 -245 80 -176127 174 348 250 -13 5275 110 220 194 -41 16182 129 260 283 -91 24453 76 138 21 21 -3698 151 284 165 -33 176>> 3*A+7*txtfile %数乘矩阵ans =16 26 25 45 -48 4467 78 112 -14 68 -9759 65 161 4 53 1876 93 211 73 29 3975 151 231 199 -52 16438 16 69 -18 9 35>> A' %矩阵转置ans =3 6 1 2 -3 84 5 -4 -4 6 -4-1 0 7 5 -7 91 7 -1 -6 8 1-9 4 6 12 -1 310 -16 -8 -8 1 0>> txtfile/m %矩阵右除ans =0.9337 -0.1687 1.5921 -0.2383 0.7938 0.05965.9273 -0.0162 5.5138 3.0371 1.8754 -2.08087.2759 -0.7621 6.9845 3.3142 3.4372 -1.56959.1056 -1.0471 10.1798 2.7908 4.9550 -1.491411.3503 -1.9092 13.2537 2.7827 7.2407 -0.96152.8057 -0.3272 2.3154 1.3410 0.9586 -0.8219 >> A\txtfile %矩阵左除ans =-2.1783 -3.1414 -6.0051 -3.2105 0.1122 -3.21685.0944 7.5348 14.2952 7.7724 -0.7515 5.66993.6894 5.4000 10.14104.5299 0.0113 4.50380.2344 0.4858 0.8027 0.2483 -0.2744 1.50492.12163.3950 6.38344.2520 -1.2436 3.79150.9706 1.6754 3.1624 2.7091 -1.1237 2.6093 det(A)ans =245295det(txtfile)ans =inv(A) %求逆矩阵ans =-0.0737 0.0604 -0.2297 0.0067 -0.0804 0.10420.3142 0.0036 0.2408 0.1605 0.1259 -0.14360.2099 -0.0395 0.3155 0.0364 0.0834 -0.0663-0.0827 -0.0123 0.0088 -0.0777 0.0779 0.08780.0134 -0.0335 -0.0159 0.1129 0.1061 0.03370.0377 -0.0525 -0.0110 0.0469 0.0698 0.0411 >> pinv(txtfile) %求广义逆矩阵ans =-0.0187 -0.0022 0.0340 -0.0084 0.0040 -0.03980.0363 0.0274 -0.0564 0.0272 -0.0092 0.08490.0214 0.0265 -0.0275 0.0221 -0.0037 0.0387-0.0247 -0.0217 0.0469 -0.0110 0.0244 -0.1694 -0.1294 -0.0547 0.2146 -0.0805 0.0231 -0.2439 -0.0621 -0.0659 0.0926 -0.0516 0.0248 -0.0000 矩阵的迹,翻书,条件数与秩:trace(A)ans =8>> trace(txtfile)ans =41>> norm(A)ans =28.5398>> norm(A,1)ans =43cond(A)ans =18.6569>> cond(A,1)ans =35.3343>> rank(A)ans =6>> rank(txtfile)ans =4第二节;解线性方程组(1)其次线性方程组的求解A为奇次线性方程组对应的系数矩阵A=[1 -2 3 -4;0 1 -1 1;-1 0 -1 2;1 -3 4 -5]; >> a=null(A)a =-0.1402 0.80440.4723 -0.33210.8044 0.14020.3321 0.4723若求方程中含有最多零元素个数的解:a=null(A,'r')a =-1 21 -11 00 1(2)恰定方程组求解A=rand(100)*1.e2;x=ones(100,1);b=A*x;ticy=inv(A)*b;tocElapsed time is 26.456033 seconds.err=norm(y-x)err =1.1380e-012res=norm(A*y-b)res =4.6191e-010ticy=A\b;tocElapsed time is 54.438244 seconds.err=norm(y-x)err =1.2703e-012res=norm(A*y-b)res =1.7015e-011tica=det(A);for i=1:100Elapsed time is 0.009440 seconds > B=A; >> B(1:100,i)=b;>> y(i)=det(B)/a;>> end>> tocElapsed time is 188.643259 seconds. >> err=norm(y-x)err =8.2723e-013>> rex=norm(A*y-b).三:超定方程组求解:A=[3 4 5;6 1 2;4 -5 7;8 2 4];>> b=[3 2 4 6]';>> rank(A)ans =3>> x=A\bx =0.41490.04480.3737>> A*x-bans =0.29241.2815-1.0966四:欠定方程组求解:A=[3 4 5;6 1 2;4 -5 7;8 2 4];>> b=[3 2 4 6]';>> rank(A)ans =3>> x=A\bx =0.41490.04480.3737>> A*x-bans =0.29241.28150.0516-1.0966>> A=[1 -2 3;0 1 -1;-1 0 -1;1 -3 4];>> b=[4 -3 -4 1]';>> x=pinv(A)*b %利用广义逆矩阵求解x =2.25491.21571.0392>> y=A\bWarning: Rank deficient, rank = 2, tol = 4.6151e-015. y =3.4706-0.1765>> B=null(A) %求方程的标准正交基基础解系接B =-0.57740.57740.5774>> C=null(A,'r') %求方程的有理标准正交基础系解C =-111五:求线性方程组的非负最小二乘解A=[3.4336 -0.5238 0.6710 -0.1527 -0.5238 3.2833 -0.7302 -0.2689 0.6710 -0.7302 4.0261 -0.0984 -0.1572 -0.2689 -0.0984 2.7507]A =Columns 1 through 93.4336 -0.5238 0.6710 -0.1527 -0.5238 3.2833 -0.7302 -0.26890.6710Columns 10 through 16-0.7302 4.0261 -0.0984 -0.1572 -0.2689 -0.0984 2.7507>> b=[-1 1.5 2.5 -2]'b =-1.00001.50002.5000-2.0000四、实验总结这次实习回顾了实验一的内容,然后做了实验四的部分。