【发布时间】:2013-01-22 15:36:17
【问题描述】:
我在MATLAB 中有一个带有== 运算符的符号表达式,我可以在solve() 中使用它。我想要的是将表达式的左侧和右侧分成两个单独的符号表达式。
例如:
expr = sym('[1-x^2==2*y; 1+x^2==x+y]');
side1 = lhs(expr); % returns side1 = [1-x^2; 1+x^2];
当然我的表达式要复杂得多,而且总是向量或矩阵的形式。
解决方法 1
我可以使用 MuPAD 内置函数 lhs() 但我想知道是否可以仅使用 MATLAB 函数来做到这一点,我想让它适用于表达式向量,而不仅仅是一个值。
这是我目前所拥有的,可以按预期工作。也许结果填充可以通过使用: 以某种方式矢量化,但我没有设法让它工作。
function [ r ] = lhs( expr )
%LHS Returns the left hand side an expression
% LHS(sym('[1-x^2==2*y'; 1+x^2==x+y]')) = [1-x^2; 1+x^2]
cmd = @(e)['lhs(',char(e),')'];
[m,n] = size(expr);
r = sym(zeros(m,n));
for i=1:m
for j=1:n
r(i,j) = evalin(symengine, cmd(expr(i,j)));
end
end
end
【问题讨论】:
-
+1:这是个好问题。
-
我很惊讶我只有一个答案。
标签: matlab symbolic-math mupad