3

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

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

 L0s + (R1/(1 + R1 C1 s) + R3b + L3s + V3/s)/(R2a L2a s/(R2a + L2a s))

我想将数据重新排列为:

k1*s^-1 + k2*s^0 + k3*s^1 ...  

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

什么公式操作最适合用来制作这些类型的结构?
.
.
.
我相信该Collect函数无法根据 s 的指数处理分离事物,即使由于术语之间的划分级别,方程被简化然后 ExpandAll-ed - 有几层未解决的分数。

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

S c0 + c1 + d/dt*c2 + d^2/dt^2*c3 ...
4

2 回答 2

4

您的函数不是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]

我希望这是有帮助的。

于 2011-02-22T00:23:03.273 回答
1

我无法对您的原始方程式做任何事情,为了说明一种可能有用的方法,我将使用以下大大简化的版本。可能,这根本不是您需要的。

myeqn = Expand[L0 s + (R3b + L3 s + V3/s)/(R2a L2a s/(R2a + L2a s))]

给予:

在此处输入图像描述

Select,FreeQ现在MemberQ可以用来定义 k0, k1 ...,如下所示:

k0 = Select[myeqn, FreeQ[#, s] &]

在此处输入图像描述

相似地:

k1 = Expand[Select[myeqn, MemberQ[#, s] &] 1/s];

km1 = Expand[Select[myeqn, MemberQ[#, 1/s] &] s];

km2 = Expand[Select[myeqn, MemberQ[#, 1/s^2] &] s^2];

以下现在评估为 True (我假设最终您需要这样的东西)

Expand[k0 + k1 s + km1/s + km2/s^2] == myeqn

但是, Sasha上面给出的方法似乎要好得多:

scoeff = SeriesCoefficient[myeqn, {s, 0, n}];

例如,在哪里,

k0alt = First@scoeff[[1, 2]] 
于 2011-02-22T11:44:27.773 回答