查看: 238|回复: 10|关注: 0

[已解决] 模拟股票价格,通过计算不应该出现复数,但是软件迭代过程中却出现复数,不知怎么办求大神解答

[复制链接]

新手

9 麦片

财富积分


050


5

主题

14

帖子

0

最佳答案
刚开始循环8063次,我发现都是复数。于是我换成k=1:10,有时候运行出来是实数,但有时候是复数。    我看了运行结果发现从第一次迭代就是复数,这不正常啊,通过人工计算也不可能是复数。现在很迷茫,求哪位大神可以解答???   

这是我的代码:顺便附上我运行出来的结果
程序.png
S=zeros(1,8064);
sigma=zeros(1,8064);
S(1)=100;
sigma(1)=0.3;
for k=1:8063
    e=normrnd(0,1);
    c=normrnd(0,1);
   sigma(k+1)=sqrt((0.9-10*sigma(k)^2)/2016-0.3*sigma(k)*e*sqrt(1/2016)+0.4*sigma(k)*c*sqrt(1/2016))
   S(k+1)=S(k)+0.1*S(k)/2016+sigma(k)*S(k)*e*sqrt(1/2016)
end
plot(k/2016,S(k),'k-o');

回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-6-28 18:55:40 | 显示全部楼层
sigma(k+1)=sqrt((0.9-10*sigma(k)^2)/2016-0.3*sigma(k)*e*sqrt(1/2016)+0.4*sigma(k)*c*sqrt(1/2016))中使用了sqrt开方函数,出现复数不正常吗?
回复此楼 已获打赏: 0 积分

举报

新手

9 麦片

财富积分


050


5

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-6-29 09:18:08 | 显示全部楼层
20141303 发表于 2020-6-28 18:55
sigma(k+1)=sqrt((0.9-10*sigma(k)^2)/2016-0.3*sigma(k)*e*sqrt(1/2016)+0.4*sigma(k)*c*sqrt(1/2016))中 ...

但是你看我的运行结果,sigma第一个数就是复数,我给定的初始值是0.3,莫名多了一个0.000i。而且我自己计算了一下,sigma(2)是实数呢,开根号也不应该为复数呀。   从第一个数他就开始错了,好像不太正常。
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-6-29 09:51:54 | 显示全部楼层
是实数,但其他为复数,实数应该是用0i补位了
回复此楼 已获打赏: 0 积分

举报

新手

9 麦片

财富积分


050


5

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-6-29 10:21:06 | 显示全部楼层
20141303 发表于 2020-6-29 09:51
是实数,但其他为复数,实数应该是用0i补位了

这样啊,那我应该怎么解决这个问题呢?设置一个条件让sqrt部分保证为正吗?
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-6-29 10:59:04 | 显示全部楼层 |此回复为最佳答案
不明白你的需求,是只要实数解,还是复数取实部,前者可能需要判断,后者使用real函数取实部
回复此楼 已获打赏: 0 积分

举报

新手

9 麦片

财富积分


050


5

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-6-29 16:36:02 | 显示全部楼层
20141303 发表于 2020-6-29 10:59
不明白你的需求,是只要实数解,还是复数取实部,前者可能需要判断,后者使用real函数取实部 ...

好的,谢谢你,我知道啦。不过我的这个程序运行后怎么让它变成折线图呢?我发现运行出来是许多的散点
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-6-29 17:23:08 | 显示全部楼层
回复此楼 已获打赏: 0 积分

举报

新手

9 麦片

财富积分


050


5

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-6-29 17:50:51 | 显示全部楼层
20141303 发表于 2020-6-29 17:23
参考
https://www.ilovematlab.cn/thread-527134-1-1.html

看了连接,但是我要运行出来八千多个数,都要一个一个连吗
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-6-29 18:01:47 | 显示全部楼层
8000多数据,使用plot应该是线啊
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表