Hi Everyone i need some help, currently working on my final project about real option pricing, everything work well (i use some a little value for partition) until my lecture ask me to make the partition value smaller.... my calculation is okay but when I try to plot it i got problems
1. figure 1 & 2 did not show up, only the colorbar and the meshgrid 3d did not shown. how to resolve it?
2. figure 3 shown properly the mesh grid, but because of the small partition it make the colormap did not shown properly so it can be said only black colour is shown in 3d object. how to change the range colour?
I use matlab for Mac OS X R2013 and mac mid 2012 non-retina, with RAM 4, hdd 500,
is the problem because of my hardware ? because i need to run 6000 x 6000 matrix and it need almost 2 hours to process/iteration(trial)~(I input 10 trial) when i saw the task manager my RAM space 3.99 is used
here they are my code:
repeat=1;
while repeat==1
close all
clc;
clear;
warning off all
format longG
:
:
:
:
methodnames=[cellstr(' FTCS');cellstr(' BTCS');cellstr(' Crank-Nicolson')];
%========================================================================================================================================|
% PLOTTING
% UNDEVELOPED VALUE
%========================================================================================================================================|
%pilihan penamipilan plot atau tidak
disp('Tampilkan plot?');
disp('0 -> Tidak.');
disp('1 -> Ya.');
varplot=2;
while varplot<0 || varplot>1
varplot=input('[0-1] = ');
if varplot<0 || varplot>1
disp('Mohon masukkan pilihan dengan benar!');
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%pendefinisian warna yang akan digunakan
colorss=['c';'m';'y';'k';'b';'g';'r'];
%========================================================================================================================================|
%pemilihan penampilan semua plot atau hanya sebagian plot dari uji
switch varplot
case 1
disp('Tampilkan semua?');
disp('0 -> Tidak, hanya beberapa.');
disp('1 -> Ya.');
varplot1=2;
while varplot1<0 || varplot1>1
varplot1=input('[0-1] = ');
if varplot1<0 || varplot1>1
disp('Mohon masukkan pilihan dengan benar!');
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%pilihan jumlah uji yang akan di plot
switch varplot1
case 1
trpl=trial;
trppl(1:trial)=1:trial;
otherwise
fprintf('Masukkan jumlah uji yang ingin diplot = ');
trplot=0;
while trplot<1
trplot=input('');
if trplot<1
disp('Mohon masukkan jumlah uji dengan benar!');
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%pemilihan uji ke- yang di plotkan
for trp=1:trplot
trpp(trp)=0;
while trpp(trp)<1
fprintf('Masukkan urutan uji ke-%d yang ingin diplot = ',trp);
trpp(trp)=input('');
if trpp(trp)<1
disp('Mohon masukkan nomor urutan uji dengan benar!');
end
end
fprintf('====================================================\n')
end
trpl=trplot;
trppl=trpp;
end
%========================================================================================================================================|
%========================================================================================================================================|
% PLOTTING
% WAITING VALUE
%========================================================================================================================================|
%penentuan jumlah yang akan di plotkan
for tr=1:trpl
if tr<2
fprintf('====================================================\n')
trialwv=0;
while trialwv<1
trialwv=input('Masukkan jumlah banyaknya harga dari \nWaiting Value yang akan Anda plot = ');
if trialwv<1
disp('Jumlah yang Anda masukkan terlalu kecil, \nsilakan ulangi!');
end
end
%========================================================================================================================================|
%pada harga berapa yang akan di plotkan (akan disesuaikan dari partisi ke-)
for wv=1:trialwv
inputwv(wv)=Vmin-1;
while inputwv(wv)<Vmin || inputwv(wv)>PMax
fprintf('Masukkan Harga ke-%d yang akan di plot \nuntuk waiting value [USD%0.2f - USD%0.2f] = ',wv,Vmin,PMax);
inputwv(wv)=input('');
end
nilaiwv(wv)=cellstr(sprintf('Harga Opsi pada harga USD%d',inputwv(wv)));
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%mulai plot figure undeveloped Value
for j=1:3
figure('Name',sprintf('Figure %d Trial %d',j,trppl(tr)),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
[X Y]=meshgrid(VV,0:w:T);
Z=MatrixIterF{trppl(tr),j};
surf(X,Y,Z);
switch j
case 1
colormap(hot)
case 2
colormap(summer)
case 3
colormap(winter)
end
colorbar
title(strcat('Plot Undeveloped Value Project menggunakan metode ',methodnames(j),sprintf(' uji ke-%d.',trppl(tr))))
xlabel('Harga Minyak Mentah di Pasar (VV)')
ylabel('t=0..T')
zlabel('Hasil Undeveloped Value Proyek (F)')
grid on
end
%========================================================================================================================================|
%Mulai plot figure Waiting value
for j=4:6
figure('Name',sprintf('Figure %d Trial %d',j,trppl(tr)),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
title(strcat('Plot harga opsi menggunakan metode ',methodnames(j-3),sprintf(' uji ke-%d.',trppl(tr))))
xlabel('t=0..T')
ylabel('Harga Opsi (Waiting Value) Project')
hold on
for wv=1:trialwv
if (wv>length(colorss))
if (mod(wv,length(colorss))==1)
x=1;
else
x=x+1;
end
else
x=wv;
end
wvi=(round(((inputwv(wv))-Vmin)/p))+1;
plot(0:w:T,MatrixIterWait{trppl(tr),j-3}(wvi,:),colorss(x));
end
legend(nilaiwv,'Location','NorthEast');
hold off
grid on
end
%========================================================================================================================================|
%========================================================================================================================================|
% PLOTTING T TERTENTU
% Nilai F(V,t) grafiks Tahunan
%========================================================================================================================================|
% Untuk membuat bagian dari legend
for j=1:(T+1)
i=(j-1);
nilait(j)=cellstr(sprintf('Nilai di t=%d',i));
end
%========================================================================================================================================|
% Memulai iterasi plot t tertentu
for y=7:9
figure('Name',sprintf('Figure %d Trial %d',y,trppl(tr)),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
title(strcat('Plot di t tertentu menggunakan metode ',methodnames(y-6),sprintf(' uji ke-%d.',trppl(tr))))
xlabel('Harga Minyak Mentah di Pasar (VV)')
ylabel('Nilai Undeveloped Proyek (F)')
hold on
for j=1:(T+1)
if (j>length(colorss))
if (mod(j,length(colorss))==1)
x=1;
else
x=x+1;
end
else
x=j;
end
tj(j)=round((((T+1)-j)-tmin)/w);
plot(VV,MatrixIterF{trppl(tr),y-6}(:,(tj(j)+1)),colorss(x));
end
legend(nilait,'Location','NorthWest');
hold off
end
end
%========================================================================================================================================|
%========================================================================================================================================|
% PEMBAGIAN UNTUK BARIS DAN KOLOM
% HARGA DAN WAKTU
%========================================================================================================================================|
otherwise
for j=1:(T+1)
tj(j)=round((((T+1)-j)-tmin)/w);
end
end
%========================================================================================================================================|
%pembagian posisi partisi harga
fprintf('\n');
disp('price line');
for ss=1:length(VV)
varv(ss,1)=VV(ss);
varv(ss,2)=(round(((VV(ss))-Vmin)/p))+1;
if (varv(ss,1)<100)
fprintf('%0.2f %0.2f\n',varv(ss,1),varv(ss,2));
else
fprintf('%0.2f %0.2f\n',varv(ss,1),varv(ss,2));
end
end
%========================================================================================================================================|
%pembagian posisi partisi waktu
fprintf('\n');
disp('year coloumn');
for ss=1:(T+1)
vart(ss,1)=ss-1;
vart(ss,2)=tj(ss)+1;
fprintf('%0.2f %0.2f\n',vart(ss,1),vart(ss,2));
end
%========================================================================================================================================|
% PLOTTING SENSITIVITAS
% Nilai F(V,t) Terhadap parameter yang berubah-ubah
%========================================================================================================================================|
fprintf('====================================================\n')
trialsv=0;
while trialsv<1
trialsv=input('input number of sensitivity \nthat will be plotted = ');
if trialsv<1
disp('the number is too small, \nre-input please!');
end
end
%========================================================================================================================================|
%input price
for sv=1:trialsv
fprintf('====================================================\n')
inputv(sv)=Vmin-1;
while inputv(sv)<Vmin || inputv(sv)>PMax
fprintf('Input price ke-%d that \nwill be plotted [USD%0.2f - USD%0.2f] = ',sv,Vmin,PMax);
inputv(sv)=input('');
end
%========================================================================================================================================|
%input year% fprintf('====================================================\n')
inputt(sv)=tmin-1;
while inputt(sv)<tmin || inputt(sv)>T
fprintf('year ke-%d that \nwill be plotted [%d-%d] = ',sv,tmin,T);
inputt(sv)=input('');
end
%========================================================================================================================================|
%change from input to partition location
ti(sv)=tj(inputt(sv)+1)+1;
vi(sv)=(round(((inputv(sv))-Vmin)/p))+1;
end
%========================================================================================================================================|
%list simbol per-methode
syms=['s';'+';'o'];
%========================================================================================================================================|
%start plot sensitivity
%clf
for sv=1:trialsv
figure('Name',sprintf('Figure Sensitivity ke-%d',sv),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
title(strcat('Sensitivity plot with ',scetype(scenario),sprintf(' in F(%d,%d)',inputv(sv),inputt(sv))))
xlabel(xlabels)
ylabel('Undeveloped Project Value')
hold on
for js=1:3
fprintf('====================================================\n')
fprintf('\nSensitivity with %s method in F(%d,%d)\n',methodnames{js},inputv(sv),inputt(sv))
for tr=1:trial
methods{tr}=sprintf('Nilai uji ke-%d = %f\n',tr,MatrixIterF{tr,js}(vi(sv),ti(sv)));
fprintf(methods{tr});
plMatrixIterF(tr,js)=MatrixIterF{tr,js}(vi(sv),ti(sv));
end
plot(sce(1:trial,scenario),plMatrixIterF(1:trial,js), strcat(colorss(length(colorss)-js+1),syms(js)));
hold all
end
grid on
legend(methodnames,'Location','NorthWest');
hold off
end
%========================================================================================================================================|
%re-run?
fprintf('\n');
fprintf('====================================================\n')
disp('Want to reply new process?');
disp('0 -> No.');
disp('1 -> Yes.');
repeat=2;
while repeat<0 || repeat>1
repeat=input('[0-1] = ');
if repeat<0 || repeat>1
disp('choose 0 / 1 only please !');
end
fprintf('=======================FINISH======================\n')
end
end
should be like this
[url=http://postimg.org/image/5kx7ca6t9/][img]http://s30.postimg.org/5kx7ca6t9/1_F.png[/img][/url]
but suddenly became like this in another trial for figure 1 & 2 only, because figure 3 shown properly
[url=http://postimg.org/image/nc8tqqm7x/][img]http://s30.postimg.org/nc8tqqm7x/10_F.png[/img][/url]
I really appreciate for your help.
sorry if my question is confusing and so sorry cause i use my mother language in my code.
1. figure 1 & 2 did not show up, only the colorbar and the meshgrid 3d did not shown. how to resolve it?
2. figure 3 shown properly the mesh grid, but because of the small partition it make the colormap did not shown properly so it can be said only black colour is shown in 3d object. how to change the range colour?
I use matlab for Mac OS X R2013 and mac mid 2012 non-retina, with RAM 4, hdd 500,
is the problem because of my hardware ? because i need to run 6000 x 6000 matrix and it need almost 2 hours to process/iteration(trial)~(I input 10 trial) when i saw the task manager my RAM space 3.99 is used
here they are my code:
repeat=1;
while repeat==1
close all
clc;
clear;
warning off all
format longG
:
:
:
:
methodnames=[cellstr(' FTCS');cellstr(' BTCS');cellstr(' Crank-Nicolson')];
%========================================================================================================================================|
% PLOTTING
% UNDEVELOPED VALUE
%========================================================================================================================================|
%pilihan penamipilan plot atau tidak
disp('Tampilkan plot?');
disp('0 -> Tidak.');
disp('1 -> Ya.');
varplot=2;
while varplot<0 || varplot>1
varplot=input('[0-1] = ');
if varplot<0 || varplot>1
disp('Mohon masukkan pilihan dengan benar!');
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%pendefinisian warna yang akan digunakan
colorss=['c';'m';'y';'k';'b';'g';'r'];
%========================================================================================================================================|
%pemilihan penampilan semua plot atau hanya sebagian plot dari uji
switch varplot
case 1
disp('Tampilkan semua?');
disp('0 -> Tidak, hanya beberapa.');
disp('1 -> Ya.');
varplot1=2;
while varplot1<0 || varplot1>1
varplot1=input('[0-1] = ');
if varplot1<0 || varplot1>1
disp('Mohon masukkan pilihan dengan benar!');
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%pilihan jumlah uji yang akan di plot
switch varplot1
case 1
trpl=trial;
trppl(1:trial)=1:trial;
otherwise
fprintf('Masukkan jumlah uji yang ingin diplot = ');
trplot=0;
while trplot<1
trplot=input('');
if trplot<1
disp('Mohon masukkan jumlah uji dengan benar!');
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%pemilihan uji ke- yang di plotkan
for trp=1:trplot
trpp(trp)=0;
while trpp(trp)<1
fprintf('Masukkan urutan uji ke-%d yang ingin diplot = ',trp);
trpp(trp)=input('');
if trpp(trp)<1
disp('Mohon masukkan nomor urutan uji dengan benar!');
end
end
fprintf('====================================================\n')
end
trpl=trplot;
trppl=trpp;
end
%========================================================================================================================================|
%========================================================================================================================================|
% PLOTTING
% WAITING VALUE
%========================================================================================================================================|
%penentuan jumlah yang akan di plotkan
for tr=1:trpl
if tr<2
fprintf('====================================================\n')
trialwv=0;
while trialwv<1
trialwv=input('Masukkan jumlah banyaknya harga dari \nWaiting Value yang akan Anda plot = ');
if trialwv<1
disp('Jumlah yang Anda masukkan terlalu kecil, \nsilakan ulangi!');
end
end
%========================================================================================================================================|
%pada harga berapa yang akan di plotkan (akan disesuaikan dari partisi ke-)
for wv=1:trialwv
inputwv(wv)=Vmin-1;
while inputwv(wv)<Vmin || inputwv(wv)>PMax
fprintf('Masukkan Harga ke-%d yang akan di plot \nuntuk waiting value [USD%0.2f - USD%0.2f] = ',wv,Vmin,PMax);
inputwv(wv)=input('');
end
nilaiwv(wv)=cellstr(sprintf('Harga Opsi pada harga USD%d',inputwv(wv)));
end
fprintf('====================================================\n')
end
%========================================================================================================================================|
%mulai plot figure undeveloped Value
for j=1:3
figure('Name',sprintf('Figure %d Trial %d',j,trppl(tr)),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
[X Y]=meshgrid(VV,0:w:T);
Z=MatrixIterF{trppl(tr),j};
surf(X,Y,Z);
switch j
case 1
colormap(hot)
case 2
colormap(summer)
case 3
colormap(winter)
end
colorbar
title(strcat('Plot Undeveloped Value Project menggunakan metode ',methodnames(j),sprintf(' uji ke-%d.',trppl(tr))))
xlabel('Harga Minyak Mentah di Pasar (VV)')
ylabel('t=0..T')
zlabel('Hasil Undeveloped Value Proyek (F)')
grid on
end
%========================================================================================================================================|
%Mulai plot figure Waiting value
for j=4:6
figure('Name',sprintf('Figure %d Trial %d',j,trppl(tr)),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
title(strcat('Plot harga opsi menggunakan metode ',methodnames(j-3),sprintf(' uji ke-%d.',trppl(tr))))
xlabel('t=0..T')
ylabel('Harga Opsi (Waiting Value) Project')
hold on
for wv=1:trialwv
if (wv>length(colorss))
if (mod(wv,length(colorss))==1)
x=1;
else
x=x+1;
end
else
x=wv;
end
wvi=(round(((inputwv(wv))-Vmin)/p))+1;
plot(0:w:T,MatrixIterWait{trppl(tr),j-3}(wvi,:),colorss(x));
end
legend(nilaiwv,'Location','NorthEast');
hold off
grid on
end
%========================================================================================================================================|
%========================================================================================================================================|
% PLOTTING T TERTENTU
% Nilai F(V,t) grafiks Tahunan
%========================================================================================================================================|
% Untuk membuat bagian dari legend
for j=1:(T+1)
i=(j-1);
nilait(j)=cellstr(sprintf('Nilai di t=%d',i));
end
%========================================================================================================================================|
% Memulai iterasi plot t tertentu
for y=7:9
figure('Name',sprintf('Figure %d Trial %d',y,trppl(tr)),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
title(strcat('Plot di t tertentu menggunakan metode ',methodnames(y-6),sprintf(' uji ke-%d.',trppl(tr))))
xlabel('Harga Minyak Mentah di Pasar (VV)')
ylabel('Nilai Undeveloped Proyek (F)')
hold on
for j=1:(T+1)
if (j>length(colorss))
if (mod(j,length(colorss))==1)
x=1;
else
x=x+1;
end
else
x=j;
end
tj(j)=round((((T+1)-j)-tmin)/w);
plot(VV,MatrixIterF{trppl(tr),y-6}(:,(tj(j)+1)),colorss(x));
end
legend(nilait,'Location','NorthWest');
hold off
end
end
%========================================================================================================================================|
%========================================================================================================================================|
% PEMBAGIAN UNTUK BARIS DAN KOLOM
% HARGA DAN WAKTU
%========================================================================================================================================|
otherwise
for j=1:(T+1)
tj(j)=round((((T+1)-j)-tmin)/w);
end
end
%========================================================================================================================================|
%pembagian posisi partisi harga
fprintf('\n');
disp('price line');
for ss=1:length(VV)
varv(ss,1)=VV(ss);
varv(ss,2)=(round(((VV(ss))-Vmin)/p))+1;
if (varv(ss,1)<100)
fprintf('%0.2f %0.2f\n',varv(ss,1),varv(ss,2));
else
fprintf('%0.2f %0.2f\n',varv(ss,1),varv(ss,2));
end
end
%========================================================================================================================================|
%pembagian posisi partisi waktu
fprintf('\n');
disp('year coloumn');
for ss=1:(T+1)
vart(ss,1)=ss-1;
vart(ss,2)=tj(ss)+1;
fprintf('%0.2f %0.2f\n',vart(ss,1),vart(ss,2));
end
%========================================================================================================================================|
% PLOTTING SENSITIVITAS
% Nilai F(V,t) Terhadap parameter yang berubah-ubah
%========================================================================================================================================|
fprintf('====================================================\n')
trialsv=0;
while trialsv<1
trialsv=input('input number of sensitivity \nthat will be plotted = ');
if trialsv<1
disp('the number is too small, \nre-input please!');
end
end
%========================================================================================================================================|
%input price
for sv=1:trialsv
fprintf('====================================================\n')
inputv(sv)=Vmin-1;
while inputv(sv)<Vmin || inputv(sv)>PMax
fprintf('Input price ke-%d that \nwill be plotted [USD%0.2f - USD%0.2f] = ',sv,Vmin,PMax);
inputv(sv)=input('');
end
%========================================================================================================================================|
%input year% fprintf('====================================================\n')
inputt(sv)=tmin-1;
while inputt(sv)<tmin || inputt(sv)>T
fprintf('year ke-%d that \nwill be plotted [%d-%d] = ',sv,tmin,T);
inputt(sv)=input('');
end
%========================================================================================================================================|
%change from input to partition location
ti(sv)=tj(inputt(sv)+1)+1;
vi(sv)=(round(((inputv(sv))-Vmin)/p))+1;
end
%========================================================================================================================================|
%list simbol per-methode
syms=['s';'+';'o'];
%========================================================================================================================================|
%start plot sensitivity
%clf
for sv=1:trialsv
figure('Name',sprintf('Figure Sensitivity ke-%d',sv),'NumberTitle','off')
set(gcf,'renderer','zbuffer');
title(strcat('Sensitivity plot with ',scetype(scenario),sprintf(' in F(%d,%d)',inputv(sv),inputt(sv))))
xlabel(xlabels)
ylabel('Undeveloped Project Value')
hold on
for js=1:3
fprintf('====================================================\n')
fprintf('\nSensitivity with %s method in F(%d,%d)\n',methodnames{js},inputv(sv),inputt(sv))
for tr=1:trial
methods{tr}=sprintf('Nilai uji ke-%d = %f\n',tr,MatrixIterF{tr,js}(vi(sv),ti(sv)));
fprintf(methods{tr});
plMatrixIterF(tr,js)=MatrixIterF{tr,js}(vi(sv),ti(sv));
end
plot(sce(1:trial,scenario),plMatrixIterF(1:trial,js), strcat(colorss(length(colorss)-js+1),syms(js)));
hold all
end
grid on
legend(methodnames,'Location','NorthWest');
hold off
end
%========================================================================================================================================|
%re-run?
fprintf('\n');
fprintf('====================================================\n')
disp('Want to reply new process?');
disp('0 -> No.');
disp('1 -> Yes.');
repeat=2;
while repeat<0 || repeat>1
repeat=input('[0-1] = ');
if repeat<0 || repeat>1
disp('choose 0 / 1 only please !');
end
fprintf('=======================FINISH======================\n')
end
end
should be like this
[url=http://postimg.org/image/5kx7ca6t9/][img]http://s30.postimg.org/5kx7ca6t9/1_F.png[/img][/url]
but suddenly became like this in another trial for figure 1 & 2 only, because figure 3 shown properly
[url=http://postimg.org/image/nc8tqqm7x/][img]http://s30.postimg.org/nc8tqqm7x/10_F.png[/img][/url]
I really appreciate for your help.
sorry if my question is confusing and so sorry cause i use my mother language in my code.