代码之家  ›  专栏  ›  技术社区  ›  major4x

如何缩放SPICE矩阵,使LU分解不会失败

  •  0
  • major4x  · 技术社区  · 11 年前

    我正在实现SPICE求解器。我有以下问题:假设我将两个二极管和一个电流源串联(标准二极管)。我使用MNA和Boost LU分解。问题是节点矩阵很快变得接近奇异。我想我必须衡量这些价值,但我不知道如何衡量,而且我在互联网上找不到任何东西。你知道如何进行缩放吗?

    2 回复  |  直到 11 年前
        1
  •  0
  •   Trent Huang    11 年前

    从数值的角度来看,这类近奇异矩阵有一种尺度技术。基本上,这种技术是将A的每一行除以该行中绝对值的总和(或最大值)。您可以找到KLU,它是用于电路模拟的线性解算器,以了解更多详细信息。

    从SPICE仿真的角度来看,它使用所谓的Gmin步进技术来迭代计算并逼近真实答案。您可以在SPICE项目QUCS(相当通用电路模拟器)的文档中找到这一点。

        2
  •  0
  •   Marcel Hendrix    9 年前

    当矩阵既有非常大的条目,也有非常小的条目时,缩放没有帮助。

    有必要使用为电路求解器应用开发的许多技巧中的一些或全部。一个好的开始是将指数函数和对数函数参数的范围限制在合理的值——在大多数电路中,二极管正向电压永远不超过1V,二极管反向电流不低于1pA。

    实际上,看看 全部的 库函数,并将其封装在代码中,使其参数和结果适合于电路解决目的。简单的裁剪有时已经足够好了,但最好确保函数保持(两次)可微和连续。