How a solution depends on a variable

Asked by Amanda Hoxell

Amanda Hoxell (view profile)

on 17 Sep 2019 at 14:13
Latest activity Commented on by Star Strider

Star Strider (view profile)

on 17 Sep 2019 at 20:45
Accepted Answer by Star Strider

Star Strider (view profile)

I have a function UE=Explicit(S,sigma,r,T,M,K,gamma,N); and I want to plot how the solution depends on gamma where 0.5<=gamma<=1. All of the other parameters are constants. How can I do this?

Tags

Answer by Star Strider

Star Strider (view profile)

on 17 Sep 2019 at 14:25
Edited by Star Strider

Star Strider (view profile)

on 17 Sep 2019 at 14:40

One approach:
gammav = linspace(0.5, 1, 10);
for k = 1:numel(gammav)
UE{k} = Explicit(S,sigma,r,T,M,K,gammav(k),N);
end
I have no idea what ‘Explicit’ is or what it produces, so it could be possible to vectorise this (instead of using the loop) depending on how you wrote the function. I am also saving each iteration to a cell array for that reason.
EDIT —
Plotting it depends on what ‘UE’ is. If ‘Explicit’ produces a scalar, this works:
figure
plot(gammav, [UE{:}])
grid
If it produces vectors or matrices, it will be necessary to use other approaches.

Star Strider

Star Strider (view profile)

on 17 Sep 2019 at 17:32
This works, however, ‘UE’ is uniformly 0 for all values of ‘gammav’.
gammav = linspace(0.5, 1, 10);
for k = 1:numel(gammav)
[UE(:,k),A]=Explicit(S,sigma,r,T,M,K,gammav(k),N);
end
figure
plot(gammav, UE, '.r')
This code runs without errors.
Amanda Hoxell

Amanda Hoxell (view profile)

on 17 Sep 2019 at 20:42
Thank you!!
Star Strider

Star Strider (view profile)

on 17 Sep 2019 at 20:45
My pleasure!
If my Answer helped you solve your problem, please Accept it!

Answer by John D'Errico

John D'Errico (view profile)

on 17 Sep 2019 at 14:31

Using gamma as the name of a variable is a bad idea. Regardless,...
Where is the problem? Just substitute a range of values for gamma. Save the solution for each gamma. Then plot, with gamma on the x axis, and your solution on the y axis. WTP?
You can even use tools like fimplicit, which will do the hard work for you. For example,
f = @(gam,y) gam.^2 - y.^2 - 2*gam.*y.^3 + gam.*y + 1;
fimplicit(f)
xlabel 'gam'
ylabel 'y'
grid on Amanda Hoxell

Amanda Hoxell (view profile)

on 17 Sep 2019 at 15:30
The problem is that I am new to Matlab. I tried the following but it did not work..
gamma_all = 0.5:0.1:1;
y = zeros(1,length(gamma_all));
for i = 1:length(gamma_all)
gamma = gamma_all(i);
y(i) = Explicit(S,sigma,r,T,M,K,gamma,N);
end
plot(gamma_all,y)