gpt4 book ai didi

matlab - 如何在 Matlab 上为符号表达式编写 `lhs()` 或 `rhs()` 函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:57:35 25 4
gpt4 key购买 nike

我在 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

最佳答案

从R2017a开始,使用“lhs”和“rhs”作为

syms x
expr = [1-x^2==2*y; 1+x^2==x+y];
lhsExpr = lhs(expr)
lhsExpr =
1 - x^2
x^2 + 1


rhsExpr = rhs(expr)
rhsExpr =
2*y
x + y

关于matlab - 如何在 Matlab 上为符号表达式编写 `lhs()` 或 `rhs()` 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com