Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab Maxima:如何从方程组中得到一个变量作为其他变量函数的和?_Matlab_Equation_Maxima_Equation Solving_Parametric Equations - Fatal编程技术网

Matlab Maxima:如何从方程组中得到一个变量作为其他变量函数的和?

Matlab Maxima:如何从方程组中得到一个变量作为其他变量函数的和?,matlab,equation,maxima,equation-solving,parametric-equations,Matlab,Equation,Maxima,Equation Solving,Parametric Equations,问题是,;我有一个方程组,它描述了一个系统的工作原理。(本例中为电子系统)系统具有内部变量以及输入和输出变量。我想要的是,根据输入变量得到输出变量,这样输出变量被描述为输入变量函数的和+常数。(当然,只有在特定情况下,这在数学上是可能的。) 最好我想使用Maxima计算机代数系统,但我也对在Matlab中使用它的方法感兴趣 让我举两个例子;我希望你能明白。O表示输出变量,I表示输入变量,x表示内部变量,p表示参数 1: e1:O=x_1*p_1+x_2*p_2 e2:x_1=x_2+I_1*p_

问题是,;我有一个方程组,它描述了一个系统的工作原理。(本例中为电子系统)系统具有内部变量以及输入和输出变量。我想要的是,根据输入变量得到输出变量,这样输出变量被描述为输入变量函数的和+常数。(当然,只有在特定情况下,这在数学上是可能的。)

最好我想使用Maxima计算机代数系统,但我也对在Matlab中使用它的方法感兴趣

让我举两个例子;我希望你能明白。O表示输出变量,I表示输入变量,x表示内部变量,p表示参数

1: e1:O=x_1*p_1+x_2*p_2

e2:x_1=x_2+I_1*p_3

e3:x_2=I_2*p_4+p_5

解决方案#1:
O=p#u 1*p#u 3*I#u 1+p#u 4*(p#u 1+p#u 2)*I#u 2+p#u 5*(p#u 1+p#4)

2: e1:O=x_1*p_1+x_2*p_2

e2:x_1=sqrt(I_1)*p_3

e3:x_2=tan(I_2*p_4)


解#2:
O=p_1*p_3*sqrt(I_1)+p_2*tan(p_4*I_2)
极大值有一定的符号解方程组的能力,尽管它在这方面不是很强。尽管如此,我认为Maxima至少可以解决给出的例子

(%i2) e1:O = x_1*p_1+x_2*p_2
(%o2)                        O = p_2 x_2 + p_1 x_1
(%i3) e2:x_1 = x_2+I_1*p_3
(%o3)                         x_1 = x_2 + I_1 p_3
(%i4) e3:x_2 = I_2*p_4+p_5
(%o4)                         x_2 = p_5 + I_2 p_4
(%i5) eliminate([e1,e2,e3],[x_1,x_2])
(%o5)      [(p_2 + p_1) p_5 + I_2 (p_2 + p_1) p_4 + I_1 p_1 p_3 - O]
(%i6) solve(%,O)
(%o6)    [O = (p_2 + p_1) p_5 + (I_2 p_2 + I_2 p_1) p_4 + I_1 p_1 p_3]
(%i7) e1:O = x_1*p_1+x_2*p_2
(%o7)                        O = p_2 x_2 + p_1 x_1
(%i8) e2:x_1 = sqrt(I_1)*p_3
(%o8)                         x_1 = sqrt(I_1) p_3
(%i9) e3:x_2 = tan(I_2*p_4)
(%o9)                         x_2 = tan(I_2 p_4)
(%i10) eliminate([e1,e2,e3],[x_1,x_2])
(%o10)            [p_2 tan(I_2 p_4) + sqrt(I_1) p_1 p_3 - O]
(%i11) solve(%,O)
(%o11)            [O = p_2 tan(I_2 p_4) + sqrt(I_1) p_1 p_3]
注意,在求解
O
之前,我调用了
remove
来从方程中消除附带变量
x_1
x_2
;排除附带变量后,
O
仅以输入和参数表示


如果你尝试处理更复杂的方程,你可能会遇到极大值的限制。通过使用其他函数(如
to_poly_solve
)可能会取得更大的进展,这些函数可以求解一些涉及部首的方程。如果遇到麻烦,您可能会考虑向最大值邮件列表发布消息。请参阅:

从这个问题(至少对我来说)不清楚您期望的是什么样的方程式以及已知的方程式。在您提供的示例中,我们是否可以假设所有数量都已知,但O?如果是这样,你的方程是线性的:是否总是这样?你能用线性的方式重写这个方程吗?你想要符号解还是数值解?请澄清。谢谢,我们想把O作为I的函数,我们想看看每个I对O有什么影响。我们不知道任何值,只知道它们之间的关系(方程组)。我需要一个象征性的解决方案,如示例中所示。如果我试图描述的不是一个线性系统,那么我不能将它重写为线性系统(例如sqrt(I_1)),但即使它是一个线性系统并且可以重写,这(重写它)基本上就是我希望Maxima/Matlab做的事情,以避免错误。如果系统是线性的,则结果必须是向量I乘以仅包含p(参数)的向量。您可能需要查看符号方程工具箱。如果你想要一个数值解,一旦参数已知,那就是另一个故事(或者灵敏度分析修正一些参数);但如果你真的想要文字解决方案,你可以使用solve(你需要工具箱)。或者你可以编写自己的符号解算器,但是——我想——你最好是手工解算,并尝试使用示例进行测试(或使用其他软件;例如:Mathematica)。好的,我有工具箱(符号数学工具箱)。你能给我一个第一个例子(或第二个)的解决方案的示例代码吗,这样我就可以得到这个想法了?我不知道在谷歌上查什么,我应该使用什么功能。