V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jay54520
V2EX  ›  程序员

如何解含有多个变量的线性方程组?

  •  
  •   Jay54520 · 2021-05-07 09:44:16 +08:00 · 2172 次点击
    这是一个创建于 1056 天前的主题,其中的信息可能已经有所发展或是发生改变。
    b = c - d * a
    f = d + d * a
    g = f * h
    e = g * i + b
    

    除了 a 都是变量(在运行时都是常量),所以这是一个只含有一个未知数的方程组,求 a 的表达式。 Symbolab 好像不支持用字母表示常量,是不是用法不对?

    第 1 条附言  ·  2021-05-07 10:18:09 +08:00
    还遗漏了一个等式
    j = e / f 或 j = e / (f - b)
    第 2 条附言  ·  2021-05-07 11:49:43 +08:00

    通过 SymPy 解决,#5 提供的方法。

    11 条回复    2021-05-07 20:28:41 +08:00
    weizhen199
        1
    weizhen199  
       2021-05-07 09:56:07 +08:00
    这种电脑用矩阵法来解比较合适吧(猜测
    Jay54520
        2
    Jay54520  
    OP
       2021-05-07 10:15:54 +08:00
    还遗漏了一个等式
    j = e / f 或 j = e / (f - b)
    misdake
        3
    misdake  
       2021-05-07 10:28:22 +08:00
    没看懂。既然只有 a 是未知数,那随便拿一个方程不就能求出来了么
    Jay54520
        4
    Jay54520  
    OP
       2021-05-07 10:52:59 +08:00
    @misdake 求的是用其他变量如何表示 a 。比如 a = (变量 1 + 变量 2) / (变量 3 - 变量 4)。
    princelai
        5
    princelai  
       2021-05-07 11:24:35 +08:00   ❤️ 4
    ```python
    from sympy import symbols, init_printing, solve

    init_printing(use_unicode=True)

    a, c, d, h, i = symbols('a c d h i')

    b = c - d * a
    f = d + d * a
    g = f * h
    e = g * i + b
    j = e / f

    solve(j, a)
    ```

    Out[53]:
    ⎡-(c + d⋅h⋅i) ⎤
    ⎢─────────────⎥
    ⎣ d⋅(h⋅i - 1) ⎦
    Imindzzz
        6
    Imindzzz  
       2021-05-07 14:40:47 +08:00
    这个网站不错
    cartmanie
        7
    cartmanie  
       2021-05-07 15:46:15 +08:00 via iPhone
    Wolfram alpha
    LeeReamond
        8
    LeeReamond  
       2021-05-07 15:55:36 +08:00
    算法的话,个人想法是,首先将每个等式标准化,然后依次搜索出现频率最低的变量,将其消去,最后求解。循环直到所有变量都解明
    Jooooooooo
        9
    Jooooooooo  
       2021-05-07 16:14:16 +08:00
    线性方程组本质是个矩阵
    YvesX
        10
    YvesX  
       2021-05-07 16:21:19 +08:00
    你学线性代数的时候有没有好奇过解方程组为什么要做得这么机械
    这就是它的典型用途
    maxwel1
        11
    maxwel1  
       2021-05-07 20:28:41 +08:00 via Android
    mathematica:就这?还需要喊我?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1045 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:15 · PVG 03:15 · LAX 12:15 · JFK 15:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.