楼主: runminle
4416 3

[问答] R语言 while循环跑不了 [推广有奖]

  • 0关注
  • 0粉丝

本科生

14%

还不是VIP/贵宾

-

威望
0
论坛币
3095 个
通用积分
2.2026
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
609 点
帖子
25
精华
0
在线时间
104 小时
注册时间
2016-10-12
最后登录
2023-1-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
FindImpVol2=function(S0,K,t,r,CM)
{
  Sigma0=-20;
  Sigma1=20;
  while((Sigma1-Sigma0)^(-2)<10^8){
    Sigma=Sigma1-g(S0,K,t,r,Sigma1,CM)/((g(S0,K,t,r,Sigma1,CM)-g(S0,K,t,r,Sigma0,CM))/(Sigma1-Sigma0))
    Sigma0=Sigma1
    Sigma1=Sigma
    Sigma=Sigma1-g(S0,K,t,r,Sigma1,CM)/((g(S0,K,t,r,Sigma1,CM)-g(S0,K,t,r,Sigma0,CM))/(Sigma1-Sigma0))
    Sigma0=Sigma1
    Sigma1=Sigma
  }
  return(Sigma)
}
FindImpVol2(135.02,K1[1],T1,r,CM1[1])
运行后显示『Error in while ((Sigma1 - Sigma0)^(-2) < 10^1) { :
  missing value where TRUE/FALSE needed』
但把循环条件改成10^2就可以运行了,就很迷。请问有什么解决办法吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:while Hil R语言 function Sigma function

沙发
统计初学 发表于 2017-2-17 14:28:13 |只看作者 |坛友微信交流群
while循环里面也要有返回值,
while((Sigma1-Sigma0)^(-2)<10^8){
    Sigma=Sigma1-g(S0,K,t,r,Sigma1,CM)/((g(S0,K,t,r,Sigma1,CM)-g(S0,K,t,r,Sigma0,CM))/(Sigma1-Sigma0))
    Sigma0=Sigma1
    Sigma1=Sigma
    Sigma=Sigma1-g(S0,K,t,r,Sigma1,CM)/((g(S0,K,t,r,Sigma1,CM)-g(S0,K,t,r,Sigma0,CM))/(Sigma1-Sigma0))
    Sigma0=Sigma1
    Sigma1=Sigma
    return(Sigma)#这里加上这个
  }

使用道具

藤椅
jiangbeilu 学生认证  发表于 2017-2-18 21:11:09 |只看作者 |坛友微信交流群
循环里是不需要返回数值的,因为并没有在函数里运行。
  1. x=7
  2. while( x >0){
  3. x=x-1
  4. }
  5. x
复制代码

直接输入x就可以知道经过很多次循环运算后,x值是多少了。
不能用返回值的。
你的报错显示的是这个:
  1. 运行后显示『Error in while ((Sigma1 - Sigma0)^(-2) < 10^1) { :
  2.   missing value where TRUE/FALSE needed』
复制代码

目测函数里写的是
  1. while ((Sigma1 - Sigma0)^(-2) < 10^1)
复制代码

可能是判定条件不对吧。
极有可能的结果是:Sigma1、Sigma0在计算过程中,出现了NA,你的循环表达式失效了。建议你仔细检查一下你的公式,看有无计算出NA的可能性。

使用道具

板凳
runminle 学生认证  发表于 2017-2-20 16:09:21 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2017-2-18 21:11
循环里是不需要返回数值的,因为并没有在函数里运行。

直接输入x就可以知道经过很多次循环运算后,x值是 ...
好的。
有可能是Sigma1-Sigma出现为0的情况,从而分母变成0了……
虽然我也不知道为什么割线法求方程零点为什么会迭代到同一个点上……
谢谢回答!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 17:07