首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab/Mupad用于for输出的符号简化

Matlab/Mupad用于for输出的符号简化
EN

Stack Overflow用户
提问于 2014-02-02 15:00:13
回答 1查看 1.2K关注 0票数 9

我需要自动简化一些符号表达式,但是matlab的simplify函数不能完成我所需要的一切。

示例:

代码语言:javascript
复制
simplify(expand((ax + bx)^2 + (ay + by)^2))

从而导致输出

代码语言:javascript
复制
ax^2 + 2*ax*bx + ay^2 + 2*ay*by + bx^2 + by^2

因此,我尝试创建自己的规则,以使输出更漂亮

代码语言:javascript
复制
function [ result ] = simplify_pretty( term )
    read(symengine, 'simplify_pretty_rules.mu');
    result = feval(symengine, 'Simplify', term, 'SelectRules = simplify_pretty_rules')
end

加上"simplify_pretty_rules.mu“

代码语言:javascript
复制
simplify_pretty_rules := proc()
begin
    [
        Rule(#X^2 - 2 * #X * #Y + #Y^2, (#X - #Y)^2),
        Rule(#X^2 + 2 * #X * #Y + #Y^2, (#X + #Y)^2)
    ]
end_proc:

这是用来输入的就像..。

代码语言:javascript
复制
simplify_pretty(expand((ax + bx)^2 + (ay + by)^2))

当...but改为..。

代码语言:javascript
复制
simplify_pretty(expand(-(ax + bx)^2 - (ay + by)^2))

...it没有

因此,问题是:是否有可能制定适用于(几乎)所有情况的规则?我做错了什么?

编辑:,这似乎是一个普遍的问题。如果一个表达式有某种因素/混乱,那么matlab似乎很难弄清楚这一点。我需要一种强大的方法来做这种事情,即使它需要一些时间来处理。

Edit2:

我说的是哪种表达方式?

表达式只包含简单的数学操作(add/sub/mul/div)。

我想简化什么?

我想要简化的最常见的事情之一是二项式,它被扩展了(见原来的问题)。

表达式中包含的另一个常见的东西--扩展的点/交叉积--可以简化为cos(a)/sin(a)表达式,这些表达式可能在接下来的步骤中合并在一起。但这是更高级的,所以我不确定是否有有用的自动解决方案。

什么是“漂亮”在我的情况下?

我想最重要的是表达式的长度(越短越好)。但是优化表达式也是很好的,比如

代码语言:javascript
复制
a/2 + b/2 + c/2

代码语言:javascript
复制
(a + b + c) / 2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-07 02:29:14

对于我来说,如果将#n元素添加到规则中,那么simplify_pretty_rules文件如下所示:

代码语言:javascript
复制
simplify_pretty_rules := proc()
begin
    [
    Rule(#n * #X^2 - #n * 2 * #X * #Y + #n * #Y^2, #n * (#X - #Y)^2),
    Rule(#n * #X^2 + #n * 2 * #X * #Y + #n * #Y^2, #n * (#X + #Y)^2)
    ]
end_proc:

我相信在这种情况下#n指的是一个常数。这给了我:

代码语言:javascript
复制
term = 'expand((ax - bx)^2 - 3 *(ay + by)^2)';
feval(symengine, 'Simplify', term, 'SelectRules = simplify_pretty_rules')

ans =  (ax - bx)^2 - 3*(ay + by)^2

看来挺管用的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21512047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档