找回密码
 欢迎注册
查看: 38637|回复: 28

[原创] 怎么求复合后的方程?

[复制链接]
发表于 2012-7-29 10:55:00 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
举个例子,如果x^5=x+1,    y^7=y+1,  怎么求 z=x+y 所满足的代数方程?有没有简便方法?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-29 11:38:17 | 显示全部楼层
(*怎么求复合后的方程?*)
(*地址:http://bbs.emath.ac.cn/thread-4491-1-1.html*)
Clear["Global`*"];(*Clear all variables*)
(*求解方程1的所有解*)
eq1=NSolve[x^5==x+1,{x},4];
eq2=x/.eq1;
eq3=Transpose@Table[eq2,{k,1,7}];(*形成5*7的矩阵*)
(*求解方程2的所有解*)
eqa=NSolve[y^7==y+1,{y},4];
eqb=y/.eqa;
eqc=Table[eqb,{k,1,5}];(*形成5*7的矩阵*)
eq=eq3+eqc(*两个矩阵相加*)
eq=Union@Flatten@eq(*合并所有的相同的结果*)
  1. (*怎么求复合后的方程?*)
  2. (*地址:http://bbs.emath.ac.cn/thread-4491-1-1.html*)
  3. Clear["Global`*"];(*Clear all variables*)
  4. (*求解方程1的所有解*)
  5. eq1=NSolve[x^5==x+1,{x},4];
  6. eq2=x/.eq1;
  7. eq3=Transpose@Table[eq2,{k,1,7}];(*形成5*7的矩阵*)
  8. (*求解方程2的所有解*)
  9. eqa=NSolve[y^7==y+1,{y},4];
  10. eqb=y/.eqa;
  11. eqc=Table[eqb,{k,1,5}];(*形成5*7的矩阵*)
  12. eq=eq3+eqc(*两个矩阵相加*)
  13. eq=Union@Flatten@eq(*合并所有的相同的结果*)
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-29 11:39:55 | 显示全部楼层
求解结果:

{-1.575 - 0.090 I, -1.575 + 0.090 I, -1.575 - 0.615 I, -1.575 +
  0.615 I, -1.129 - 0.600 I, -1.129 + 0.600 I, -1.129 -
  1.305 I, -1.129 + 1.305 I, -0.629 - 0.821 I, -0.629 +
  0.821 I, -0.629 - 1.347 I, -0.629 + 1.347 I, -0.182 -
  0.131 I, -0.182 + 0.131 I, -0.182 - 2.037 I, -0.182 +
  2.037 I, -0.148 - 0.548 I, -0.148 + 0.548 I, -0.148 -
  1.253 I, -0.148 + 1.253 I, 0.348 - 0.3525 I, 0.348 + 0.3525 I,
0.357 - 0.2629 I, 0.357 + 0.2629 I, 0.798 - 0.183 I, 0.798 + 0.183 I,
  0.798 - 1.985 I, 0.798 + 1.985 I, 0.804 - 0.9526 I,
0.804 + 0.9526 I, 1.294 - 1.0840 I, 1.294 + 1.0840 I,
1.784 - 0.9009 I, 1.784 + 0.9009 I, 2.280}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-29 11:45:48 | 显示全部楼层
3# mathematica

我要求的是精确方程,非数值,谢谢你了,我想到了一个麻烦的方法,现在正学mathematica编程。
想请教的是,给定一个多项式P(x,y),怎么将每一项系数提取出?
这个语句怎么是错的呢?
For[n = 0, n <= 6, n++,
For[m = 0, m <= 4, m++, Print[Coefficient[p, x^n*y^m]];];]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-29 12:04:20 | 显示全部楼层
已发现问题并解决了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-29 12:48:56 | 显示全部楼层
  1. First@Reduce[{x^5 == x + 1, y^7 == y + 1, z == x + y}, {x, y}]
复制代码
or
  1. RootReduce[Root[#^5 - # - 1 &, 1] + Root[#^7 - # - 1 &, 1]]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-29 12:54:29 | 显示全部楼层
6# wayne
不是这个结果
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-29 13:04:19 | 显示全部楼层
4# creasson
CoefficientList[(z - y)^5 - (z - y) - 1, z]

Normal@CoefficientArrays[(z - y)^5 - (z - y) - 1, {y, z}]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-29 13:20:17 | 显示全部楼层
8# wayne
不是这个,我刚编了个程序,
  1. po = Table[G[i], {i, 0, 35}].Table[(x + y)^i, {i, 0, 35}];
  2. q = PolynomialRemainder[PolynomialRemainder[po, x^5 - x - 1, x],
  3.    y^7 - y - 1, y];
  4. eq = Table[W[i], {i, 0, 34}];
  5. For[n = 0, n <= 4, n++,
  6. For[m = 0, m <= 6, m++,
  7.   W[n*7 + m] = Coefficient[x*y*q, x^(n + 1)*y^(m + 1)];]]
  8. Solve[Union@Flatten@eq == 0]
复制代码
解出的结果是这样:
{{G[6] -> -((20034 G[2])/191), G[11] -> (77061 G[2])/191,
  G[12] -> (51163 G[2])/191, G[13] -> -((19040 G[2])/191),
  G[15] -> -((27874 G[2])/191), G[16] -> -((13792 G[2])/191),
  G[17] -> -((12785 G[2])/191), G[18] -> -((29225 G[2])/191),
  G[19] -> -((29750 G[2])/191), G[20] -> -((12152 G[2])/191),
  G[21] -> -((1820 G[2])/191), G[22] -> -((85 G[2])/191),
  G[23] -> -((2300 G[2])/191), G[24] -> -((2030 G[2])/191),
  G[25] -> -((448 G[2])/191), G[26] -> (42 G[2])/191,
  G[27] -> (21 G[2])/191, G[28] -> -((5 G[2])/191),
  G[29] -> -((5 G[2])/191), G[30] -> -((7 G[2])/191),
  G[31] -> -((7 G[2])/191), G[32] -> 0, G[33] -> 0, G[34] -> 0,
  G[35] -> G[2]/191, G[0] -> -((53 G[2])/191),
  G[5] -> (10429 G[2])/191, G[7] -> (34395 G[2])/191,
  G[9] -> -((32235 G[2])/191), G[10] -> -((11257 G[2])/191),
  G[14] -> -((46835 G[2])/191), G[4] -> -((7677 G[2])/191),
  G[8] -> -((36887 G[2])/191), G[3] -> (1393 G[2])/191,
  G[1] -> -((116 G[2])/191)}}
我现在需要按照这个结果赋值,即G[6] = -((20034 G[2])/191), G[11]=(77061 G[2])/191,
  G[12] = (51163 G[2])/191, G[13] = -((19040 G[2])/191),.......
请问怎么编程实现?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-29 13:21:56 | 显示全部楼层
上面打出来效果好差,不知道怎么回事,抱歉,请问怎么实现呢?

gxqcn:
问题出在你的帖子里有“[i]”,被误解为斜体的标签,造成排版效果不对。
解决方法有:
1、编辑帖子,点击“更多设定”,勾选“禁用 Discuz!代码”,按返回(副作用是:禁用Discuz!代码后,无法复杂排版);
2、将“[i]”中的“i ”前面或后面加一个空格;
3、将用代码标签(如上编辑好的效果),这是最佳方案。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-6-19 06:08 , Processed in 0.046843 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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