作业帮 > 综合 > 作业

如何用Mathematica实现

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/06/13 19:52:16
如何用Mathematica实现
比如现在有这样一个式子:
Product[Sum[f[ j ]/x[ i ]],{j, n}]], {i, k}] {c[1] (-1 + c[2]).(-n+1+c[n]}

当k=2,n=2时,上面的式子为
(f[1]/x[1]+f[2]/x[1]) (f[1]/x[2]+f[2]/x[2]) {c[1] (-1 + c[2])} (1式);

程序的大概思路是这样的:

1、让(1)式中的 (f[1]/x[2]+f[2]/x[2]) 先与 {c[1] (-1 + c[2])}相乘(即从后向前乘)结果为

(f[1]/x[2]) c[1] (-1 + c[2]) + (f[2]/x[2]) c[1] (-1 + c[2]) (2式);

(注: c[1] (-1 + c[2]) 这项相乘的时候不展开,保持原来的形式)

2、接下来,以(2式)中的第一项 (f[1]/x[2]) c[1] (-1 + c[2]) 为例,
f[1]与 c[1] (-1 + c[2]) 相乘,c[1]就变成(-1+c[1]) ,

即 (f[1]/x[2]) c[1] (-1 + c[2]) =(f[1]/x[2]) (-1+c[1] )(-1 + c[2]) , ( 3式);
即有一个f[1]则 c[1]降1,

同理(2)式中的第二项
(f[2]/x[2]) c[1] (-1 + c[2]) = (f[2]/x[2]) c[1] (-2+ c[2]) (4式);
即有一个f[2]则 c[2]降1,

3、根据 2 的描述可知,(2式)的输出为
(f[1]/x[2]) (-1+c[1] )(-1 + c[2]) +(f[2]/x[2]) c[1] (-2+ c[2]) (5式);

但是对于c[1]、c[2]减去相同系数的项要刨除掉,即(-1+c[1] )(-1 + c[2])
这一项去掉,那么(5)式变为
(f[2]/x[2]) c[1] (-2+ c[2]) (6式);

4、然后再将(1)式中的 (f[1]/x[1]+f[2]/x[1]) 与(6式)相乘,
仍要遵循1、2、3中的规律.
(f[1] /x[1] +f[2]/x[1]) (f[2]/x[2]) c[1] (-2+ c[2])
=(f[1]/x[1]) (f[2]/x[2])c[1] (-2+ c[2]) +(f[2]/x[1]) (f[2]/x[2])c[1] (-2+ c[2])
= (f[1]/x[1]) (f[2]/x[2])(-1+c[1])(-2+ c[2]) +(f[2]/x[1]) (f[2]/x[2])c[1](-3+ c[2])

所以,对于(1)式最后的输出为
(f[1]/x[1])(f[2]/x[2]) (-1+c[1]) (-2+ c[2]) +(f[2]/x[1])(f[2]/x[2]) c[1] (-3+ c[2])

当n、k取较大的值是,情况要复杂些,但是仍按照上面的规律,从
Sum[f[ j ]/x[ k ],{ j,n}] 到Sum[f[ j ]/x[1],{ j,n}] 依次与{c[1] (-1 + c[2]).(-n+1+c[n] } 相乘.f[ j ]出现一次次与其相乘的c[ j ]就减一;对于 c[j]只要在同一项中有两个c[ j ]减去相同的系数,这一项就去掉..
如何用Mathematica实现
嗯,大致能感觉到你在思路改进上的努力,但是我想说的是,我的感觉是——我的直觉是,你的思路上了歧途了,这种内置函数一个也用不进去,模式匹配不好用,要在各种步骤上阻碍软件对等式的自动计算,整体透着浓浓的过程式编程的味道的实现思路……用这种思路是没法发挥出Mathematica的力量的.“多项式”关键字下有这么多的内置函数,难道其中就没有你用的上的吗?
此外,需要注意的是,你的要求越是具体(至今为止你对你希望实现的程序的所有步骤都做了十分详细的要求)就越有可能限制答题者的思路,因为,你的要求中的所有步骤可能对你来说都是必要的,可是,在已经答了这么多个你的问题的现在,我不禁想问,这些步骤对你来说都是必要的吗?你需要的是否只是最后的结果?说到底,你想要的结果到底是啥?你问了这么多问题我也没法看出你到底在试图实现什么,你不妨说说你要做的是什么吧,那样对解决问题可能还有点帮助.