第一次发帖,感谢阅读!
问题:我有一个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) 我想将矩阵的对角线元素设置为1,所以我使用diag()函数,但是出现错误。
aa=rand(3,3);
diag(aa)=ones(3)
Run Code Online (Sandbox Code Playgroud)
方法定义中的错误:必须显式导入函数LinAlg.diag才能进行扩展
我也尝试使用diag(aa)=[1,1,1],但似乎也不起作用。如何解决这个问题。
我有一个非常大的对称矩阵,称为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 上查找多项式的多个根的 紧缩方法。在紧缩方法中,新函数是由实际函数除以 生成的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) 我是 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) 我试图用另一个数组替换一个数组,但只在原始数组为零的地方。这些数组的维度相等。
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)
有没有一种很好的方法来做到这一点,而无需一次遍历每个列表/数组一个元素?我正在处理非常大的数组,不知道这是否太慢。任何帮助表示赞赏。
为什么 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)
但是,如果该结构是全局的,位于函数外部并在函数内部访问,则代码可以正常工作。
我正在尝试一些相当复杂的类型级计算.在那里,我有一些类型的标签(比如A,B和C),和功能对他们的工作,这是由与路径依赖的结果类型隐目击者表示:
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,我需要利用这样一个事实:在给定上述代码的情况下,原则上可以转换A为C(在这个例子中,我只需要组合,但实际上还有更多的事情涉及) .
但是,我不知道如何表达构图,因为我总是受到限制的限制,暗示不是传递性的; 以下代码失败,显示"隐式未找到":
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
我想运行 Zsh 而不加载任何我的.zshrc、Oh-my-zsh 等,就像我进行了全新安装而没有任何自定义内容一样。(喜欢emacs -q。)
有这方面的标志吗?否则,我可以为其设置某种“配置文件”吗?
我试图理解在 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 中实现这一点的正确方法是什么?任何帮助或意见表示赞赏!