matlab 1到無窮_分析軟體工具 | MATLAB程式設計與應用第3版(劉衛國)課後實驗
技術標籤:matlab 1到無窮matlab中input輸入多個數matlab求兩向量夾角
知行校園匯
記錄學習、分享乾貨、吐槽人生!
關注
相關說明
文章內容:MATLAB程式設計與應用·第3版(劉衛國)課後實驗
所屬課程:分析軟體工具
作者主頁:csdn.cxhit.com(建議電腦訪問)
實驗1 MATLAB系統環境與運算基礎
一、實驗目的
掌握啟動和退出MATLAB的方法。
掌握MATLAB操作介面的組成。
掌握建立矩陣的方法。
掌握MATLAB表示式的書寫規則以及常用函式的方法。
二、實驗內容
實驗1. T1、2
以上原始碼略
實驗1.T3
原始碼:
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)
實驗1.T4
原始碼:
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]
實驗1.T5
原始碼:
%定義矩陣
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)
實驗1.T6
原始碼:
%先來一個從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)=[]
實驗2 MATLAB矩陣處理
一、實驗目的
掌握生成特殊矩陣的方法
掌握矩陣處理的方法
掌握用矩陣求逆法解線性方程組的方法
二、實驗內容
實驗2.T1
原始碼:
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
實驗2.T2
原始碼:
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)
實驗2.T3
原始碼:
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)
實驗2.T4
原始碼:
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)
實驗2.T5
原始碼:
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)
實驗3 順序結構程式設計
一、實驗目的
掌握建立和執行M檔案的方法
掌握輸入輸出的方法
掌握順序結構程式設計方法
二、實驗內容
實驗3.T1
原始碼:
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
實驗3.T2
原始碼:
x=input('請輸入實數x:');
a=floor(x)
b=x-floor(x)
T3~T5 原始碼略
實驗3.T6
原始碼:
x=(1+pi)^(1/3);
y=(exp(-x)-tan(73*pi/180))/(10^(-5)+log(abs(sin(x)^2-sin(x*x))))
實驗4 選擇結構程式設計
一、實驗目的
掌握利用if語句實現選擇結構的方法
掌握利用switch語句實現多分支選擇結構的方法
掌握try語句的使用方法
二、實驗內容
實驗4.T1
原始碼:
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)
實驗4.T2
原始碼:(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
實驗4.T3
原始碼:
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)]);
實驗4.T4
原始碼:
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)])%輸出運算結果
實驗4.T5
原始碼:
a=rand(5,6)%產生5x6的隨機矩陣
n=input('請輸入您要輸出矩陣的第幾行:');
ifn>5
disp('超出了矩陣的行數,矩陣的最後一行為:')
a(5,:)
else
disp(['矩陣的第',num2str(n),'行為:'])
a(n,:)
end
實驗5 迴圈結構程式設計
一、實驗目的
掌握利用for語句實現迴圈結構的方法
掌握利用while語句實現迴圈結構的方法
熟悉利用向量運算來代替迴圈操作的方法
二、實驗內容
實驗5.T1
原始碼:(迴圈結構)
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)
實驗5.T2
原始碼:
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
實驗5.T3
原始碼:
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
實驗5.T4
原始碼:
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))
實驗5.T5
原始碼:
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
實驗6 函式檔案
一、實驗目的
掌握函式檔案的概念
掌握利用和呼叫MATLAB函式的方法
二、實驗內容
實驗6.T1
原始碼: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)
實驗6.T2
原始碼: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)
實驗6.T3
原始碼: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
實驗6.T4
原始碼: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)
實驗6.T5
原始碼:第一題(函式檔案)
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))
實驗7 繪圖操作
一、實驗目的
掌握繪製二維圖形的方法
掌握繪製三維圖形的方法
掌握繪製圖形的輔助操作
二、實驗內容
實驗7.T1
原始碼:
%(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)
實驗7.T2
原始碼:
%(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的填充圖');
%其他的函式照樣做。
實驗7.T3
原始碼:略
實驗7.4
原始碼:
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為高度的等級數,越大越密
實驗7.5
原始碼:
ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,0.5*pi,0,1.5*pi]);%利用ezsurf隱函式
shadinginterp%進行插值著色處理
更多內容,請見文末留言處
(無法看留言,請複製文章連結在微信裡開啟)
— The End —
推薦文章WUT電腦科學與技術專業 課程總覽
伺服器端軟體:集中式版本控制系統SVN
談談阿里、騰訊、華為的學生版伺服器
覺得有幫助,歡迎讚賞