MATLAB數值計算編程題


2020年疫情期間接了一個活,培訓MATLAB編程。之前幾乎沒有接觸過MATLAB,從學習到授課也只有10天的准備時間。之前買了一本他們的MATLAB教材,然后花了5天左右的時間系統學習了一下。接着就是看他們上課用的PDF課件,繪制思維導圖,列出內容提綱。下面的4道編程題來自於他們學校的MATLAB數值計算課程的考試模擬題,可以當做MATLAB練習。

 

一. 已知甲苯胺的飽和蒸氣壓計算公式為:lnP=23.8296-3480.3/T-5.081lgT

其中P為壓力,kPa;T為溫度,K。試編寫一個MATLAB函數完成以下計算任務:

1) 繪制溫度在300~1000K范圍內飽和蒸氣壓與溫度的關系圖,給圖形加上坐標軸名

2) 求甲苯胺的正常沸點,即飽和蒸氣壓等於101.325kPa時的溫度,采用fprintf函數將結果(保留兩位小數)輸出在屏幕上。

MATLAB代碼:

function test1
x(1)=780;
epsilon=1e-6;
f=@(x)23.8296-3480.3/x-5.081*log10(x)-log(101.325)
df=@(x)3480.3/x^2-2.2067/x
k=1
x(2)=x(1)-f(x(1))/df(x(1))
while abs(x(k+1)-x(k))>epsilon
    x(k+2)=x(k+1)-f(x(k+1))/df(x(k+1))
    k=k+1
end
fprintf('%.2f\n',x(k))

 

二. 某懸浮液在25℃恆壓1.12*105Pa 下進行過濾實驗,得到實驗數據如下:

已知等壓過濾方程為:

式中q 為單位面積累積濾液量,m3/m2;τ 為過濾時間,s;K 和qe 為過濾常數,
試編寫一個MATLAB 函數完成以下計算:
1)采用線性回歸獲得過濾常數K 和qe 的值;
2)繪制圖形表示擬合效果,給圖形加上必要的注釋。

MATLAB代碼:

function test2
q=[0.01:0.01:0.06]
tao=[17.5 40.1 69.2 103.7 144.2 186.3]
plot(q,tao,'bo')
hold on
Y=tao./q
X=q
p=polyfit(X,Y,1)
K=1./p(1)
QE=p(2)./(2*p(1))
f=@(x)1./K*q.^2+(2./K)*QE*q
plot(q,f(q),'k-')
xlabel('q(單位面積累積濾液量) 單位:m^3/m^2')
ylabel('tao(過濾時間)單位:s')
title('25℃恆壓1.12*10^5Pa下實驗結果')

 

三. 實驗測得不同溫度下兩種物質A 和B 的粘度如下表所示:

一個混合由45%的A 和55%的B 組成,混合物粘度μ 可按下式計算:

試編寫一個MATLAB 函數計算該混合物在指定溫度下的粘度,要求:

1) 溫度作為該函數的輸入變量;

2) 當輸入的溫度值不在313~363 K 的范圍內時,退出計算,並顯示警告信息:

The input temperature is not in the range, the results may not be right;

3) 采用disp 命令將計算結果輸出在屏幕上。

MATLAB代碼:

function test3(temp)
if temp<313 || temp>363
    disp('The input temperature is not in the range,the results may not be right')
    return
end
T=[313:10:363]
miua=[653 549.2 469.7 406.0 355.0 314.8]
miub=[393.0 365.4 339.6 315.3 292.4 270.9]
xa=0.45
xb=0.55
miu=(xa*miua.^(1/3)+xb*miub.^(1/3)).^3
xi=[313:1:363]
y=interp1(T,miu,xi,'spline')
disp(y(temp-T(1)+1))

 

四. 某串聯反應在間歇攪拌釜中進行,各物質的濃度CA,CB,CC,CD 和CE 與反應時間t 的關系如下:

已知反應開始時只有 A存在,其濃度為1mol/L,試編寫一個MATLAB 函數求前60s 中每隔5s 時各物質的濃度,將計算結果以下圖的形式輸出(注意圖中各線上數據點表示方法,給圖形加上坐標軸名和圖例)。

MATLAB代碼:

function test4
[t,y]=ode45(@myfun,0:5:60,[1,0,0,0,0])
plot(t,y(:,1),'k--o',t,y(:,2),'+:',t,y(:,3),'d-',t,y(:,4),'*:',t,y(:,5),':^')
legend('CA','CB','CC','CD','CE')
xlabel('Reaction Time(s)')
ylabel('Concentraction(mol/L)')
%------------
function dCdt=myfun(t,y)
K1=0.04;K2=0.05;K3=0.10;K4=0.08
CA=y(1)
CB=y(2)
CC=y(3)
CD=y(4)
CE=y(5)
dCAdt=-K1*CA
dCBdt=K1*CA-K2*CB
dCCdt=K2*CB-K2*CC
dCDdt=K3*CC-K4*CD
dCEdt=K4*CD
dCdt=[dCAdt;dCBdt;dCCdt;dCDdt;dCEdt]

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM