根据导数或指数级别对 Mathematica 中的公式进行排序

kan*_*ndo 4 sorting wolfram-mathematica exponent derivative

我有一个阻抗方程,我已将其转移到 Mathematica,希望能简化它。它代表电路原理图,电路阻抗(Z,来自 V = iZ)是 s 平面中多项的很大一部分。

作为一个简短的例子,它可能看起来像:

 L0s + (R1/(1 + R1 C1 s) + R3b + L3s + V3/s)/(R2a L2a s/(R2a + L2a s))
Run Code Online (Sandbox Code Playgroud)

我想将数据重新排列为:

k1*s^-1 + k2*s^0 + k3*s^1 ...  
Run Code Online (Sandbox Code Playgroud)

与代表多余数据的所有值k(各种 R、L 和 C 值的分数)。

什么公式操作最适合用来制作这些类型的结构?



我相信该Collect函数无法根据 s 的指数处理分离事物,即使方程经过简化然后展开全部,由于项之间的划分级别 - 有几层未解析的分数。

在想知道这个问题的同时,我也很好奇,如果我将所有内容都转换到时域,是否可以按素数(导出/积分的次数)排序?

S c0 + c1 + d/dt*c2 + d^2/dt^2*c3 ...
Run Code Online (Sandbox Code Playgroud)

Sas*_*sha 5

您的函数不是s和中的多项式s^(-1)。我能理解你的问题的最接近的方法是将你的表达式发展成级数s==0,然后确定级数系数。这可以使用以下方法完成SeriesCoefficient

In[80]:= SeriesCoefficient[
 L0*s + (R1/(1 + R1*C1*s) + R3b + L3s + V3/s)/(R2a*
     L2a*(s/(R2a + L2a*s))), {s, 0, n}]

Out[80]= Piecewise[{
          {(R1*((-C1)*R1)^n*(L2a - C1*R1*R2a))/(L2a*R2a), n > 1}, 
          {L0 + (C1*R1^2*(-L2a + C1*R1*R2a))/(L2a*R2a), n == 1}, 
          {((-C1)*R1^2*R2a + L2a*(L3s + R1 + R3b))/(L2a*R2a), n == 0}, 
          {V3/L2a, n == -2}, 
          {(L3s*R2a + R1*R2a + R2a*R3b + L2a*V3)/(L2a*R2a), n == -1}
         }, 0]
Run Code Online (Sandbox Code Playgroud)

我希望这是有帮助的。