如何用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])}
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/22 03:33:50
![如何用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])}](/uploads/image/z/10034499-3-9.jpg?t=%E5%A6%82%E4%BD%95%E7%94%A8Mathematica%E5%AE%9E%E7%8E%B0%E6%AF%94%E5%A6%82%E7%8E%B0%E5%9C%A8%E6%9C%89%E8%BF%99%E6%A0%B7%E4%B8%80%E4%B8%AA%E5%BC%8F%E5%AD%90%EF%BC%9AProduct%5BSum%5Bf%5B+j+%5D%2Fx%5B+i+%5D%5D%2C%7Bj%2C+n%7D%5D%5D%2C+%7Bi%2C+k%7D%5D+%7Bc%5B1%5D+%28-1+%2B+c%5B2%5D%29.%28-n%2B1%2Bc%5Bn%5D%7D+%E5%BD%93k%3D2%2Cn%3D2%E6%97%B6%2C%E4%B8%8A%E9%9D%A2%E7%9A%84%E5%BC%8F%E5%AD%90%E4%B8%BA+++++%28f%5B1%5D%2Fx%5B1%5D%2Bf%5B2%5D%2Fx%5B1%5D%29++%28f%5B1%5D%2Fx%5B2%5D%2Bf%5B2%5D%2Fx%5B2%5D%29++%7Bc%5B1%5D+%28-1+%2B+c%5B2%5D%29%7D)
如何用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])}
如何用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实现比如现在有这样一个式子: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])}
嗯,大致能感觉到你在思路改进上的努力,但是我想说的是,我的感觉是——我的直觉是,你的思路上了歧途了,这种内置函数一个也用不进去,模式匹配不好用,要在各种步骤上阻碍软件对等式的自动计算,整体透着浓浓的过程式编程的味道的实现思路……用这种思路是没法发挥出Mathematica的力量的.“多项式”关键字下有这么多的内置函数,难道其中就没有你用的上的吗?
此外,需要注意的是,你的要求越是具体(至今为止你对你希望实现的程序的所有步骤都做了十分详细的要求)就越有可能限制答题者的思路,因为,你的要求中的所有步骤可能对你来说都是必要的,可是,在已经答了这么多个你的问题的现在,我不禁想问,这些步骤对你来说都是必要的吗?你需要的是否只是最后的结果?说到底,你想要的结果到底是啥?你问了这么多问题我也没法看出你到底在试图实现什么,你不妨说说你要做的是什么吧,那样对解决问题可能还有点帮助.