一些有关MATLAB使用的基础习题

    最近在上微分方程数值解的课,下面是作业中关于MATLAB基本用法的题,大家有需要可作参考一下。



下面是代码和结果:

一、MATLAB运算基础
1.求表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量
代码:
1. x=[2 1+2i;-0.45 5];  
2. z2=1/2*log(x+(1+x^2)^(1/2))  
3. a=-3.0:0.1:3.0;  
4. z3=0.5*((exp(0.3*a)-exp(-0.3*a)).*sin(a+0.3))+log(0.5*(0.3+a))  
结果:
(1)z2 =  0.7182 - 0.0088i   0.7461 + 0.5434i
   -0.1473 - 1.5679i   1.1555 - 0.0016i
(2)z3为的值如下图所示


workspace:


2.矩阵的计算
代码:
1. A=[12 34 -4;34 7 87;3 65 7];  
2. B=[1 3 -1;2 0 3;3 -2 7];  
3. det(B)  
4. s1=A*B  
5. s2=A.*B  
6. s3=A^3  
7. s4=A.^3  
8. s5=A/B  
9. s6=B\A  
10. s7=[A,B]  
11. s8=[A([1,3],:);B^2]  
结果:
(1) A*B & A.*B
A*B =      A.*B =
    68    44    62 12   102     4
   309   -72   596 68     0   261
   154    -5   241 9  -130    49
(2) A^3 & A.^3
A^3 =
    37226      233824       48604
   247370      149188      600766
    78688      454142      118820
A.^3 =
     1728       39304         -64
    39304         343      658503
       27      274625         343
(3) A/B & B/A
A/B =
   16.4000  -13.6000    7.6000
   35.8000  -76.2000   50.2000
   67.0000 -134.0000   68.0000
A\B=
   109.4000 -131.2000  322.8000
   -53.0000   85.0000 -171.0000
   -61.6000   89.8000 -186.2000
(4) [A,B] & [A([1,3],:);B^2]
[A,B] =
    12    34    -4     1     3    -1
    34     7    87     2     0     3
3    65     7     3    -2     7
[A([1,3],:);B^2] =
    12    34    -4
     3    65     7
     4     5     1
    11     0    19
    20    -5    40
二、MATLAB矩阵分析与处理
3.建立一个的矩阵,求它行列式值、迹、秩和范数。
代码:
1. C=[1 2 4 6 4;3 6 5 7 8;4 0 8 3 2;7 9 5 2 1;1 1 0 3 4]  
2. detC=det(C)  
3. trC=trace(C)  
4. rC=rank(C)  
5. norm_1=norm(C,1)  
6. norm_2=norm(C)  
7. norm_inf=norm(C,'inf')  
8. norm_F=norm(C,'fro') 
结果:
建立的矩阵:


行列式:detC =-2209
迹:trC =21
秩:rC =5
1-范数:norm_1 =22
2-范数:norm_2 =20.4759
无穷范数:norm_inf =29
F-范数:norm_F =23.1517
4.求解线性方程组
代码:
1. format rat  
2. A=[1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6]  
3. b=[0.95;0.67;0.52]  
4. X=A\b  
5. cond(A)  
6. b1=[0.95;0.67;0.53]  
7. X1=A\b1 
结果:
(1) 方程的解
X1 =
       6/5     
       3/5     
3/5
(2) 时方程的解
X2 =
       3       
     -33/5     
      33/5
可以看出,只改变了0.01,而解X中:改变了1.8; 改变了7.2;改变了6.
因此,稍微变动,解的相对变化是较大的。
(3) 计算矩阵的条件数并分析
cond(A) = 9473/7
可以看出这个线性方程组系数矩阵A的条件数是很大的。而条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。这道题中b很小的扰动就引起了X很大的变化,这就是矩阵A条件数大的表现。
三、选择结构程序设计
5.求分段函数的值
代码:
1. %f.m  
2. function y=f(x)  
3. if x<0&&x~=-3  
4.     y=x^2+x-6;  
5. elseif x>=0&&x<5&&x~=2&&x~=3  
6.     y=x^2-5*x+6;  
7. else  
8.     y=x^2-x-1;    
9. end  
10. %main function
11. i=0  
12. for x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0]  
13.     i=i+1;  
14.     y(i)=f(x)  
15. end 
y = 14  11  2  1  -1/4  5  19
四、循环结构程序设计
6.求的近似值
代码:
1. format short  
2. n1=1:100;  
3. pai=sqrt(6*sum(1./(n1.*n1)))  
4. n2=1:1000;  
5. pai=sqrt(6*sum(1./(n2.*n2)))  
6. n3=1:10000;  
7. pai=sqrt(6*sum(1./(n3.*n3))) 
结果:
n=100 =3.1321
n=1000 =3.1406
n=10000 =3.1415
7.计算迭代公式
代码:
1. x(1)=1;    
2.      a=input('a:');    
3.      b=input('b:');    
4.      r1=(-b+sqrt(b^2+4*a))/2   
5.      r2=(-b-sqrt(b^2+4*a))/2  
6.      if a<=0||b<=0    
7.          disp('error!');    
8.      end    
9.      for i=1:500                %控制迭代次数为500次  
10.      x(i+1)=a/(b+x(i));  
11.            if abs(x(i+1)-x(i))<=0.00001  %迭代终止条件  
12.            break;    
13.            end    
14.      end 
结果:
(a, b)=(1, 1)
准确值:0.6180 / -1.6180
迭代结果:0.618032786885246(14次迭代)
(a, b)=(8, 3)
准确值:1.7016 / -4.7016
迭代结果:1.70156355863351(14次迭代)
(a, b)=(10, 0.1)
准确值:3.1127 / -3.2127
迭代结果:3.11266814976286(425次迭代)
五、函数文件
8.函数文件fx.m,可矩阵输入,得到同阶矩阵输出
代码:
1. function f=fx(x)  
2. f=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);  
3. end  
六、高层绘图操作
9.代码:
1. x=-pi/2:pi/20:pi/2;  
2. subplot(2,2,2);  
3. y=sqrt(cos(x));  
4. plot(x,y,'r');  
5. title('cos(x)')  
6. subplot(2,2,3);  
7. x=-2:0.02:2;y=-4:0.04:4;  
8. [X,Y]=meshgrid(x,y);  
9. Z=X.^2/4+Y.^2/16;  
10. mesh(X,Y,Z);  
11. title('Z=X^2/4+Y^2/16') 
结果:


七、数据处理与多项式计算
10. 三次样条插值
代码:
1. t1=6:2:18;  
2. Tempreture_inside1=[18 20 22 25 30 28 24];  
3. Tempreture_outside1=[15 19 24 28 34 32 30];  
4. t2=6.5:2:18.5;  
5. Tempreture_outside=interp1(t1,Tempreture_outside1,t2,'spline')  
6. Tempreture_inside=interp1(t1,Tempreture_inside1,t2,'spline') 
结果:
6:30~18:30室外温度(℃):
Tempreture_outside =
   15.6553   20.3355   24.9089   29.6383   34.2568   30.9594   31.1218
6:30~18:30室内温度(℃):
Tempreture_inside =
   18.5020   20.4986   22.5193   26.3775   30.2051   26.8178   23.7966
11. 5次拟合多项式
代码:
1. x=[1  11  21  31  41  51  61  71  81  91  101];  
2. y=[0  1.0414  1.3222  1.4914  1.6128  1.7076  1.7853  1.8513  1.9085  1.9590  2.0043];   
3. p=polyfit(x,y,5)  
4. xi=1: 101;  
5. yi=polyval(p,xi);  
6. plot(x,y,'o',xi,yi,'-');  
7. axis([0 105 0 2.5]) 
结果:
拟合多项式:
在[1,101]区间的函数曲线:


八、数值微积分与方程数值求解
12.求定积分
代码:
1. %f2.m  
2. function f=f2(x)  
3. f=(log(1+x))./(1+x.^2);  
4. end  
5. %f1.m  
6. function fun=f1(t)  
7. fun=sqrt(cos(t.^2)+4*sin(4*t.^2)+1);  
8. end  
9. %main function  
10. I1=quad(@f1,0,2*pi)  
11. I2=quad(@f2,0,2*pi)
结果:
= 6.7992 + 3.1526 =0.9997
13.数值方法求解线性方程组
代码:
1. A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2]  
2. b=[-4,13,1,11]'  
3. x=A\b         %x1=inv(A)*b 
结果:
X=  0.6667
   -1.0000
    1.5000
   -0.0000
九、符号计算基础与符号微积分
14.化简表达式
代码:
1. s1=sym('sin(byte1)*cos(byte2)-cos(byte1)*sin(byte2)');  
2. S1=simplify(s1)  
3. s2=sym('(4*x^2+8*x+3)/(2*x+1)');  
4. S2=simplify(s2)  
结果:
(1) S1 =sin(byte1 - byte2)
(2) S2 =2*x + 3
15.极限与导数
代码:
1. syms x;  
2. f1=(x.*(exp(sin(x))+1)-2*(exp(tan(x))-1))./sin(x)^3;  
3. lim=limit(f1,x,0)  
4. y=(1-cos(2*x))/x;  
5. dy=diff(y,x)  
6. d2y=diff(y,x,2) 
结果:
(1) lim =-1/2
(3) dy =(2*sin(2*x))/x + (cos(2*x) - 1)/x^2
d2y =(4*cos(2*x))/x - (4*sin(2*x))/x^2 - (2*(cos(2*x) - 1))/x^3
16.求积分
代码:
1. syms x;  
2. f1=1/(1+x.^4+x.^8);  
3. I1=int(f1)  
4. f2=(x.^2+1)/(x.^4+1);  
5. I2=int(f2,x,0,inf) 
结果:
(1) I1 =-(3^(1/2)*(atan((2*3^(1/2)*x)/(3*((2*x^2)/3 - 2/3))) - atanh((2*3^(1/2)*x)/(3*((2*x^2)/3 + 2/3)))))/6
(3) I2 =(pi*2^(1/2))/2
十、级数与方程符号求解
17. 级数符号求和
代码:
1. syms n;  
2. s=symsum(1/(2*n-1),1,10) 
结果:
S =31037876/14549535
18. 微分方程初值问题的符号解与数值解
代码:
1. %ode.m  
2. function dy=ode(x,t)  
3. dy=zeros(2,1);  
4. dy(1)=t(2);  
5. dy(2)=-4*t(2)-29*t(1);  
6. end  
1. clc;  
2. s=dsolve('D2y+4*Dy+29*y=0','y(0)=0','Dy(0)=15','x')  
3. x=0:0.1:10;  
4. y=3*sin(5*x).*exp(-2*x);  
5. plot(x,y)  
6. hold on  
7. [x,y]=ode45(@ode,[0 10],[0 15]);  
8. plot(x,y(:,1),'ro')  
9. xlabel('x'),ylabel('y')  
10. legend('exact','numerical')  
结果:
符号解:y = 3*sin(5*x)*exp(-2*x)
精确解与数值解对比图:


19. 求微分方程组的通解
代码:
1. [x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z','t')  
2. x=simplify(x)   
3. y=simplify(y)  
4. z=simplify(z)  
结果:
x =C1*exp(2*t) + C2*exp(-t)
y =C1*exp(2*t) + C2*exp(-t) + C3*exp(-2*t)

z =C1*exp(2*t) + C3*exp(-2*t)



PS:不知道怎么在CSDN中上传PDF,有些图片没法显示。如果知道怎么上传文件,麻烦留言~谢谢!

  • 106
    点赞
  • 441
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值