(2023年2月19日註:matlab這門課是在我大四上學期經歷的,那時候開這篇文章是為了記錄學習matlab的時候遇到的坑,所以將所有的作業題合併到一篇文章中)
1.建立乙個10*10的矩陣,矩陣所有對角元素為1,其餘元素為10~20之間(包括10和20)的均勻分布隨機數,並得出該矩陣中大於13且小於18的元素個數,同時求得這些元素的平均數。
a=unifrnd(10,20,10,10); % 產生乙個10*10的由10到20均勻分布的矩陣% eye()產生了乙個單位對角矩陣
% logical將1的數值轉成矩陣的位置
% 帶上a以後就可以確定是哪些元素要賦值為1
a(logical(eye(size(a))))=1;
% 找符合條件的元素,並返回元素的索引
b=find(a>13&a<18);
% 計算長度
c=length(b);
% 求均值
d=mean(c);
2. 用mesh函式做出函式$f(x,y)=-[xsin(9πy)+ycos(25πx)+20]$在$x^2+y^2≤10$的影象。
% 定義三個符號變數syms x y t;
% 給定t的範圍,數學上類似於轉成極座標來計算
t=linspace(-1,1);
x=sqrt(10)*cos(t);
y=sqrt(10)*sin(t);
% 在範圍定好以後給定變數
[xx,yy]=meshgrid(x,y);
% 函式表示式
f_xy=-1*(xx*sin(9*pi*yy)+yy*cos(25*pi*xx)+20);
% 初級的不能再初級的畫圖...
mesh(xx,yy,f_xy);
3. 生成30階的希爾伯特矩陣a,並剔除矩陣的第3到10行,剔除矩陣的4到13列,得到矩陣b,再逆序選取矩陣b的1到10行,順序選取矩陣的2到11列,得到新矩陣c。(hilb(n))
% 生成乙個30階的希爾伯特矩陣a=hilb(30);
% 刪除3到10行
a(3:10,:)=;
% 再刪除4到13列
a(:,4:13)=;
% 得到的新矩陣後,逆序索引,從第10到第1行,步長為-1,從2到11列,預設步長為1.
c=a(10:-1:1,2:11);
4. 解常微分方程組$$(1)dx/dt+2x-dy/dt=10cos(t),x(0)=2;$$ $$(2)dx/dt+dy/dt+2y=4e^(-2t),y(0)=2$$並作出$y-x$(橫座標為x,縱座標為y)在$t∈(0,10)$之間的影象(時間間距盡量小)
% 定義三個符號變數syms x y t;
% 解微分方程組
[x,y]=dsolve('dx+2*x-dy=10*cos(t)','dx+dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=2');
% 將得到的通解裡面將符號變成可用於計算的數字
x=subs(x,'t',0:0.1:10);
y=subs(y,'t',0:0.1:10);
% 將符號變數變成數值變數
x=double(x);
y=double(y);
% 初級的不能在初級的畫圖...
plot(x,y);
5. 解矩陣方程組$h*x=b$,h為100階希爾伯特矩陣,$x=(x1,x2,x3,……,x100)^t,b=(1,2,3,……,100)^t$
% 定義乙個100階的希爾伯特矩陣h=hilb(100);
% 定義乙個100*1的列向量
b=ones(100,1);
% 由於直接使用int(h)會引入奇異矩陣的誤差,因此matlab裡面有乙個專門的命令invhilb()
% 專門解決希爾伯特矩陣求逆的問題。
x=invhilb(100)*b;
佇列(作業四)
題目 用佇列實現舞者配對問題 include include include include define maxqsize 100 define ok 1 define error 0 define status int define selemtype int includeusing name...
26 1 鏈式佇列作業
1.實現鏈式佇列,輸入資料入隊,輸入字元出隊。test.c include include linkqueue.h int main int argc,const char ar printf nums join,char out queue n printf input while scanf d...
線性表 棧 佇列作業題
1 資料在計算機儲存器內表示時,實體地址和邏輯位址相同並且是連續的,稱之為 c a 儲存結構 b 邏輯結構 c 順序儲存結構 d 鏈式儲存結構 2 用鍊錶表示線性表的優點是 b a 便於隨機訪問 b 便於進行插入和刪除操作 c 占用的儲存空間較順序表少 d 元素的物理順序與邏輯順序相同 3 已知單鏈...