所以我试图绘制图表,这是我目前的代码
T=10; %set the values given to us
t(1)=0;
delta=0.01;
mu=0.05;
sigma=linspace(0,1,10001); %set the spacing for sigma
v=zeros(length(sigma),T); %set the xeros
k=1;
for sigma=linspace(0.01,1,1000)
t(k)=k*delta;
eta=randn(1); %define eta
S(2)=1+mu*delta+sigma*sqrt(delta)*eta; %set S
S(T+1)=S(10)+mu*delta*S(10)+sigma*sqrt(delta)*eta*S(10);
end
t(10000)=1; %set the rounding error
plot (S,sigma) %plot the graph
xlabel 'S' %label the axis
ylabel 'sigma'
我尝试过使用过。为了满足内部矩阵维度(对于S),但这并没有奏效。我现在已经绕圈了一段时间了,无法解决这个问题。
答案 0 :(得分:0)
我已经尝试过你的代码并分析了这个问题,我对它有一些疑问。知道你想要解决什么问题会很有帮助。但是,关注我们所拥有的东西,我所看到的一件事就是迭代。这对我来说没有意义,你已经使用了 for 迭代结构和sigma条件。没关系,让我们一步一步看看发生了什么:
for sigma=linspace(0.01,1,1000)
t(k)=k*delta;
eta=randn(1); %define eta
S(2)=1+mu*delta+sigma*sqrt(delta)*eta; %set S
S(T+1)=S(10)+mu*delta*S(10)+sigma*sqrt(delta)*eta*S(10);
end
首先,您可以定义迭代的 t(k) ,因为值不会随之改变。接下来,你写了 S(2) 和 S(T + 1) ,在这里,你'重新做一次迭代,这是正确的,但是你每次循环都会反复覆盖这些值,所以你要覆盖矩阵 S 的某些值。关于 S ,预先设定内存中的预期尺寸可能会有所帮助,您可以使用:
S=zeros(i,j); % Being i and j, the matrix dimensions.
或者简单地说,像某些人一样,声明变量(在Matlab中不是必需的):
S=[];
这取决于您正在解决的问题。我真的想帮助你,但我需要更多地了解这个问题。我不知道你的工作方法或你如何面对你的问题,但我一直在做的是首先在一张纸上解决它,或者如果它是某种类型的数值问题你无法解决它,那么只是草图你有的想法,并检查矩阵运算中的一致性(与矩阵大小有关),以及那些事情......
希望我一直很有帮助,祝你有个美好的一天:)