小编phi*_*ler的帖子

编写返回函数的 Julia 宏

第一次发帖,感谢阅读!

问题:我有一个Vector{String}- 调用它A- 其中每个元素都是等式的一部分,例如Ais的第一个元素"x[1] - (0.8*x[1])"。我想编写一个宏,它作为参数 i) a String- 调用它fn_name- 使用函数的名称,ii) 向量A,并返回一个名为的函数fn_name,它看起来像

function fn_name(f, x)
  f[1] = x[1] - (0.8*x[1])
  f[2] = (exp(x[4]) - 0.8*exp(x[3]))^(-1.1) - (0.99*(exp(x[4]) - 0.8*exp(x[4]))^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[1])*exp(x[2])^(0.30 - 1.0)))
  f[3] = exp(x[2]) - ((1.0 - 0.025)*exp(x[2]) + exp(x[1])*exp(x[2])^0.30 - exp(x[4]))
  f[4] = x[3] - (x[4])
end 

Run Code Online (Sandbox Code Playgroud)

其中每个 rhs 是一个元素

A = ["x[1] - (0.8*x[1])", "(exp(x[4]) - 0.8*exp(x[3]))^(-1.1) - (0.99*(exp(x[4]) …
Run Code Online (Sandbox Code Playgroud)

metaprogramming julia

6
推荐指数
1
解决办法
139
查看次数

在Julia中分配矩阵的对角线值,得到“方法定义错误”

我想将矩阵的对角线元素设置为1,所以我使用diag()函数,但是出现错误。

aa=rand(3,3);
diag(aa)=ones(3)
Run Code Online (Sandbox Code Playgroud)

方法定义中的错误:必须显式导入函数LinAlg.diag才能进行扩展

我也尝试使用diag(aa)=[1,1,1],但似乎也不起作用。如何解决这个问题。

linear-algebra julia

5
推荐指数
1
解决办法
1645
查看次数

如何将向量从上三角矩阵转移到原始对称矩阵?

我有一个非常大的对称矩阵,称为M。矩阵的大小M为 1000000 * 1000000。令表示 矩阵 的第 行和第 列的M[i,j]元素。对称矩阵的上三角部分保存为名为 的向量。。我有三个问题。ijMMVV = [M[1,1], M[1,2], M[2,2], M[1,3], M[2,3], M[3,3], M[1,4], M[2,4], M[3,4], M[4,4] ,..., M[1000000, 1000000]]

(1)如何V高效转换M

(2)如何高效地转换V为对称矩阵的上三角部分M?我的意思是转换V为另一个矩阵W。的上三角部分与 中的其他元素W相同,均为 0。MW

(3) 如何高效地转换V为对称矩阵的下三角部分M?我的意思是转换V为另一个矩阵Q。的下三角部分与 中的其他元素Q相同,均为 0。MQ

julia

5
推荐指数
1
解决办法
418
查看次数

多根查找的放气方法

我正在尝试实现用于在 Julia 上查找多项式的多个根的 紧缩方法。在紧缩方法中,新函数是由实际函数除以 生成的x - x_roots[i],并且必须找到新生成函数的根。但是g(x) = g(x) / (x - x_root) 给了我一个堆栈溢出错误,因为它可能产生了无限递归关系。如何在每个步骤中生成一个新函数?

function deflation(f::Function, order)
    roots=[]
    n=1
    g(x)=f(x)
    x_root=Muller_method(f,-5,0,5,1e-5,50)
    while n<=order
        x_root=Muller_method(a,-5,0,5,1e-5,50)
        g(x)=g(x)/(x-x_root)
        append!(roots,x_root)
        n=n+1
    end
return (roots)
Run Code Online (Sandbox Code Playgroud)

numerical-methods julia

5
推荐指数
1
解决办法
78
查看次数

在 Julia 中导入 CSV 文件:ArgumentError:提供有效的接收器参数,例如“使用数据帧;CSV.read(source, DataFrame)`

我是 Julia 的新手,当我尝试导入 csv 文件时

using CSV
CSV.read("C:\\Users\\...\\loan_predicton.csv")
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

Error : ArgumentError: provide a valid sink argument, like `using DataFrames; CSV.read(source, DataFrame)`
Run Code Online (Sandbox Code Playgroud)

julia

5
推荐指数
1
解决办法
1507
查看次数

在 Julia 中仅用另一个数组的值替换数组中的零

我试图用另一个数组替换一个数组,但只在原始数组为零的地方。这些数组的维度相等。

Array1 = [0, 2, 4, 2, 5, 0, 0, 2, 5]
Array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试使用下面的代码将 array2 叠加到数组 1 中,其中 array1 的值等于零。

Array1[Array1 .== 0] .= Array2
Run Code Online (Sandbox Code Playgroud)

从这里我希望得到以下...

Array1 = [1, 2, 4, 2, 5, 6, 7, 2, 5]
Run Code Online (Sandbox Code Playgroud)

但相反,我收到一个错误...

ERROR: DimensionMismatch("array could not be broadcast to match destination")
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来做到这一点,而无需一次遍历每个列表/数组一个元素?我正在处理非常大的数组,不知道这是否太慢。任何帮助表示赞赏。

arrays julia

5
推荐指数
1
解决办法
219
查看次数

为什么可变结构不能在 Julia 的函数内部定义

为什么 Julia 的函数内部不能定义可变结构体?

function test()
    mutable struct ABC
        x
        y
        z
        a
    end 
end
Run Code Online (Sandbox Code Playgroud)

抛出错误:

ERROR: LoadError: syntax: "struct" expression not at top level
Run Code Online (Sandbox Code Playgroud)

但是,如果该结构是全局的,位于函数外部并在函数内部访问,则代码可以正常工作。

struct global local julia

5
推荐指数
1
解决办法
623
查看次数

使用隐式证人组合类型级函数

我正在尝试一些相当复杂的类型级计算.在那里,我有一些类型的标签(比如A,BC),和功能对他们的工作,这是由与路径依赖的结果类型隐目击者表示:

class A
class B
class C

trait F1[T] { type result }
trait F2[T] { type result }

implicit object f1OfA extends F1[A] { type result = B }
implicit object f2OfB extends F2[B] { type result = C }

trait Composed[T] { type result }
Run Code Online (Sandbox Code Playgroud)

在计算过程中,当"实现"时Composed,我需要利用这样一个事实:在给定上述代码的情况下,原则上可以转换AC(在这个例子中,我只需要组合,但实际上还有更多的事情涉及) .

但是,我不知道如何表达构图,因为我总是受到限制的限制,暗示不是传递性的; 以下代码失败,显示"隐式未找到":

implicit def composed1[X](implicit f2DotF1OfX: F2[F1[X]]): Composed[X] =  
  new Composed[X] { type result = f2DotF1OfX.result }

implicitly[Composed[C]]
Run Code Online (Sandbox Code Playgroud)

我最初尝试写的内容如下: …

type-systems scala path-dependent-type implicits type-level-computation

4
推荐指数
1
解决办法
160
查看次数

如何在不进行任何自定义的情况下运行 zsh?

我想运行 Zsh 而不加载任何我的.zshrc、Oh-my-zsh 等,就像我进行了全新安装而没有任何自定义内容一样。(喜欢emacs -q。)

有这方面的标志吗?否则,我可以为其设置某种“配置文件”吗?

zsh zshrc

4
推荐指数
1
解决办法
2663
查看次数

函数中 julia 中的抽象类型数组

我试图理解在 Julia 中的输入并遇到以下问题Array。我写了一个函数bloch_vector_2d(Array{Complex,2});详细的实施是无关紧要的。打电话时,这里是投诉:

julia> bloch_vector_2d(rhoA)
ERROR: MethodError: no method matching bloch_vector_2d(::Array{Complex{Float64},2})
Closest candidates are:
  bloch_vector_2d(::Array{Complex,2}) at REPL[56]:2
  bloch_vector_2d(::StateAB) at REPL[54]:1
Stacktrace:
 [1] top-level scope at REPL[64]:1
Run Code Online (Sandbox Code Playgroud)

问题是父类型的数组不会自动成为子类型数组的父级。

julia> Complex{Float64} <: Complex
true

julia> Array{Complex{Float64},2} <: Array{Complex,2}
false
Run Code Online (Sandbox Code Playgroud)

我认为将这一点强加给 julia 是有道理的Array{Complex{Float64},2} <: Array{Complex,2}。或者在 Julia 中实现这一点的正确方法是什么?任何帮助或意见表示赞赏!

julia

4
推荐指数
2
解决办法
175
查看次数