運算後判斷乘除以0..

6 views
Skip to first unread message

weianqq

unread,
Nov 30, 2009, 7:58:24 AM11/30/09
to 中文 Scilab 教育論壇
r=1;
n1=1;
n2=1.56;
for h=0:0.1:2;
alpha=asin(h/r);

beta=asin(n1/n2*sin(alpha));

pro=sin(beta)/sin(alpha-beta);

length=r*(1+pro);
end


除以 0 ...

at line 12 of exec file called by :
exec("C:/DOCUME~1/weianqq/LOCALS~1/Temp/SCI_TMP_3204_/Untitled1.sce");
while executing a callback


請問我要怎麼解決??

Yung-Jang Lee

unread,
Nov 30, 2009, 10:11:20 AM11/30/09
to ade-s...@googlegroups.com
簡單一點的話, 避開 h=0 , 如下
-----------------------------
r=1;
n1=1;
n2=1.56;
for h=0.000001:0.1:2; // 避開 h=0 點

 alpha=asin(h/r);

 beta=asin(n1/n2*sin(alpha));

 pro=sin(beta)/sin(alpha-beta);

 length=r*(1+pro);
end
--------------------------


否則可以使用 微積分學到的 l'Hospital 法則 (羅畢達)得到在 h=0 點的極限值


r=1;
n1=1;
n2=1.56;
for h=0:0.1:2;
 alpha=asin(h/r);

 beta=asin(n1/n2*sin(alpha));
 if(alpha==0) then
    pro=(n1/n2)/(1-n1/n2); // 0 除以 0 時, 使用 l'Hospital 法則
 else
    pro=sin(beta)/sin(alpha-beta);
 end

 length=r*(1+pro);
end


2009/11/30 weianqq <wei...@yahoo.com.tw>
Reply all
Reply to author
Forward
0 new messages