M=9;
%================第一種寫法
for i=1:M
for j=1:M
NineNineMatrix(i,j)=i*j;
end
end
%================第二種寫法
A=[1:M]';
B=[1:M];
NineNineMatrix2=A*B;
%================第三種寫法
C=repmat(1:M,M,1);
D=repmat([1:M]',1,M);
NineNineMatrix3=repmat(1:M,M,1).*repmat([1:M]',1,M);
所有的變數要盡可能的以符號代替,這樣才可以方便做修改。
e0101010
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)
訂閱:
文章 (Atom)