【发布时间】:2013-11-19 12:09:56
【问题描述】:
我有一个由三个符号方程组成的系统:
(1) Ua = (Un*Ga -ia -(U2 -Ug2)*G3)/Ga;
(2) U2 = (Ug2*G3 -(Uc2m - Ua)*Ca*Fs)/(Ca*Fs + G3);
(3) Ug2 = ((Ua -Uc2m)*Ca*Fs* G3 -ig2*(Ca*Fs + G3)) / ((G3 + Gg2)*(Ca*Fs + G3) - G3*G3);
在 (2) 和 (1) 中替换 (3),然后在 (1) 中替换 (2),我有 (1) 如下:
Ua = (Un*Ga -ia -((((Ua -Uc2m)*Ca*Fs* G3 -ig2*(Ca*Fs + G3)) / ((G3 + Gg2)*(Ca*Fs + G3) - G3*G3)*G3 -(Uc2m - Ua)*Ca*Fs)/(Ca*Fs + G3) -((Ua -Uc2m)*Ca*Fs* G3 -ig2*(Ca*Fs + G3)) / ((G3 + Gg2)*(Ca*Fs + G3) - G3*G3))*G3)/Ga;
Ua 出现在成员的左侧和右侧。有没有办法(使用 Matlab 或任何其他工具):
- 简化左侧只有
Ua的表达式 - 从三个符号方程的原始系统开始,自动简化所有方程,指定哪些符号构成三个变量(将出现在左侧),并将其余的作为参数留在右侧。
【问题讨论】:
-
感谢您的建议。我做了替换,得到了长 (1') 表达式,现在我想简化 (1'),这样右边就没有 Ua,只有参数。
-
不确定是否有帮助,但您检查过
doc simplify吗?没有matlab你能得到你喜欢的结果吗? -
谢谢,simplify 很有用,但是给了我另一个扩展的表达方式,和我有的类似,当然更紧凑,但它是另一个 f(Ua)。我要找的是一个获取像“ax + (b +cx)/(d+e)”这样的表达式并得到“x=f(a,b,c,d)”的方法。可以通过手动求解长而简单的方程来完成,而无需 matlab,但我需要使用不同的长表达式多次重复该过程,因此自动化将很有用并防止最终的黑板错误。
-
你能展示你的代码,包括解决的调用吗?您是否考虑过增加迭代次数并指出方程需要求解的变量?
标签: variables matlab equation symbolic-math