2016年5月17日 星期二

2014年3月20日 星期四

Matlab讀取MySQL亂碼


MATLAB讀取資料庫中文資料,如果產生亂碼,只需要修改紅色箭頭處即可解決。




關鍵字:MATLAB、SQL、UTF8、亂碼、MySQL

2013年6月28日 星期五

Matlab fmincon的用法

%問題描述
假設你要處理一個最佳化問題,目標函數是ObjFun(X1,X2,X3,....,Xn)其中有變數 X1,X2,X3,....,Xn,這些變數可以用向量或是單一的純量,看需求而定。
則你要的就是min ObjFun(X1,X2,X3,....,Xn)
限制在
            A*X1 =B                        ----------------------------------(1)
Aeq*X1=beq;                            ----------------------------------(2)
       NonlineConFun(X1)          
----------------------------------(3)

     NonlineFun(X1)=0;              ----------------------------------(4)
%========================================================
如果你有限制式(1) (2) (3) (4)其中之一,則就要用到fmincon 不然就單純使用fminsearch
,這些限制式可以全部都用到也可以只用到其中一個兩個或三個限制式,如果沒有使用就是以A=[]取代,如下面的寫法,則最佳化方程式就可以正確執行了。
簡單抽象範例如下。 另外一篇在提供實際執行案例。
%==============初始值=====================================
options = optimset('Display','iter','TolFun',1e-7,'MaxFunEvals',10000);
%options 設定最佳化在執行時候的選項,
%詳細請在Matlab的Help輸入 Optimization Options  Reference
nonlcon=[];沒有非線性項的初始值
A=[];
b=[];
Aeq=[];
beq=[];
lb=[0 0 0];%假設函數是要變數
X1是一個1*3的向量,X1變數的下界
ub=[100 100 100];X1變數的上界
x01=[1 0 0] 問題函數
X1的初始值
%==============初始值=====================================
%最佳化函數沒有非線性項 nonlcon
OptValue1 = fmincon(@(X1) ObjFun(X1,X2,X3,....,Xn),x01,A,b,Aeq,beq,lb,ub,nonlcon,options)
%最佳化函數有非線性項 Fun_non

OptValue2= fmincon(@(X1) ObjFun(X1,X2,X3,....,Xn),x01,A,b,Aeq,beq,lb,ub,@Fun_non,options);


%@ 表示handle 就是以該變數的記憶體位置來運算數值結果,是抽象的概念。
%@Fun_non 表示該限制式與@(X1) ObjFun(X1,X2,X3,....,Xn) 的變數是一樣的值,也就是說X1=向量A,則@Fun_non 也要帶入向量A。

2013年6月10日 星期一

matlab 計算程式運算時間

matlab中有兩個計算程式CPU的耗費時間方法

第一個為最常用的tic,toc。
tic
運算程式
toc
實際例子 Example                                                                                
  tic                                  
n=1000;                                                          
A=rand(n,n);                                                          
b=rand(n,1);  
x = A\b;                                                                             
   toc                                                                    
結果 Result
Elapsed time is 0.069797 seconds.

第二個為 profile,對於整個執行過程的函數做個別計算CPU的耗費時間
實際例子 Example                                                                                
  profile on    %執行函數運算時間計算                                        
x1 = randn(1,100);                                                          
x2 = randn(1,100);                                                          
x3 = randn(1,100);  
HistValuex1 = hist(x1);                                                                              
HistValuex2 = hist(x2);                                                                   
HistValuex3 = hist(x3);                                                                   
mean(x1)                                                                                          
var(x1) 
profile viewer     %顯示計算時間
p = profile('info');%定義計算時間所暫存的記憶體位置  
profsave(p,'profile_results')   %將計算時間存檔
結果 Result

2013年3月20日 星期三

CDS 報價 (市場流動性高) Last Quote for the most Liquid Credit Default Swaps

Markit Group has developed this free 

"Last Quote for the most Liquid Credit Default Swaps" 

pricing report to address a public interest in CDS prices.

http://www.markit.com/cds/most_liquid/markit_liquid.shtml

Markit 將市場上流動性較高的CDS,把每日的最後一筆報價公開出來。

如果有需要的可以直接點連結

2013年3月12日 星期二

Matlab 模擬股價 以及 選擇權價格 Simulate Stock Price and Option Value


             S_0 = 100
          sigma = 0.4;
                  r = 0.012;
     dividend = 0.05;%股利
        Start_t  =  0;
Maturity_T  =  5;
          Tday  =  360;
               dt  =  1;
  StrikePrice = 80;
                t_i = (0:dt:Maturity_T*Tday)/Tday;
        PathM  = 10000; %路徑
          SizeM = size(t_i,2);
S(1:PathM,1)  =  S_0;
               h  =  dt/Tday;
for j=2:SizeM
          S(1:PathM,j)=S(1:PathM,j-1)+r*S(1:PathM,j-1).*repmat((t_i(1,j)-t_i(1,j-1)),PathM,1)+sigma*S(1:PathM,j-1).*repmat(sqrt(h),PathM,1).*randn(PathM,1);
end
%模擬的值  
    CallValue=mean(max((S(:,SizeM)-StrikePrice),0))*exp(-r*Maturity_T)
     PutValue=mean(max((StrikePrice-S(:,SizeM)),0))*exp(-r*Maturity_T)
%Matlab內建的公式值    
  [Call, Put] = blsprice(S_0, StrikePrice, r, Maturity_T, sigma, 0)

2013年3月4日 星期一

MikTex + Texmaker UTF8 中文latex

設定很簡單下載Miktex 淨安裝 選擇全部下載之後再選擇
http://mirrors.ctan.org/systems/win32/miktex/setup/setup-2.9.4503.exe

先選擇下載 下載完之後到下載目錄找到setup.exe然後直接安裝就可以。
選擇完整下載,這樣比較省事可以不用一直安裝新的東西總容量大概1G

選擇下載伺服器 通常會選擇日本因為台灣的很慢但看個人喜好 

 選擇下載資料夾 只要知道放在哪一個資料夾就好
下載完之後到該下載目錄找到setup.exe然後一直按下一步下一步安裝就可以安裝好

下載Texmaker編輯器
http://www.xm1math.net/texmaker/download.html
以前都使用Winedt但現在比較建議使用 Texmaker因為是免錢的。
(當然其他的PDF閱讀軟體, PS軟體也請自行下載安裝)
下載 Ghostscript 以及 Gsview
http://pages.cs.wisc.edu/~ghost/
 http://pages.cs.wisc.edu/~ghost/gsview/get50.htm
選擇你要的版本 並且一直按yes yes yes 安裝好就可以。


使用 Texmaker 就直接打開texmaker就好不用任何設定
從下一行開始複製貼上

% !Mode:: "TeX:UTF-8"
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{CJKutf8}
\usepackage{amssymb}
\usepackage[round]{natbib}

\title{Valuation}
\date{}

\author{•}
\begin{document}
\begin{CJK}{UTF8}{bsmi}
%\begin{frontmatter}
\maketitle
中文Latex
\end{CJK}
\end{document} 


到此要選擇存檔,因為檔頭已經自動存成UTF8 (多這一行的緣故% !Mode:: "TeX:UTF-8")
存檔類型選擇:UTF8(有包含:)
存檔名稱XXXX.tex(XXXX任意決定).
然後按Latex的編譯選項就可以看到 選擇Latex編譯出來 預設是以Dvi看,
如果想轉成PDF請選擇PdfLatex

第二種方法 經由三個程序先編譯 Latex 在編譯選項 Dvi->PS 最後選擇PS->PDF
第三種方法 可以直接選擇Dvi->PDF 都可以將Latex轉換成PDF

最後的結果就會顯示如下

中文Latex