查看: 172|回复: 6|关注: 0

[已解决] matlab字母方程计算过程中怎么使得到的分数是上下显示的

[复制链接]

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
方程里面的字母太多了,得到的结果太长了,想请教下大神们有没有能够使分数是上下显示的函数

论坛优秀回答者

8

主题

1448

帖子

253

最佳答案
  • 关注者: 139
发表于 2019-11-12 10:26:17 | 显示全部楼层 |此回复为最佳答案
pretty(ans)
或者用新版本的matlab,live script
兴趣是最好的导师——让Matlab入门从游戏开始
https://www.ilovematlab.cn/thread-546885-1-1.html

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-11-12 10:28:59 | 显示全部楼层
悟得 发表于 2019-11-12 10:26
pretty(ans)
或者用新版本的matlab,live script

可以了!!万分感谢,还想再问一下用subexpr是系统提取公因式,有没有哪个函数可以固定替换公因式的呢

禁止发言

5 麦片

财富积分



0

主题

21

帖子

0

最佳答案
发表于 2019-11-12 17:13:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛优秀回答者

8

主题

1448

帖子

253

最佳答案
  • 关注者: 139
发表于 2019-11-12 19:11:37 | 显示全部楼层
qscdc 发表于 2019-11-12 10:28
可以了!!万分感谢,还想再问一下用subexpr是系统提取公因式,有没有哪个函数可以固定替换公因式的呢 ...

subexpr是代替表达式

例如 y=(a+b+c)/d  你可以令a+b+c=x  式子化简为y=x/d。这是subexpr的作用,没太懂你说的固定什么
兴趣是最好的导师——让Matlab入门从游戏开始
https://www.ilovematlab.cn/thread-546885-1-1.html

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-11-12 22:16:24 | 显示全部楼层
本帖最后由 qscdc 于 2019-11-13 08:20 编辑
悟得 发表于 2019-11-12 19:11
subexpr是代替表达式

例如 y=(a+b+c)/d  你可以令a+b+c=x  式子化简为y=x/d。这是subexpr的作用,没太懂 ...

因为subexpr代替表达式是根据计算的方程,每一个结果都提取了不同的sigma
比如说y=[a(b+c)-1]/[a(b+c)+d]
直接使用subexpr就是系统自动提取sigma=a(b+c),再进行化简
但我想让sigma=(b+c)进行化简,就是固定代替这个sigma表达式,在后面计算的每个结果里面都能够将(b+c)简化为sigma不知道该怎么令还是说用什么函数之类的

论坛优秀回答者

8

主题

1448

帖子

253

最佳答案
  • 关注者: 139
发表于 2019-11-13 10:43:28 | 显示全部楼层
qscdc 发表于 2019-11-12 22:16
因为subexpr代替表达式是根据计算的方程,每一个结果都提取了不同的sigma
比如说y=[a(b+c)-1]/[a(b+c)+d]  ...

啊,我明白你意思了。但是我不会……subexpr好像没有输入要替代的公因数的位置,估计这个语句不行。

你可以再开个贴问一下。


下面是subexpr的代码,有耐心可以研究下。
  1. function [Y,sigma] = subexpr(X,signame)
  2. %SUBEXPR Rewrite in terms of common subexpressions.
  3. %   [Y,SIGMA] = SUBEXPR(X) or [Y,SIGMA] = SUBEXPR(X,'SIGMA')
  4. %   rewrites the symbolic expression X in terms of a common
  5. %   subexpression.
  6. %
  7. %   Example:
  8. %      syms a b c d x
  9. %      t = solve(a*x^3+b*x^2+c*x == 0, x);
  10. %      [r,s] = subexpr(t,'s');
  11. %
  12. %   See also SYM/PRETTY, SYM/SUBS.

  13. %   Copyright 1993-2016 The MathWorks, Inc.

  14. % Get name of subexpression matrix
  15. if nargin == 2 && isstring(signame) && isscalar(signame)
  16.   signame=char(signame);
  17. end

  18. if nargin == 1
  19.     signame = 'sigma';
  20. elseif isa(signame,'sym') && isvarname(char(signame))
  21.     signame = char(signame);
  22. elseif ~ischar(signame)
  23.     signame = inputname(2);
  24.     if isempty(signame)
  25.         error(message('symbolic:subexpr:NoName'));
  26.     end
  27. end

  28. X = privResolveArgs(X);
  29. X = X{1};

  30. if ismember(sym(signame),symvar(X))
  31.   error(message('symbolic:subexpr:DuplicateName',signame));
  32. end

  33. [Y,sigma] = mupadmexnout('symobj::subexpr',X,signame);
  34. if strcmp(char(sigma),'#NULL')
  35.     sigma = sym([]);
  36. end

  37. if (nargout < 2) && ~isempty(sigma)
  38.    assignin('caller',signame,sigma);
  39.    loose = strcmp(get(0,'formatspacing'),'loose');
  40.    if loose, disp(' '); end
  41.    disp([signame,' = ']);
  42.    if loose, disp(' '); end
  43.    disp(sigma);
  44.    if loose, disp(' '); end
  45. end
复制代码

兴趣是最好的导师——让Matlab入门从游戏开始
https://www.ilovematlab.cn/thread-546885-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表