如何将单个值更改为向量-JULIA

如何将单个值更改为向量-JULIA,julia,Julia,我在Julia有一个程序,可以计算很多值,包括最终积分的结果。程序中计算的所有值取决于sigma,首先,在sigma=0.6中进行修正。现在我必须做一个值表,将sigma更改为sigma=0.319/R,[0.5:0.5:10](20分) 因此,对于每个R,我将在程序中得到最终结果。该程序的输出是一个积分结果,称为omega 那么,在程序没有大的变化的情况下,我怎么能做到这一点呢? sigma在程序开始时声明 我试图把R=[0.5:0.5:10]和sigma=0.319./R,但在接下来的几行中

我在Julia有一个程序,可以计算很多值,包括最终积分的结果。程序中计算的所有值取决于
sigma
,首先,在
sigma=0.6
中进行修正。现在我必须做一个值表,将
sigma
更改为
sigma=0.319/R
,[0.5:0.5:10](20分)

因此,对于每个
R
,我将在程序中得到最终结果。该程序的输出是一个积分结果,称为
omega

那么,在程序没有大的变化的情况下,我怎么能做到这一点呢?
sigma
在程序开始时声明

我试图把
R=[0.5:0.5:10]
sigma=0.319./R
,但在接下来的几行中,程序无法计算其他值。我收到以下错误消息:

MethodError: no method matching *(::Array{Float64,1}, ::Array{Float64,1}) 



using  NLsolve

include("C:\\Users\\Lucas\\Desktop\\LUCAS\\Julia\\brent.jl")

R = 0.5:0.5:10
       sigma = 0.319./R

Φ(r) = 2/15*sigma^9*(1/(r-1)^9-1/(r+1)^9-9/8/r*(1/(r-1)^8-1/(r+1)^8))-
                   sigma^3*(1/(r-1)^3-1/(r+1)^3-3/2/r*(1/(r-1)^2-1/(r+1)^2))

function Φl(r)
     ((3*sigma^3)/(2*r^2*(1+r)^2)+(3*sigma^3)/(r*(1+r)^3)-(3*sigma^3)/(1+r)^4
                                 -(3*sigma^9)/(20*r^2*(1+r)^8)
                                 -(6*sigma^9)/(5*r*(1+r)^9)
                                 +(6*sigma^9)/(5*(1+r)^10)
                                 -(3*sigma^3)/((r-1)^3*r)
                                 +(6*sigma^9)/(5*(r-1)^9*r)
                                 -(3*sigma^3)/(2*(r-1)^2*r^2)
                                 +(3*sigma^9)/(20*(r-1)^8*r^2)
                                 +(3*sigma^3)/(r-1)^4-(6*sigma^9)/(5*(r-1)^10))
end

function Φll(r)
     ((-(3*sigma^3)/(r^3*(1+r)^2))-(6*sigma^3)/(r^2*(1+r)^3)
                             -(9*sigma^3)/(r*(1+r)^4)+(12*sigma^3)/(1+r)^5
                             +(3*sigma^9)/(10*r^3*(1+r)^8)
                             +(12*sigma^9)/(5*r^2*(1+r)^9)
                             +(54*sigma^9)/(5*r*(1+r)^10)
                             -(12*sigma^9)/(1+r)^11+(9*sigma^3)/((r-1)^4*r)
                             -(54*sigma^9)/(5*(r-1)^10*r)
                             +(6*sigma^3)/((r-1)^3*r^2)
                             -(12*sigma^9)/(5*(r-1)^9*r^2)
                             +(3*sigma^3)/((r-1)^2*r^3)
                             -(3*sigma^9)/(10*(r-1)^8*r^3)
                             -(12*sigma^3)/(r-1)^5+(12*sigma^9)/(r-1)^11)
end



Veff(r,b,g) = Φ(r)+b^2*g^2/r^2
Veffl(r,b,g) = Φl(r)-2b^2*g^2/r^3
Veffll(r,b,g) = Φll(r)+6b^2*g^2/r^4



function rc0bc0gc0( sigma )
    rc0 = brent(r->3Φl(r)+r*Φll(r),1.02,5)
    gc0 = sqrt(Φ(rc0)+rc0*Φl(rc0)/2)
    bc0 = rc0*sqrt(gc0^2-Φ(rc0))/gc0
    rc0, bc0, gc0
end

rc0, bc0, gc0 = rc0bc0gc0(sigma)    # the error is here !
println("rc0 = $rc0, bc0 = $bc0, gc0 =  $gc0")

我强烈推荐通读。特别是:

  • 在Julia中,
    [x,y,z]
    将始终构造一个包含
    x
    y
    z
    的三元素数组

  • 在Julia中,
    a:b
    a:b:c
    构造
    Range
    对象。要在MATLAB中构造一个完整的向量, 使用
    收集(a:b)
    。但是,通常不需要调用
    collect
    <代码>范围将 在大多数情况下,与普通数组类似,但效率更高,因为它会延迟计算其值

将这两部分放在一起,您将看到
[0.5:0.5:10]
是一个数组,其中只有一个元素!它是一个包含范围的数组。因此,您的解决方案很简单:您需要
R=0.5:0.5:10
(不带括号)


我强烈推荐通读。特别是:

  • 在Julia中,
    [x,y,z]
    将始终构造一个包含
    x
    y
    z
    的三元素数组

  • 在Julia中,
    a:b
    a:b:c
    构造
    Range
    对象。要在MATLAB中构造一个完整的向量, 使用
    收集(a:b)
    。但是,通常不需要调用
    collect
    <代码>范围将 在大多数情况下,与普通数组类似,但效率更高,因为它会延迟计算其值

将这两部分放在一起,您将看到
[0.5:0.5:10]
是一个数组,其中只有一个元素!它是一个包含范围的数组。因此,您的解决方案很简单:您需要
R=0.5:0.5:10
(不带括号)


我有这个错误方法错误:没有方法匹配*(::Array{Float64,1},::Array{Float64,1})X-ref:我有这个错误方法错误:没有方法匹配*(::Array{Float64,1},::Array{Float64,1})X-ref:OP想要将sigma更改为
sigma=0.319/R,因为[0.5:0.5:10]中的R
可能会更可读一些(不仅对他)使用
sigma=[0.319/R代表0.5:0.5:10中的R]
OP想将sigma改为
sigma=0.319/R,对于[0.5:0.5:10]中的R
使用
sigma=[0.319/R代表0.5:10中的R可能更具可读性(不仅对他而言)
julia> R = 0.5:0.5:10
       sigma = 0.319./R
20-element Array{Float64,1}:
 0.638
 0.319
 ⋮