【问题标题】:Solve a system of N equations with N unknowns using Julia使用 Julia 求解具有 N 个未知数的 N 个方程组
【发布时间】:2023-02-03 19:17:51
【问题描述】:

我有 :

  • 一组N个位置,可以是工作场所或住所
  • 一个矢量观察到的工人 L_i,我在 N
  • 一个矢量观察到的居民 R_n,n 在 N
  • 距离矩阵观察到的在所有对住宅 n 和工作场所 i 之间
  • 一个形状参数epsilon

设置 N=3,epsilon=5,并且

d = [1 1.5 3 ; 1.5 1 1.5 ; 3 1.5 1] #distance matrix
L_i = [13  69  18] #vector of workers in each workplace
R_n = [27; 63; 10]

我想找到解决这个 N 方程组的工资向量(大小 N),

与我所有的工作场所。

我是否需要对工人和工资的向量实施迭代算法?或者是否可以直接解决这个系统?

【问题讨论】:

    标签: julia iteration linear-algebra equation-solving linear-equation


    【解决方案1】:

    如果给定了 L 和 R(即,不依赖于 w_i),您应该设置一个非线性搜索以从该引力方程中获得(的向量)工资(当然要对 w_i 进行归一化)。

    这是一个最小的例子。我希望它有所帮助。

    # Call Packages
    using Random, NLsolve, LinearAlgebra
    
    # Set seeds
    Random.seed!(1704)
    
    # Variables and parameters
    N    = 10
    R    = rand(N)
    L    = rand(N) * 0.5
    d    = ones(N, N) .+ Symmetric(rand(N, N)) / 10.0 
    d[diagind(d)] .= 1.0
    ε    = -3.0
    
    # Define objective function
    function obj_fun(x, d, R, L, ε) 
        
        # Find shares
        S_mat  = (x ./ d).^ε
        den    = sum(S_mat, dims = 1)
        s      = S_mat ./ den
    
        # Normalize last wage
        x[end] = 1.0
    
        # Define loss function
        loss   = L .- s * R
    
        # Return 
        return loss
        
    end
    
    # Run optimization
    x₀   = ones(N) 
    res  = nlsolve(x -> obj_fun(x, d, R, L, ε), x₀, show_trace = true)
    
    # Equilibrium vector of wages
    w    = res.zero
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-08-06
      • 1970-01-01
      相关资源
      最近更新 更多