声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2955|回复: 8

[编程技巧] 求助 怎样使一个符号多项式按X升幂排列

[复制链接]
发表于 2007-4-28 01:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
怎样使一个符号多项式按X升幂排列
回复
分享到:

使用道具 举报

发表于 2007-4-28 13:39 | 显示全部楼层

回复 #1 tracysmb 的帖子

降幂排列可以不,用collect(f,x)其中f为表达式,x就是你的变量x

评分

1

查看全部评分

 楼主| 发表于 2007-4-28 23:50 | 显示全部楼层
thanks!升幂呢?
 楼主| 发表于 2007-4-28 23:52 | 显示全部楼层
好像没用啊Sn =

a1*q^12+a1*q^13+a1*q^16+a1+a1*q^18+a1*q^20+a1*q^10+a1*q^9+a1*q^8+a1*q^7+a1*q^5+a1*q^15+a1*q^14+a1*q+a1*q^17+a1*q^19+a1*q^6+a1*q^21+a1*q^4+a1*q^23+a1*q^2+a1*q^3+a1*q^22+a1*q^25+a1*q^24+a1*q^26+a1*q^27+a1*q^28+a1*q^29+a1*q^11

>> collect(Sn,q)

ans =

a1*q^12+a1*q^13+a1*q^16+a1+a1*q^18+a1*q^20+a1*q^10......
collect 合并同类项啊
发表于 2007-4-29 09:30 | 显示全部楼层

求助 怎样使一个符号多项式按X升幂排列

不会吧,我的书上写的是降幂排列啊
难道书错了?
未命名.JPG
发表于 2007-4-29 10:39 | 显示全部楼层

回复 #4 tracysmb 的帖子

你的多项式比较长,我截取了一段用多项式求根然后再利用根求多项式排列了一下,可以了就,那个命令我也不知道怎么回事,^_^,可能是书写错了。
t=sym('a*q^12+a*q^13+a*q^16+a+a*q^18+a*q^20+a*q^10=0');
z=solve(t);
y=[-.91846991308766345110241065181859-.19804415730143605030891369399428*i
-.91846991308766345110241065181859+.19804415730143605030891369399428*i
-.87063480935270209738192192889228-.44847799408519015935469504320904*i
-.87063480935270209738192192889228+.44847799408519015935469504320904*i
-.59098258668623449302457183440812-1.0263359689097920808145699739398*i
-.59098258668623449302457183440812+1.0263359689097920808145699739398*i
-.57619900916599742383650234733897-.73668222986171349368313201403211*i
-.57619900916599742383650234733897+.73668222986171349368313201403211*i
-.13715373613165086565567188456091-.94306972355400808457376086159105*i
-.13715373613165086565567188456091+.94306972355400808457376086159105*i
  .22092517412424943572759811797316-1.0087040281777089448881503074906*i
  .22092517412424943572759811797316+1.0087040281777089448881503074906*i
  .43155857183233074645711379622883-1.0148872092526024771555964780655*i
  .43155857183233074645711379622883+1.0148872092526024771555964780655*i
  .63857763595645332730103874236754-.70306415177456003859261729564817*i
  .63857763595645332730103874236754+.70306415177456003859261729564817*i
  .87607429279484027976511654129812-.20939738225595381192537413064752*i
  .87607429279484027976511654129812+.20939738225595381192537413064752*i
.92630437971637454175021144915122-.50854680790016173441233382765621*i
  .92630437971637454175021144915122+.50854680790016173441233382765621*i];
pp=poly(y);
p=poly2sym(round(pp))
其中y是上面solve命令求出的多项式的根,可能需要手工操作一下,因为matlab显示的时候不是以标准列向量的形式显示的,命令运行结果
x^20+x^18+x^16+x^13+x^12+x^10+1
这里没有a是因为你的多项式里面所有项的系数都是a的一次幂,所以计算的时候就去掉了
发表于 2007-4-29 10:41 | 显示全部楼层

回复 #4 tracysmb 的帖子

其他我也没办法了
发表于 2007-4-30 15:26 | 显示全部楼层

回复 #7 咕噜噜 的帖子

用horner勉强能达到效果

评分

1

查看全部评分

发表于 2007-4-30 15:56 | 显示全部楼层
这个很简单,换个思路就行了.
%%%-------------------------------------------------------%%%
打开Mathematica软件,利用命令 Expand 即可.
%%%-------------------------------------------------------%%%
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 13:27 , Processed in 0.063521 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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