专栏
标签
for循环
一般问题
发布于 2025-02-11 23:31:13
查看 11过去502天

using Symbolics
using TyMath
using TySymbolicMath
using TyBase
@variables y
T1 = time()
delta0 = 100
m = 3
sita = 130
miuS = 50
counter = 0
t = 1
for i = 1:t:delta0 - miuS
miuS = miuS + t
sigmaS = 0.1 * miuS
C = (sita - delta0) / sigmaS
A = (delta0 - miuS) / sigmaS
ft = exp((-1 / 2) * (C * y + A)^2 - y^m)
k1= vpaintegral(ft,0,Inf)
k2 = k1 * C / sqrt(2 * π)
k3 = normcdf(A)
F = 1 - k3 - k2
counter = counter + 1
dF(counter,1)
dmiuS(counter,1)
end
n = find(dF>0.0001,1,"findfirst")
n=n-1
dF(n,1)
miuS=dmiuS(n,1)
T2 = time()
T = T2 - T1
println("dF_n: ", dF_n)
println("dmiuS_n: ", dmiuS_n)
println("运行时间T: ", T)

您好我想问一下这个错位是怎么回事要怎么改UndefVarError: miuS not defined

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
其他

全部回答 1

发布于 2025-02-12 08:58:12

您好,这是因为julia作用域导致的问题,可以修改for循环代码如下,声明变量调用的是全局变量miuS,counter

...
for i = 1:t:delta0 - miuS
    global miuS,counter # 声明全局变量
    miuS = miuS + t
    sigmaS = 0.1 * miuS
    C = (sita - delta0) / sigmaS
    A = (delta0 - miuS) / sigmaS
    ft = exp((-1 / 2) * (C * y + A)^2 - y^m)
    k1= vpaintegral(ft,0,Inf)
    k2 = k1 * C / sqrt(2 * π)
    k3 = normcdf(A)
    F = 1 - k3 - k2
    counter = counter + 1
    dF(counter,1)
    dmiuS(counter,1)
end
...

关于julia作用域,具体可参考用户手册变量作用域

用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天