這個小遊戲模擬一個小方塊在封閉環境中的運動情況,考慮了初速度,重力加速度,反彈,摩擦力等物理特性,所以看起來更為真實。(在視窗中任一點按下滑鼠,方塊會以特定初速,沿著特定方向運動)
螞蟻是一種非常神奇的生物,個子雖小,卻可以舉起自己體重 52 倍的東西,拖運超過自己體重1400 倍的物體。而且不只辛勤工作,更有龐大的組織能力,每天一點一滴的努力,終能構築出令人驚嘆的螞蟻宮殿。希望在學習的過程中,我們也能像螞蟻一樣,努力不懈,慢慢累積,有一天也可以建造出自己的知識王國。 蘋果公司創辦人賈伯斯曾說過: Stay hungry, stay foolish.(求知若渴,虛心若愚)。保持學習的習慣,從學習中尋找樂趣,記錄學習過程,並分享給其他的學習者~~~
2017年11月27日 星期一
2017年11月21日 星期二
用C# 寫經典遊戲: 記憶卡牌遊戲(Memory Game) 完整程式碼 (Full Source Code)
記憶卡牌遊戲(Memory Game) 是規則簡單,又容易撰寫的小程式,大人小孩都愛玩。
(程式中用到的圖形版權屬於動畫電影:Strange Magic 仲夏夜魔法,由迪士尼公司旗下的盧卡斯電影製作)。
2017年11月16日 星期四
2017年11月13日 星期一
2017年9月14日 星期四
蘇黎士投機定律 (The Zurich Axioms by Max Gunther) 讀書筆記
1. 憂慮不是心理疾病,而是健康的徵兆。如果你不擔憂,那就是你冒的險不夠。
1-1. 始終要下有意義的賭注。
1-2. 避免過份分散風險。
2. 盡早獲利了結。
2-1. 預先決定投機賺多少,目標達成後,立即獲利了結。
3. 船開始下沉時,不要禱告,趕快脫身。
3-1. 欣然接受小損失,儘管歷經多次失敗,但要設法一次扳回來。
4. 人類的行為根本不能預測,不要相信任何未卜先知。
5. 出現條理之前的混論並不危險。
5-1. 當心歷史會重演的心理陷阱。
5-2. 謹防圖表分析的幻覺。
5-3. 勿輕易論斷因果關係。
5-4. 勿犯賭徒的荒謬心理。
6. 避免紮跟,它妨礙靈活性。
6-1. 不要因為意氣或念舊,而駐足於已經沒有希望的投資活動。
6-2. 如果要更吸引人的機會橫在前面,要毫不遲疑脫開原來的樊籠。
7. 可以解釋的預感或直覺是值得信賴的。
7-1. 絕對不要把希望和預感混為一談。
8. 上帝創造世界的計畫中,未必包括使你發財。
8-1. 占星術要是靈的話,占星學家早都發了。
8-2. 不要過度迷信,如果你能淡然處之,也可以享受到一些樂趣。
9. 預期最佳況會發生就是樂觀,信心則是知道如和處理最壞情況,決不要因為樂觀而採取投 機活動。
10. 請藐視多數人的意見,因為他們可能是錯的。
10-1. 不要追逐風潮。沒有人進場的時候,往往就是買進的時機。
11. 如果第一次沒賺到錢,忘掉他,重新再來。
11-1. 決不要用向下承接的攤平法,挽救沒有希望的投機。
12. 長期計畫引起的危機是,它讓你認為未來是可以控制的,永遠不要為自己或讓別人為你制 定長期計畫。
12-1. 避開長期計畫。
2017年5月12日 星期五
科幻小說"三體(The Three-Body Problem)" (劉慈欣 著,2015年雨果獎得主) 讀書心得
"三體" 這本小說的作者,是大陸最炙手可熱的科幻作家-劉慈欣,本書榮獲2014年『星雲獎』提名,並於2015年獲得『雨果獎』最佳長篇小說的殊榮,也是華人圈第一次得到這個榮譽,"三體"被前美國總統歐巴馬,臉書創辦人祖克柏列為閱讀書單,除此之外,版權還被美國好萊塢買下,準備拍成電影。
本小說的書名"三體",源自於書中外星人的故鄉"半人馬座alpha星系",一個三合星系,也就是由三個恆星構成的系統,而擁有高度科技文明的的外星人,就居住在這星系中的一個行星,雖然已經擁有極其高度的文明,卻被不穩定的生存條件所困擾,氣候有時溫度極為溫和(只有一個太陽),有時卻是黑暗冰凍(沒有太陽)和猛爆烈焰(兩個或三個太陽),歷經幾百次幾乎慘遭毀滅的輪迴之後,外星人決定離開如此惡劣的環境,移往一個氣候穩定的星球,而這個時候,從一個遠達4.2光年外的太陽系行星,傳來有文明存在的信號,又得知該行星的氣候非常溫和且穩定,這個個行星就是人類居住的地球...當外星人收到這樣的信號,會有什麼樣的反應呢? 和地球人交朋友?還是毀滅地球人呢?
三體女主角"葉文潔",經歷過文化大革命,其父慘死於紅衛兵的批鬥,之後遭流放並輾轉進到中國當時名為"紅岸"的祕密機構,因一次機會,他利用機構內的超大型發射器,以太陽為放大器,對全宇宙進行廣播,八年多以後,獲得了外星人的回應,由時間來推算,這極有可能是從半人馬座alpha星系裡的外星文明所傳來,但是首先接收到訊號的外星人卻警告葉文潔不要再次傳遞訊號,更不能告知其他外星文明地球的所在位置,否則很可能會遭致毀滅的命運,而在葉文潔經歷過一連串無情的打擊,對人性徹底失望之際,她決定不再留戀整個人類社會,於是和其黨羽繼續和外星人聯繫並提供情報,而外星人在了解人類的狀況後,憑其高超的科技,傳送了僅有質子大小的智慧微機械:智子,對人類科技進行封鎖和監控其所有活動,同時也派出龐大的星際艦隊以光速的百分之一速度,朝地球進行侵略行動,當然,地球人不可能坐以待斃,據估算,外星人到達地球,還需420年的時間,於是整個地球世界都動員起來,進行跨國合作,期望能找到有效的辦法,以抵禦外星人的入侵‧‧‧
2016年12月10日 星期六
股市各項指標及其計算方式
1. K 線: 分為陽線、陰線、中立線三種,以日K為例,當該日收盤價大於開盤價,則為陽線,反之則為陰線,若開盤價等於收盤價,就是中立線。陽線和陰線分為實體和影線,實體是開盤和收盤價的價差,上影線則是最高價和實體上緣的價差,下影線是最低價和實體下緣的價差。另外,常見的K線5分K,10分K,30分K,週K,月K等,道理一樣,皆是取該時段 "開始","結束","最高"和"最低" 繪製而成。
2. 移動平均線 MA(Moving Average, MA,又稱"均線"):
a) 簡單移動平均線(Simple Moving Average): n日均線即表示是最近n日價格的算術平均值:
SMAn = (P(1)+P(2)+...+P(n))/n
假使某日的n日SMA 為 SMA(t0, n) 則次日的n日SMA為
SMA(t1,n) = SMA(t0,n)- P(1)/n + P(n+1)/n
b) 指數移動平均值(exponential Moving Average, EMA o EWMA)
a=2/(N+1), 若N=19, a=0.1
S(t)= a*Y(t) + (1-a)*S(t-1)
3. 隨機指標(Stochastic Oscillator, KD指標):
RSV (Raw Stochastic Value: 未成熟隨機值)
RSV = (Cn-Ln)/(Hn-Ln) * 100%
(n 為交易期間,一般定為9日,Cn為第n日之收盤價,Ln為n日內最低價,Hn為n日內最高價)
K(n) = a*RSV + (1-a)*K(n-1)
D(n) = a*Kn + (1-a)*D(n-1)
(a 一般定為 1/3, 若無前一日K,D值,則以50%代替)
K值為靈敏平均值,D值為遲鈍平均值,若K>D則表示處於漲勢,否則就是跌勢,K、D值介於0%~100%之間,80%以上為買超區(多頭趨勢),20%以下為賣超區(空頭趨勢)。
4.乖離率(Bias Ration, BIAS):
nBias = (Close -MAn)/MAn * 100%
nBias: n日乖離率
Close: 當日收盤價
MAn: n日移動平均價,n 一般定為3日和6日
5.威廉指標(Williams %R):
W%R = (Hn-Cn)/(Hn-Ln)
n: 交易期間,一般定為14日
Cn: 最新收盤價
Hn: n日內最高價
Ln: n日內最低價
a) 簡單移動平均線(Simple Moving Average): n日均線即表示是最近n日價格的算術平均值:
SMAn = (P(1)+P(2)+...+P(n))/n
假使某日的n日SMA 為 SMA(t0, n) 則次日的n日SMA為
SMA(t1,n) = SMA(t0,n)- P(1)/n + P(n+1)/n
3. 隨機指標(Stochastic Oscillator, KD指標):
RSV (Raw Stochastic Value: 未成熟隨機值)
RSV = (Cn-Ln)/(Hn-Ln) * 100%
(n 為交易期間,一般定為9日,Cn為第n日之收盤價,Ln為n日內最低價,Hn為n日內最高價)
K(n) = a*RSV + (1-a)*K(n-1)
D(n) = a*Kn + (1-a)*D(n-1)
(a 一般定為 1/3, 若無前一日K,D值,則以50%代替)
K值為靈敏平均值,D值為遲鈍平均值,若K>D則表示處於漲勢,否則就是跌勢,K、D值介於0%~100%之間,80%以上為買超區(多頭趨勢),20%以下為賣超區(空頭趨勢)。
4.乖離率(Bias Ration, BIAS):
nBias = (Close -MAn)/MAn * 100%
nBias: n日乖離率
Close: 當日收盤價
MAn: n日移動平均價,n 一般定為3日和6日
5.威廉指標(Williams %R):
W%R = (Hn-Cn)/(Hn-Ln)
n: 交易期間,一般定為14日
Cn: 最新收盤價
Hn: n日內最高價
Ln: n日內最低價
2016年7月25日 星期一
畢氏定理證明(幾何數學)~~~
相信大家對畢氏定理都不陌生,也都知道任意直角三角形中:"斜邊平方=其餘兩邊的平方和",但是你知道為什麼會這樣嗎?
正方形AEDC(紅框)的面積=正方形BFHG(綠框)-4個三角形面積
所以,c^2 = (a+b)^2 - 4*(a*b/2)
這個定理對我來說是再熟悉不過了,但是有一天我女兒問我如何證明時,我也花了一些時間才找出答案,如果你也有興趣,那就先不要看答案,自己先試試看。
我常跟我女兒說,解數學題目的樂趣在於"解不出來",如果一下子就看出答案的話,那就一點意思都沒有了~~~呵呵。
如果你已經試過一段時間了˙(不管是否找出答案),那就來看看我的方法,當然啦,方法不只一種,"不管是黑貓還是白貓,只要抓得到老鼠的貓就是好貓",可以解出問題的解法,就是好方法。
ABC為直角三角形,想當然爾,c^2=a^2+b^2,但是如何證明呢?
以AC為一邊長,做一個正方形AEDC,再以BC和BA延長線為兩邊做一個正方形BFHG(使GH通過D,HF通過E),OK,此時你可以看出三角形BAC=三角形AEF=三角形HDE=三角形GCD(因為其斜邊都相等,而且三個角也相等)。那麼
正方形AEDC(紅框)的面積=正方形BFHG(綠框)-4個三角形面積
所以,c^2 = (a+b)^2 - 4*(a*b/2)
化簡 c^2 = a^2+b^2+2ab - 2ab
最後 c^2 = a^2+b^2
證明完畢! 夠簡單吧~~~~~
曾經聽過一首打油詩: "人生幾何又幾何,學了幾何又幾何? 幾何學了幾何用? 不學幾何奈我何?" 哈哈哈~蠻好玩的,其實數學沒想像中困難啦,只要肯花點時間了解,其實也可以找出其中樂趣的。
2016年7月20日 星期三
漫談數學動動腦
漫談數學動動腦
最近通訊軟體line流行貼出數學題目,讓大家動動腦筋:
動腦時間
1 1 1 = 6
2 2 2 = 6
3 3 3 = 6
4 4 4 = 6
5 5 5 = 6
6 6 6 = 6
7 7 7 = 6
8 8 8 = 6
9 9 9 = 6
請加入運算符號,但不能加任何數字,以使等號成立。
然後有人解出一組答案如下:
當然,也有其他的答案,
例如4: 4+4-√4=6;
例如6: 6-6+6=6;
例如9:√9×√9-√9=6
其中應該是8最難,使用到立方根,但這是不合規則的。
這種遊戲題目只能加符號,不能加數字。立方根有用到3就不行。
於是,有一位對數學很有興趣的高手想到了8的另一解法,用對數、對數哦!!!
(log8/log(log8/log√8))!
看得懂嗎 ? 解給你看:
然後,加上階層後 3!=3*2*1= 6 。
神解答呀! Orz......
2016年6月28日 星期二
2016年6月21日 星期二
2016年6月20日 星期一
LabVIEW: XY Graph + Formula Node 製作 愛心圖形
這個練習用XY Graph 和 Formula Node繪製愛心圖形。本程式使用兩段函式繪成:
y=sqrt(1-pow((abs(x)-1), 2));
y=acos(1-abs(x))-3.1415926;
我在[-2,2]區間取用401個點(頭尾都要),先畫上半部,再畫下半部。
y=sqrt(1-pow((abs(x)-1), 2));
y=acos(1-abs(x))-3.1415926;
我在[-2,2]區間取用401個點(頭尾都要),先畫上半部,再畫下半部。
執行結果
Block Diagram
2016年5月30日 星期一
LabVIEW: 聲音擷取+頻譜分析
這個練習非常簡單: 從麥克風讀取一秒鐘的資料,然後輸出至圖表,並作頻譜分析。
人機介面&執行結果
Block digram
Acquire Sound的設定
Spectral Measurements的設定
2016年5月29日 星期日
Arduino + Labview: LM35溫度感測器,即時溫度監控
利用Arduino開發板上的類比輸入,讀取溫度感測IC上的值,轉成實際溫度然後透過Serial port傳輸至電腦,而電腦這端則是利用LabView來接收,並做適當轉換後以圖表作為監控介面。
實驗結果:
實驗結果:
Arduino這邊的程式很簡單,先初始化serial port,然後再經由A0讀入LM35的感測值,要注意這個感測值是10位元(bits),根據LM35的datasheet得之,正確溫度的計算方式是每10mV(0.01V)增加一度C,也就是說0V代表0度C,0.1 V(10*0.01V)代表10度C,以此類推。因為每次讀回10bit的資料 n,我們要將n換成電壓值: (5V/1024)*n ,又每10mv 增加一度,所以實際溫度=(5V/1024)*n/10mV = (500/1024)*n
算出實際溫度之後,利用Serial.print()函數將資料輸出至Serial port傳輸至電腦(我的系統是COM6),此時的資料是字串型式(每筆資料都是整數兩位數,小數兩位數,加上小數點共五個字元, EX: 28.93)。
void setup()
{
Serial.begin(9600);
}
void loop()
{
float x;
int n;
n = analogRead(0);
x = 500.0 * n /1024.0;
Serial.print(x, 2);
delay(500);
}
再來是電腦這邊的Labview程式,
Labview的Block diagram
Labview的人機介面
2016年5月3日 星期二
LabVIEW: 用手機透過網路,監控電腦的 Labview 程式
如何用手機透過網路來監控遠端的Labview程式呢? 首先你必須先在電腦上寫一個Labview程式,然後宣告一個 shared variable並公開出來,然後在手機裝上data dashboard的app,再用這個app的indicator連上電腦的shared variable就可以了,概念其實很簡單,以下就是詳細步驟:
開一個專案,並且在專案中New一個 Variable
我New一個Variable,並命名為v1
記得要先存檔
存完檔之後再用滑鼠拖曳至你的程式中
我想把這個shared variable(v1)當成輸出,所以記得在v1上按滑鼠右鍵,再選擇Access Mode中的Write屬性
最後將程式執行起來,這個程式很簡單,就是用亂數產生數值再乘以10之後,再送往v1
手機端需要一個app,請先用google play搜尋 "data dashboard for labview",沒錯,就是最上面那一個,安裝她吧!
安裝完之後,執行這個app,會進入這個畫面,按中間那個"+Add"
再點選"Connect to shared variable..."
輸入Labview程式所在的電腦 ip address之後,按"Connect..."
Connect完成,手機螢幕會秀出可以連結的share variables,點選v1
系統顯示出V1為數值變數
接下來選擇indicator,我選右上角那個指針式的顯示器
數值範圍設定為0.0~10.0
顯示器出現後,點選右上角的"Run",進行動態連結~~~
執行結果!!!! ~~~~~~~是不是很酷呢?
LabVIEW: 神兵利器 Formula Node
在LabView中,有一個Structure叫做Formula Node,這個結構可以讓你用C 語言定義變數和寫一段程式,相當於C的副程式,非常好用,對於熟悉C語言的人來說,簡直就是一項神兵利器,應該善加利用~~~~
Formula Node隱身在Structure項目中
Formula Node可以定義多個輸入和輸出,中間放置用C 語言寫的程式碼,非常直覺,也非常方便。
數學計算: "連加"(1加到10)和"階層(5!)",一下子就搞定了,是不是很容易呢?
LabVIEW: 透過網路遙控程式
這個練習主要是透過網路連線來控制遠端的labview的程式,labview可以利用client-server的架構,啟動webserver的服務,接受來自遠端的請求,利用這樣的服務,我們就可以透過網頁來控制遠方的系統了,很方便。
程式執行結果
一個簡單程式
人機介面
選擇 Tools->Web Publishing Tool
選擇你的程式並勾選 "Request control when connection is established"
這一頁,可以不修改
記住URL名稱,等一下開網頁連進來
設定完畢
開啟一個網頁,把剛剛的網址敲入,連線成功,並且可以即時控制這個labview程式。
訂閱:
文章 (Atom)





















































