1. 程式人生 > 其它 >matlab 1到無窮_分析軟體工具 | MATLAB程式設計與應用第3版(劉衛國)課後實驗

matlab 1到無窮_分析軟體工具 | MATLAB程式設計與應用第3版(劉衛國)課後實驗

技術標籤:matlab 1到無窮matlab中input輸入多個數matlab求兩向量夾角

8d64cbc7-8614-eb11-8da9-e4434bdf6706.png

知行校園匯

記錄學習、分享乾貨、吐槽人生!

關注

9164cbc7-8614-eb11-8da9-e4434bdf6706.gif

9264cbc7-8614-eb11-8da9-e4434bdf6706.png

相關說明

  • 文章內容:MATLAB程式設計與應用·第3版(劉衛國)課後實驗

  • 所屬課程:分析軟體工具

  • 作者主頁:csdn.cxhit.com(建議電腦訪問)

9164cbc7-8614-eb11-8da9-e4434bdf6706.gif

實驗1 MATLAB系統環境與運算基礎

一、實驗目的

  1. 掌握啟動和退出MATLAB的方法。

  2. 掌握MATLAB操作介面的組成。

  3. 掌握建立矩陣的方法。

  4. 掌握MATLAB表示式的書寫規則以及常用函式的方法。

二、實驗內容

實驗1. T1、2

a364cbc7-8614-eb11-8da9-e4434bdf6706.png

以上原始碼略

a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗1.T3

ae64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

fprintf('(1):計算:z1=2*sin(85*pi/180)/(1+exp(2))')
z1=2*sin(85*pi/180)/(1+exp(2))

fprintf('(2)計算:z2=π/(x+y)')
x2=12;y2=10^-5;
z2=pi/(x2+y2)

fprintf('(3)計算:z3=1/2*log(x+sqrt(1+x^2))')
x3=[21+2*1i;-.455];
z3=1/2*log(x3+sqrt(1+x3^2))

fprintf('(4)計算:z4=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)')
a=-3.0:0.1:3.0;
z4=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗1.T4

b264cbc7-8614-eb11-8da9-e4434bdf6706.jpeg

原始碼:

fprintf('初始矩陣:')
A=[1234-4;34787;3657]
B=[13-1;203;3-27]
%第(1)題:
fprintf('A*B 的結果')
A*B
fprintf('B*A 的結果')
B*A
fprintf('A.*B 的結果')
A.*B

%第(2)題
fprintf('A^3 的結果')
A^3
fprintf('A.^3 的結果')
A.^3

%第(3)題
fprintf('A/B 的結果')
A/B
fprintf('A\\B 的結果')
A\B

%第(4)題
fprintf('[A,B] 的結果')
[A,B]
fprintf('[A([1,3],:);B^2] 的結果')
[A([1,3],:);B^2]
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗1.T5

b564cbc7-8614-eb11-8da9-e4434bdf6706.jpeg

原始碼:

%定義矩陣
A=(reshape(1:1:25,5,5))'
B=[3016;17-69;023-4;970;41311]
fprintf('輸出A和B的乘積,記為C:')
C=A*B
fprintf('將矩陣C的右下角3*2給D:')
D=C(3:end,2:end)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗1.T6

b964cbc7-8614-eb11-8da9-e4434bdf6706.jpeg

原始碼:

%先來一個從100到999的一維矩陣
fprintf('第6題(1)')
m=100:999;
n=find(mod(m,21)==0);
length(n)

fprintf('第6題(2)')
ch='ABC123d4武漢理工大學計算機1601e56Fg9';
k=find(ch>='A'&ch<='Z')
%ch(k)=[]
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗2 MATLAB矩陣處理

一、實驗目的

  1. 掌握生成特殊矩陣的方法

  2. 掌握矩陣處理的方法

  3. 掌握用矩陣求逆法解線性方程組的方法

二、實驗內容

實驗2.T1

bd64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

clc
E=eye(3)
R=rand(3,2)
O=zeros(2,3)
S=diag([66])

A=[ER;OS]

fprintf('計算A^2的結果')
A^2

fprintf('計算等號右邊')
a=[ER+R*S;OS^2]

fprintf('兩邊做差:')
A^2-a
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗2.T2

c364cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

clc
%建立魔方矩陣
A=magic(5)
%輸出矩陣的行列式的值
fprintf('矩陣的行列式的值:')
det(A)
%輸出矩陣的跡
fprintf('輸出矩陣的跡')
trace(A)
%輸出矩陣的秩
fprintf('輸出矩陣的秩')
rank(A)
%輸出矩陣的範數
fprintf('輸出矩陣的範數')
fprintf('一範數')
norm(A,1)%一範數
fprintf('二範數')
norm(A,2)%二範數
fprintf('無窮範數')
norm(A,inf)%無窮範數
%輸出矩陣的逆矩陣
fprintf('逆矩陣')
inv(A)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗2.T3

ca64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

clc
%產生5階希爾伯特矩陣
fprintf('產生5階希爾伯特矩陣')
H=hilb(5)

%產生5階帕斯卡矩陣
fprintf('產生5階帕斯卡矩陣')
P=pascal(5)

%求二者行列式值
fprintf('求二者行列式值')
Hh=det(H)
Hp=det(P)

%求二者條件數
fprintf('求二者條件數')
Th=cond(H)
Tp=cond(P)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗2.T4

cd64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

clc
%輸入矩陣A
fprintf('輸入矩陣A')
A=[-29618;20512;-885]
%計算特徵值與特徵向量,其中V為特徵向量的列向量構成,D為特徵值構成的對角矩陣
fprintf('計算特徵值與特徵向量,其中V為特徵向量的列向量構成,D為特徵值構成的對角矩陣')
[V,D]=eig(A)

fprintf('其他測試')
B=[100;020;003]
[xy]=eig(B)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗2.T5

d064cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

clc
%輸入3X3的A矩陣
fprintf('輸入3X3的A矩陣')
A=[1/21/31/4;1/31/41/5;1/41/51/6]

%輸入列向量b
b=[0.950.670.52]'
%求A矩陣的逆矩陣
A1=inv(A);
%計算X的值
fprintf('計算X的值')
x=A1*b
%換新的列向量b
b2=[0.950.670.53]'
%繼續求x的值
fprintf('繼續求x的值')
x2=A1*b2

%計算矩陣A的條件數
fprintf('計算矩陣A的條件數')
C=cond(A)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗3 順序結構程式設計

一、實驗目的

  1. 掌握建立和執行M檔案的方法

  2. 掌握輸入輸出的方法

  3. 掌握順序結構程式設計方法

二、實驗內容

實驗3.T1

d464cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

x=input('請輸入x:');
num=[];
num=[num,rem(x,10)];
num=[num,floor(rem(x,100)/10)];
num=[num,rem(floor(x/100),10)];
num=[num,floor(x/1000)];
num=7+num;
num=rem(num,10);
t=num(1);
num(1)=num(3);
num(3)=t;
t=num(2);
num(2)=num(4);
num(4)=t;
num
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗3.T2

d764cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

x=input('請輸入實數x:');
a=floor(x)
b=x-floor(x)

T3~T5 原始碼略

a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗3.T6

dc64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

x=(1+pi)^(1/3);
y=(exp(-x)-tan(73*pi/180))/(10^(-5)+log(abs(sin(x)^2-sin(x*x))))
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗4 選擇結構程式設計

一、實驗目的

  1. 掌握利用if語句實現選擇結構的方法

  2. 掌握利用switch語句實現多分支選擇結構的方法

  3. 掌握try語句的使用方法

二、實驗內容

實驗4.T1

e064cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=[];%建立存放所有y值的矩陣
forx0=x
ifx0<0&&x0~=-3
y=[y,x0*x0+x0-6];
elseifx0>=0&&x0<5&&x0~=2&&x0~=3
y=[y,x0*x0-5*x0+6];
else
y=[y,x0*x0-x0-1];
end
end
x%輸出所有x
y%輸出所有y

%f(-5.0)
%f(-3.0)
%f(1.0)
%f(2.0)
%f(2.5)
%f(3.0)
%f(5.0)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗4.T2

e664cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:(if語句)

x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=[];%建立存放所有y值的矩陣
forx0=x
ifx0<0&&x0~=-3
y=[y,x0*x0+x0-6];
elseifx0>=0&&x0<5&&x0~=2&&x0~=3
y=[y,x0*x0-5*x0+6];
else
y=[y,x0*x0-x0-1];
end
end
x%輸出所有x
y%輸出所有y

%f(-5.0)
%f(-3.0)
%f(1.0)
%f(2.0)
%f(2.5)
%f(3.0)
%f(5.0)

原始碼:(switch語句)

s=input('請輸入一個成績(0分到100分之間):');%s用於存放成績
while1%判斷輸入成績的合理性
ifs<0|s>100
disp('輸入的成績需在0到100之間,請重新輸入:')
s=input('請輸入一個成績(0分到100分之間):');
else
break;
end
end
switchfix(s/10)%對成績做出等級判斷
case{9,10}
disp('A')
case8
disp('B')
case7
disp('C')
case6
disp('D')
otherwise
disp('E')
end
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗4.T3

ec64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

n=input('請輸入員工工號:');
h=input('該員工工作時數是:');
ifh>120
x=(h-120)*84*(1+0.15)+120*84;
elseifh<60
x=h*84-700;
else
x=h*84;
end
disp([num2str(n),'號員工的應發工資為',num2str(x)]);
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗4.T4

f264cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

a=fix(10+(99-10)*rand(1,2))%產生兩個隨機整數
x=a(1);
y=a(2);
t=input('請輸入運算子號:','s');
ift=='+'
z=x+y;
elseift=='-'
z=x-y;
elseift=='*'
z=x*y;
elseift=='/'
z=x/y;
end
disp([num2str(x),t,num2str(y),'=',num2str(z)])%輸出運算結果
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗4.T5

f864cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

a=rand(5,6)%產生5x6的隨機矩陣
n=input('請輸入您要輸出矩陣的第幾行:');
ifn>5
disp('超出了矩陣的行數,矩陣的最後一行為:')
a(5,:)
else
disp(['矩陣的第',num2str(n),'行為:'])
a(n,:)
end
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗5 迴圈結構程式設計

一、實驗目的

  1. 掌握利用for語句實現迴圈結構的方法

  2. 掌握利用while語句實現迴圈結構的方法

  3. 熟悉利用向量運算來代替迴圈操作的方法

二、實驗內容

實驗5.T1

fc64cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:(迴圈結構)

y=0;
n=input('n=?');
fori=1:n
y=y+1/(2*i-1)/3^(2*i-1);
end
y
log(2)/2

原始碼:(向量結構)

n=input('n=?');
i=1:n;
y=1./(2*i-1)./3.^(2*i-1);
y=sum(y)
log(2)/2
log(25)/log(5)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗5.T2

fe64cbc7-8614-eb11-8da9-e4434bdf6706.jpeg

0165cbc7-8614-eb11-8da9-e4434bdf6706.jpeg

原始碼:

y=0;
n=1;
whiley<3
y=y+1/(2*n-1);
n=n+1;
end
y=y-1/(2*(n-1)-1)
n=n-2
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗5.T3

0565cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

a=input('a=?');
b=input('b=?');
Xn=1;
Xn1=a/(b+Xn);
n=0;
whileabs(Xn1-Xn)>1e-5
Xn=Xn1;
Xn1=a/(b+Xn);
n=n+1;
ifn==500
break;
end
end
n
Xn1
r1=(-b+sqrt(b*b+4*a))/2
r2=(-b-sqrt(b*b+4*a))/2
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗5.T4

0a65cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

fori=1:100
ifi==1
f(i)=1;
elseifi==2
f(i)=0;
elseifi==3
f(i)=1;
else
f(i)=f(i-1)-2*f(i-2)+f(i-3);
end
end
max(f)
min(f)
sum(f)
length(find(f>0))
length(find(f==0))
length(find(f<0))
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗5.T5

0e65cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

s=0;n=0;
fori=2:49
b=i*(i+1)-1;
m=fix(sqrt(b));
forj=2:m
ifrem(b,j)==0
break
end
end
ifj==m
n=n+1;
s=s+b;
end
end
n
s
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗6 函式檔案

一、實驗目的

  1. 掌握函式檔案的概念

  2. 掌握利用和呼叫MATLAB函式的方法

二、實驗內容

實驗6.T1

1465cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:shiyan6_1.m

functiony=shiyan6_1(x)
%SHIYAN6_1此處顯示有關此函式的摘要
%此處顯示詳細說明y=[exp(x),log(x),sin(x),cos(x)];

%在命令視窗呼叫上述函式檔案:
%y=mat1(1+i)

end

原始碼:shiyan6_1_exe.m

y=shiyan6_1(2+3i)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗6.T2

1665cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:shiyan6_2.m

function[a,b,N,M]=shiyan6(m,n,t)
%SHIYAN6_2此處顯示有關此函式的摘要
%此處顯示詳細說明A=[m*cos(t*pi/180),-m,-sin(t*pi/180),0;m*sin(t*pi/180),0,cos(t*pi/180),0;0,n,-sin(t*pi/180),0;0,0,-cos(t*pi/180),1];
B=[0,9.8*m,0,9.8*n];
C=inv(A)*B';
a=C(1);
b=C(2);
N=C(3);
M=C(4);
%在命令視窗呼叫該函式檔案:
%m1=input('m1=');
%m2=input('m2=');
%theta=input('theta=');
%[a1,a2,N1,N2]=shiyanwu2(m1,m2,theta)
end

原始碼:shiyan6_2_exe.m

m1=input('m1=');
m2=input('m2=');
theta=input('theta=');
[a1,a2,N1,N2]=shiyan6_2(m1,m2,theta)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗6.T3

8865cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:shiyan6_3.m

functionflag=shiyan6_3(x)
%SHIYAN6_3此處顯示有關此函式的摘要
%此處顯示詳細說明flag=1;
fori=2:sqrt(x)
ifrem(x,i)==0
flag=0;
break;
end
end
end

原始碼:shiyan6_3_exe.m

fori=10:99
j=10*rem(i,10)+fix(i/10);
ifshiyan6_3(i)&shiyan6_3(j)
disp(i)
end
end
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗6.T4

8d65cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:shiyan6_4.m

functiony=shiyan6_4(x)
%SHIYAN6_4此處顯示有關此函式的摘要
%此處顯示詳細說明
%y=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);
y=1./((x-2)*(x-2)+0.1)+1./((x-3).^4+0.01);
end

原始碼:shiyan6_4_exe.m

y=shiyan6_4(2)
a=[1,2;3,4];
y=shiyan6_4(a)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗6.T5

9465cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:第一題(函式檔案)

functionf1=shiyan6_5_1(n)
%SHIYAN6_5_1此處顯示有關此函式的摘要
%此處顯示詳細說明f1=n+10*log(n*n+5);
end

原始碼:第二題(函式檔案)

functionf2=shiyan6_5_2(n)
%SHIYAN6_5_2此處顯示有關此函式的摘要
%此處顯示詳細說明i=1:n;
m=i.*(i+1);
f2=sum(m);
end

原始碼:執行檔案

%第一題輸出:
y=shiyan6_5_1(40)/(shiyan6_5_1(30)+shiyan6_5_1(20))

%第二題輸出:
y=shiyan6_5_2(40)/(shiyan6_5_1(30)+shiyan6_5_1(20))
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗7 繪圖操作

一、實驗目的

  1. 掌握繪製二維圖形的方法

  2. 掌握繪製三維圖形的方法

  3. 掌握繪製圖形的輔助操作

二、實驗內容

實驗7.T1

a365cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

%(1)
x=linspace(0,2*pi,101);
y=(0.5+3*sin(x)./(1+x.^2)).*cos(x);
plot(x,y)
%(2)
x=-5:0.01:5;
y=[];%起始設y為空向量
forx0=x
ifx0<=0%不能寫成x0=<0
y=[y,(x0+sqrt(pi))/exp(2)];%將x對應的函式值放到y中
else
y=[y,0.5*log(x0+sqrt(1+x0^2))];
end
end
plot(x,y)
%(3)
t=-2*pi:0.01:2*pi;
r=10*sin(1+5*t);
polar(t,r)
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗7.T2

a965cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

%(1)
x=linspace(-2*pi,2*pi,100);
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
plot(x,y1,'b-',x,y2,'r:',x,y3,'y--');
text(4,16,'\leftarrowy1=x^2');
text(6*pi/4,-1,'\downarrowy2=cos(2*x)');
text(-1.5*pi,-2.25*pi*pi,'\uparrowy3=y1*y2');
%(2)
x=linspace(-2*pi,2*pi,100);
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
subplot(1,3,1);%分割槽
plot(x,y1);
title('y1=x^2');%設定標題
subplot(1,3,2);
plot(x,y2);
title('y2=cos(2*x)');
subplot(1,3,3);
plot(x,y3);
title('y3=x^2*cos(2*x)');
%(3)
x=linspace(-2*pi,2*pi,20);
y1=x.^2;
subplot(2,2,1);%分割槽
bar(x,y1);
title('y1=x^2的條形圖');%設定標題
subplot(2,2,2);
stairs(x,y1);
title('y1=x^2的階梯圖');
subplot(2,2,3);
stem(x,y1);
title('y1=x^2的杆圖');
subplot(2,2,4);
fill(x,y1,'r');%如果少了'r'則會出錯
title('y1=x^2的填充圖');
%其他的函式照樣做。
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗7.T3

ac65cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:略

a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗7.4

b165cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

x=linspace(-5,5,21);
y=linspace(0,10,31);
[x,y]=meshgrid(x,y);%在[-5,5]*[0,10]的範圍內生成網格座標
z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
subplot(2,1,1);
surf(x,y,z);
subplot(2,1,2);
contour3(x,y,z,50);%其中50為高度的等級數,越大越密
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

實驗7.5

b865cbc7-8614-eb11-8da9-e4434bdf6706.png

原始碼:

ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,0.5*pi,0,1.5*pi]);%利用ezsurf隱函式
shadinginterp%進行插值著色處理
a864cbc7-8614-eb11-8da9-e4434bdf6706.png

更多內容,請見文末留言處

(無法看留言,請複製文章連結在微信裡開啟)

— The End —

bd65cbc7-8614-eb11-8da9-e4434bdf6706.png 推薦文章
  • WUT電腦科學與技術專業 課程總覽

  • 伺服器端軟體:集中式版本控制系統SVN

  • 談談阿里、騰訊、華為的學生版伺服器

c065cbc7-8614-eb11-8da9-e4434bdf6706.png c165cbc7-8614-eb11-8da9-e4434bdf6706.png c365cbc7-8614-eb11-8da9-e4434bdf6706.png c665cbc7-8614-eb11-8da9-e4434bdf6706.png

覺得有幫助,歡迎讚賞

c965cbc7-8614-eb11-8da9-e4434bdf6706.png

cd65cbc7-8614-eb11-8da9-e4434bdf6706.gif