找回密码
 注册
Simdroid-非首页
查看: 182|回复: 10

[符号计算] 如何去系数?

[复制链接]
发表于 2011-3-25 22:13:25 | 显示全部楼层 |阅读模式 来自 四川
对多项式的系数,使用coefficent/coefficentList可以很方便的得到各阶系数,对于关于函数f的这样一个表达式:
a*f[-1] + b*f[0]+d*f[2]+e*f[3]
如何方便的求的其系数a/b/d/e和参数-1/0/2/3?
发表于 2011-3-26 10:57:59 | 显示全部楼层 来自 上海松江区
Simdroid开发平台
本帖最后由 eigen 于 2011-3-26 11:01 编辑

1# lisonic

你可以用Level函数。
  1. t=a*f[-1]+b*f[0]+d*f[2]+e*f[3];
  2. v = Level[t, {-1}]
复制代码


结果为:
{a,-1,b,0,d,2,e,3}

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-3-26 11:02:11 | 显示全部楼层 来自 上海松江区
还可以把上式改为矩阵形式

  1. Partition[v, 2]
复制代码
结果为:
{{a, -1}, {b, 0}, {d, 2}, {e, 3}}
回复 不支持

使用道具 举报

发表于 2011-3-26 11:35:31 | 显示全部楼层 来自 上海松江区
本帖最后由 eigen 于 2011-3-26 11:40 编辑

如果用Functional Programming, 可以这样做:

  1. result2 = Map[Apply[List,#]&,Apply[List,t]]
  2. f=Identity
  3. result2
复制代码
结果为:
{{a, -1}, {b, 0}, {d, 2}, {e, 3}}
回复 不支持

使用道具 举报

发表于 2011-3-26 13:07:54 | 显示全部楼层 来自 黑龙江哈尔滨
本帖最后由 TBE_Legend 于 2011-3-26 22:46 编辑

------------------ 无内容
回复 不支持

使用道具 举报

发表于 2011-3-26 14:16:58 | 显示全部楼层 来自 北京
5# TBE_Legend
t = a*f[-1] + b*f[0] + d*f[2] + e*f[3];
Cases[List @@@ List @@ t, {x_, f[y_]} -> {x, y}]

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-27 08:26:49 | 显示全部楼层 来自 四川
谢谢eigen,谢谢waynebuaa,谢谢大家!
回复 不支持

使用道具 举报

发表于 2011-3-27 09:18:49 | 显示全部楼层 来自 北京
7# lisonic
还可以这样滴:
t = a*f[-1] + b*f[0] + d*f[2] + e*f[3];
t /. {Plus -> List, Times -> List, f -> Identity}
回复 不支持

使用道具 举报

发表于 2011-3-27 09:21:20 | 显示全部楼层 来自 北京
6# waynebuaa
是啊,好久不见,
我还活着呢,^-^
回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-28 18:25:53 | 显示全部楼层 来自 四川
再回来反馈一下哈!
大家的帮助让我获益良多!
Cases和Level命令我以前从来没有用过的,现在我学习了!
再次谢谢大家了!

针对我的问题,对一些细节我作了改进,
这样可以对复杂系数和参数都可以操作了。
下面是我现在使用的命令,请大家指导哈!
t = Expand[1/2*f[-1/2] + (b/5 + 1)*f[0] + g*f[2 + j] + e*f[3]]
pst = Cases[Level[t, 2], f[i_] -> i] // DeleteDuplicates
coeff=Table[Coefficient[t, f[i]], {i, pst}]
回复 不支持

使用道具 举报

发表于 2011-3-29 14:47:07 | 显示全部楼层 来自 上海松江区
10# lisonic
也谢谢你提供了一个有趣的问题和更好的回答!你的代码比我的好。我的代码不能正确求出当自变量的值有重复时的系数。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 03:52 , Processed in 0.054917 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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