Boost 如何缩放SPICE矩阵,使LU分解不';不要失败

Boost 如何缩放SPICE矩阵,使LU分解不';不要失败,boost,simulation,Boost,Simulation,我正在实现一个SPICE解算器。我有以下问题:假设我把两个二极管和一个电流源串联在一起(标准二极管)。我使用MNA和Boost-LU分解。问题是节点矩阵很快变得近乎奇异。我想我必须衡量这些价值观,但我不知道如何衡量,在互联网上也找不到任何东西。你知道如何进行这种缩放吗?从数值的角度来看,这类近似奇异矩阵有一种缩放技术。基本上,这种技术是将A的每一行除以该行绝对值的总和(或最大值)。您可以找到KLU,它是用于电路模拟的线性解算器,以了解更多详细信息 从SPICE模拟的角度来看,它使用所谓的Gmin

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

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


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

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

有必要使用为电路解算器应用开发的许多技巧中的部分或全部。一个好的开端是将指数函数和对数函数参数的范围缩小到合理的值——在大多数电路中,二极管正向电压从不超过1V,二极管反向电流不小于1pA

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