MATLAB如何对符号方程中相同分母的分数项进行分组合并
MATLAB符号表达式同分母项分组实现方案
现有函数组合实现
MATLAB符号数学工具箱未提供直接实现该需求的独立函数,可通过多个内置函数组合完成需求,核心逻辑为拆分所有加和项、提取分项的分子分母、按分母聚合分子、重组表达式,示例代码如下:
% 声明符号变量 syms x1 x2 x3 x4 f1(x) f2(x) % 构造示例原始表达式(包含多组不同分母的加和项) raw_expr = x1/f1(x) + x2/f2(x) + x3/f1(x) + x4/f2(x); % 1. 拆分所有独立加和项 term_list = children(raw_expr); % 2. 初始化映射表存储<分母, 对应分子和> denominator_map = containers.Map('KeyType','char','ValueType','any'); % 3. 遍历所有分项聚合同分母分子 for idx = 1:length(term_list) [numerator, denominator] = numden(term_list(idx)); den_str = char(denominator); if isKey(denominator_map, den_str) denominator_map(den_str) = denominator_map(den_str) + numerator; else denominator_map(den_str) = numerator; end end % 4. 重组为同分母分组后的表达式 grouped_expr = 0; den_list = keys(denominator_map); for idx = 1:length(den_list) current_den = str2sym(den_list{idx}); current_num_sum = denominator_map(den_list{idx}); grouped_expr = grouped_expr + current_num_sum / current_den; end
运行上述代码后,grouped_expr输出结果为(x1 + x3)/f1(x) + (x2 + x4)/f2(x),符合同分母分组要求。
特殊场景适配
如果你的表达式包含带常数系数的分母、嵌套分式,可对上述逻辑做适配调整:
- 若需要将仅常数系数不同的同函数分母分为一组,可提取分母的常数系数移至分子侧,再做聚合
- 若存在嵌套分式,可先调用
numden对整个表达式做初步展开后再拆分分项
内容的提问来源于stack exchange,提问作者Green Haired Orangutan
相关产品推荐
相关产品推荐

