MATLAB數值計算程式設計題

2022-02-20 06:44:43 字數 3402 閱讀 1856

2023年疫情期間接了乙個活,培訓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=1x(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

endfprintf('%.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=qp=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

endt=[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]

執行結果:

MATLAB數值計算 0

目錄format 表示格式 help format 可以查詢format幫助 format short 把輸出的格式改為預設設定 format rat 顯示為分數 format long e 顯示長精確度並用科學計數法 format long 並沒有重計算,把顯示數字的有效位5 15位 format...

Matlab 數值計算泰勒公式

1.利用n階泰勒多項式展開來估算函式f x e x在指定點x處的近似值。要求絕對誤差在最大階數maxn以內達到給定精度eps。taylorcal函式 function taylorcal eps 0.00001 maxn 20 x input 儲存輸入的浮點數 向量 f1 zeros 1,lengt...

Matlab中數值計算精度

1.matlab中有三種運算精度,它們分別為數值演算法 符號演算法和可控精度演算法,將它們分別介紹如下 1 數值演算法把每個數取為16位,計算按浮點運算進行,它是運算速度最快的一種演算法.2 符號演算法把每個數都變為符號量,運算按有理量計算進行,它的優點是能夠得到精確結果,缺點是占用空間大,並且運算...