實際測試結果
2016年5月17日 星期二
2014年3月20日 星期四
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。
假設你要處理一個最佳化問題,目標函數是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
第二個為 profile,對於整個執行過程的函數做個別計算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,把每日的最後一筆報價公開出來。
如果有需要的可以直接點連結
"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然後直接安裝就可以。
選擇下載資料夾 只要知道放在哪一個資料夾就好
下載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就好不用任何設定
從下一行開始複製貼上
到此要選擇存檔,因為檔頭已經自動存成UTF8 (多這一行的緣故% !Mode:: "TeX:UTF-8")
存檔類型選擇:UTF8(有包含:)
存檔名稱XXXX.tex(XXXX任意決定).
然後按Latex的編譯選項就可以看到 選擇Latex編譯出來 預設是以Dvi看,
如果想轉成PDF請選擇PdfLatex
第二種方法 經由三個程序先編譯 Latex 在編譯選項 Dvi->PS 最後選擇PS->PDF
第三種方法 可以直接選擇Dvi->PDF 都可以將Latex轉換成PDF
最後的結果就會顯示如下
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
訂閱:
文章 (Atom)









