• 沒有找到結果。

x=input(' 輸入數值 x = ');

N/A
N/A
Protected

Academic year: 2022

Share "x=input(' 輸入數值 x = '); "

Copied!
11
0
0

加載中.... (立即查看全文)

全文

(1)

J.C. Hsu

Exercise(1)-991026

設計一個 M 檔來表示一數之正負符號。

<解>:

function ex1_991026 fprintf('\n')

x=input(' 輸入數值 x = ');

fprintf('\n') if x>0

disp(' ==> x 為正數 ; sign(x)=1') elseif x<0

disp(' ==> x 為負數 ; sign(x)=-1') else

disp(' ==> x 為零 ; sign(x)=0') end

fprintf('\n')

函數檔案:

就是個文字起頭的M檔

用來在同一行中顯示數個不同格式的數值 控制符號:

開始新的一行

將使用者的輸入已一個字回傳

表示迴 轉圈結束的地方

(2)

Department of Mechanical Engineering Kun Shan University

J.C. Hsu

Exercise(2)-991026

設計一個 M 檔來表示考試分數之成績等級。

考試分數 成績等級

90 分(含)~100 分(含) A

80 分(含)~90 分 B

70 分(含)~80 分 C

60 分(含)~70 分 D

60 分以下 不及格

<解>:

程式如下:

function ex2_991026 fprintf('\n')

x=input(' 輸入考試分數 x = ');

fprintf('\n')

if x>=90 & x<=100

disp(' ==> 成績等級為 A') elseif x>=80 & x<90

disp(' ==> 成績等級為 B') elseif x>=70 & x<80

disp(' ==> 成績等級為 C') elseif x>=60 & x<70

disp(' ==> 成績等級為 D') else

disp(' ==> 成績為 不及格') end

等於

大於

(3)

J.C. Hsu

fprintf('\n')

執行結果:

>> ex2_991026

輸入考試分數 x = 40

==> 成績為 不及格

>> ex2_991026

輸入考試分數 x = 92

==> 成績等級為 A

>> ex2_991026

輸入考試分數 x = 68

==> 成績等級為 D

>> ex2_991026

輸入考試分數 x = 75

==> 成績等級為 C

>> ex2_991026

輸入考試分數 x = 88

==> 成績等級為 B

等於 大於

(4)

J.C. Hsu

Department of Mechanical Engineering Kun Shan University

Exercise(1)-991102

設計一個 M 檔來計算指數函數 之真實值、計算值、真實值百分誤差及近似值 百分誤差。

e0.5

<解>:

程式如下:

function ex1_991102(n)

%---

% 計算 exp(0.5)之真實值與計算值

% 公式: exp(x) = 1 + x + x^2/2! + x^3/3! + ...

%--- fprintf('\n')

true=exp(0.5);

fprintf(' 項數 真實值 計算值 真實值百分誤差 近似值百分誤差 \n') fprintf(' --- \n') est1=0;

for i=0:n

est2=est1+0.5^i/fac(i);

erra=abs((est2-est1)/est2)*100;

errt=abs((true-est2)/true)*100;

fprintf(' %2d %8.6f %8.6f %8.6f %8.6f \n',i+1,true,est2,errt,erra) if erra<=0.05,break,end

est1=est2;

end

fprintf('\n')

%---

% 階乘之副程式: n!

%---

function pt=fac(n) k1=1;

if n==0 pt=1;

else

遇到%且發現下一個文字是有關格式的符號

幕數

乘法

小於

加法

:

(5)

J.C. Hsu

for i=1:n k1=k1*i;

end pt=k1;

end

執行結果:

>> ex1_991102(10)

項數 真實值 計算值 真實值百分誤差 近似值百分誤差 --- 1 1.648721 1.000000 39.346934 100.000000

2 1.648721 1.500000 9.020401 33.333333 3 1.648721 1.625000 1.438768 7.692308 4 1.648721 1.645833 0.175162 1.265823 5 1.648721 1.648438 0.017212 0.157978 6 1.648721 1.648698 0.001416 0.015795

(6)

J.C. Hsu

Department of Mechanical Engineering Kun Shan University

Exercise(2)-991102

設計一個 M 檔來計算指數函數 之真實值、計算值、真實值百分誤差及近似值 百分誤差。

e0.5

注意:不輸入項數 n !

<解>:

程式如下:

function ex2_991102

%---

% 計算 exp(0.5)之真實值與計算值

% 公式: exp(x) = 1 + x + x^2/2! + x^3/3! + ...

% 項數: i

%--- fprintf('\n')

true=exp(0.5);

fprintf(' 項數 真實值 計算值 真實值百分誤差 近似值百分誤差 \n') fprintf(' --- \n')

est1=0;

i=1;

while (1)

est2=est1+0.5^(i-1)/fac(i-1);

erra=abs((est2-est1)/est2)*100;

errt=abs((true-est2)/true)*100;

fprintf(' %2d %8.6f %8.6f %8.6f %8.6f \n',i,true,est2,errt,erra) if erra<=0.05,break,end

est1=est2;

i=i+1;

end

fprintf('\n')

%---

% 階乘之副程式: n!

%--- 幕數

加法

:

(7)

J.C. Hsu

function pt=fac(n) k1=1;

if n==0 pt=1;

else

for i=1:n k1=k1*i;

end pt=k1;

end

執行結果:

>> ex2_991102

項數 真實值 計算值 真實值百分誤差 近似值百分誤差 ---

1 1.648721 1.000000 39.346934 100.000000 2 1.648721 1.500000 9.020401 33.333333 3 1.648721 1.625000 1.438768 7.692308 4 1.648721 1.645833 0.175162 1.265823 5 1.648721 1.648438 0.017212 0.157978 6 1.648721 1.648698 0.001416 0.015795

(8)

Department of Mechanical Engineering Kun Shan University

J.C. Hsu

Exercise(3)-991102

設計一個 M 檔來計算指數函數 之真實值 、 計算值 、 真實值百分誤差及近似值百 分誤差。

ex

注意:不輸入項數 n !

<解>:

程式如下:

function ex3_991102(x)

%---

% 計算 exp(x)之真實值與計算值

% 公式: exp(x) = 1 + x + x^2/2! + x^3/3! + ...

% 項數: i

%--- fprintf('\n')

true=exp(x);

fprintf(' 項數 真實值 計算值 真實值百分誤差 近似值百分誤差 \n') fprintf(' --- \n')

est1=0;

i=1;

while (1)

est2=est1+x^(i-1)/fac(i-1);

erra=abs((est2-est1)/est2)*100;

errt=abs((true-est2)/true)*100;

fprintf(' %2d %8.6f %8.6f %8.6f %8.6f \n',i,true,est2,errt,erra) if erra<=0.05,break,end

est1=est2;

i=i+1;

end

fprintf('\n')

%---

% 階乘之副程式: n!

%---

控制符號:

開始新的一行

遇到%且發現下一個文字是有關格式的符號

(9)

J.C. Hsu

4 7.389056 6.333333 14.287654 21.052632 function pt=fac(n)

k1=1;

if n==0 pt=1;

else

for i=1:n k1=k1*i;

end pt=k1;

end

執行結果:

>> ex3_991102(0.5)

項數 真實值 計算值 真實值百分誤差 近似值百分誤差 ---

1 1.648721 1.000000 39.346934 100.000000 2 1.648721 1.500000 9.020401 33.333333 3 1.648721 1.625000 1.438768 7.692308 4 1.648721 1.645833 0.175162 1.265823 5 1.648721 1.648438 0.017212 0.157978 6 1.648721 1.648698 0.001416 0.015795

>> ex3_991102(2)

項數 真實值 計算值 真實值百分誤差 近似值百分誤差 ---

1 7.389056 1.000000 86.466472 100.000000 2 7.389056 3.000000 59.399415 66.666667 3 7.389056 5.000000 32.332358 40.000000

5 7.389056 7.000000 5.265302 9.523810 6 7.389056 7.266667 1.656361 3.669725 7 7.389056 7.355556 0.453381 1.208459

(10)

J.C. Hsu

Department of Mechanical Engineering Kun Shan University

Exercise(1)解答-991116

求解一階微分方程式之 VIP 問題。

+ (tan x ) y = cos

2

x ; y ( 0 ) = − 1

dx dy

並畫出 x = 0 ~ 6 ,y 對 x 之圖形。

<解>:

程式碼:

function ex1_991116

%---

% 求解 VIP : y' + (tanx)y = (cosx)^2 ; y(0) = -1

%--- fprintf('\n')

y=dsolve('Dy+tan(x)*y=cos(x)^2','y(0)=-1','x') x=0:0.01:6;

y=subs(y,x);

plot(x,y);title('y 對 x 之圖形');xlabel('x');ylabel('y');

fprintf('\n')

執行結果:

>> ex1_991116

y =

1/2*sin(2*x)-cos(x)

>>

%

(11)

J.C. Hsu

0 1 2 3 4 5 6

-1.5 -1 -0.5 0 0.5 1 1.5

y 對 x 之圖形

x

y

此函數可以MATLAB的直指令做出在範圍y=0到6的圖形 平均可以簡單以MATLAB的標準指令求得

參考文獻

相關文件

Department of Computer and Communication Kun San University.. Tainan , Taiwan

Business, Welding, Prototype Modelling, Wall and Floor Tiling, Autobody Repair, Sheet Metal Technology, Plumbing and Heating, Electronics, Web Design, Electrical

具備 (凌陽格式 ) 串列 SRAM 介面. 7 通道10位元電壓類比/數位轉換器 (ADC) 單通道聲音類比/數位轉換器

Ching-Hao Yu (Department of Engineering Science and Ocean Engineering, National Taiwan University, Taiwan), Development of a scheme that preserves the dispersion relation

so the radius

[r]

• Dark matter appears as missing transverse momentum in collider

2 Department of Materials Science and Engineering, National Chung Hsing University, Taichung, Taiwan.. 3 Department of Materials Science and Engineering, National Tsing Hua