关于Mathematica的程序问题,谁能告诉我这个程序为什么跑不出结果?如果能告知正确的就更感激了~

作者&投稿:甫信 (若有异议请与网页底部的电邮联系)
mathematica 为什么运行不出和例题一样的结果~

……你不给具体代码别人怎么知道,可能是你把代码抄错了或者没抄完整,还有可能是你没清除变量,理由多了去了。

数值计算是有误差的啊。你第二个例子是先符号计算再取数值值的,所以回避了第一个例子的误差累计。顺便你给第一个例子里的小数全设上高精度的话也能得到和第2个例子差不多的结果:
{a, b} = {77617.0`100, 33096.0`100};a^2 (11 a^2 b^2 - b^6 - 121 b^4 - 2) + a/(2 b) + 5.5`100 b^8 + 333.75`100 b^6(* -0.8273960599468213681411650954798162919990331157843848199178148 *)

先把n=10改成n=3,其余不变,几乎马上就出来了结果;
然后改成n=5,用时6.85秒;
再试了下n=8,用时118秒;
最后试了下n=10,这次等了半天都没出结果.
综上,你的语法应该是没有问题的,主要的问题我觉得可能是
yj[x_] =y0[x] - Integrate[(Integrate[(f[t, y0[t]] - y01[t]), {t, 0,u}]), {u, 0, x}];
这一句上面,你实际是想用函数迭代的方法求得一组函数序列,中间用的是符号积分,这个是相当费时间的,与表达式的复杂度成指数上升.
这个我也没有更好的办法去改进,要优化的话只能从数学上和算法上来研究了,我现在没有太多时间去仔细看.
现在唯一的办法就是等待吧,比如挂一晚上机,希望第二天一早应该会出来你想要的结果的...

同学你还没放弃For循环啊……如果你的f函数的目的并非产生一个0的话,那就把你的函数定义改成延迟赋值:
f[x_, y_] := y*D[y, {x, 2}];

至于理由嘛,你把你原来的函数定义后面的分号去掉进行一下就知道了。

老实说,同学你这习惯很不好,代码正确与否都还不知道就满世界的用分号,结果出了错都判不出错了哪里,还有啊求你了把For循环去掉吧……对于循环内部的错误,可以添加Print代码去监视——这样你将看到这个积分运算有多复杂。因为不知道你的意图是什么所以我也没法给出更多建议了。 总之这个计算是很费时的,在我打这些废话的这段时间里,第一个循环才算到8……


双辽市17873524172: 关于mathematica程序的一些问题 -
祗奚秦苏: 求A的转置:Transpose[A]A的转置乘以A: C=Transpose[A].AC的逆距阵: D=Inverse[A]

双辽市17873524172: ...“0”.如此重复200次,计算这一事件发生的概率?要求模拟三次以上并记录下每次模拟计算的频率值?要求:需要mathematica源代码关于第一个问题,方... -
祗奚秦苏:[答案] 第一个问题: f[x_] := 2 x^2; xlist = NestList[# - f[#]/f'[#] &,0.5,4]; ylist = f[xlist]; list1 = Transpose[{xlist,ylist}]; list2 = Transpose[{... 这个让人很不爽. 2里面我只做了圆心,算是hint吧,其他可以自己搞定的 那么1,3解决了 关于2你说的无摩擦滚动=滑动+绕圆...

双辽市17873524172: 关于mathematica的问题我想问一下,如果给定一个带有三角函数的有点复杂的方程,里面x是变量,然后有a,b,c等可以看作是已知的常量,但是不是具体的... -
祗奚秦苏:[答案] 带有三角函数的方程Mathematica是可以解的;但是得看是不是会出现超越的情况,例如Sin[x]==x+a这样的情况就不可解了,尽量尝试比较新的Mathematica版本或者直接上walframAlpha网站在线求解;Mathematica的符号运算功能...

双辽市17873524172: Mathematica简单的编程题 -
祗奚秦苏: 我想了个答案,但这个/@相当于用到Map了……不知是否还合题意?Select[Flatten[ Apply[{##} &, #] & /@ Apply[{##} &, #] & /@Apply[{##} &,x^3 + 3 x^2 y^2 + 3 x y^4 + y^6 + 3 x^2 z^3 + 6 x y^2 z^3 +3 y^4 z^3 + 3 x z^6 + 3 y^2 z^6 + z^9]], FreeQ[#,...

双辽市17873524172: mathematica编程的循环问题 -
祗奚秦苏: 这样: s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; DeleteCases[s1, a_ /; (Mod[a, 2] == 0 || Mod[a, 3] == 0 || Mod[a, 5] == 2)] 还可以这样: s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; Select[s1, ...

双辽市17873524172: mathematica编程问题 -
祗奚秦苏: 是的,按照顺序计算的,做完前面的数值积分之后再修改p的值,如果再运行一次,第二次输出时p的值已经更改为2,此时数值积分结果也变了.另外可以用Trace函数来查看运行过程,

双辽市17873524172: 关于Mathematica的问题谁知道在笔记本界面中怎样输入两阶以上的导数啊?在右上角的角标中形如“(3)”一样,我输入后老被Mathematica当成乘方处理,... -
祗奚秦苏:[答案] 在TraditionalForm的输入模式下,Mathematica确实会将|A|解释成为单个数的绝对值,而不会当作矩阵处理;同样对于某数或变量上角标的(3)等也确实会解释成他们的乘方. 对于矩阵A的行列式|A|可以这么解决,随便找个没定义的变量(如a),...

双辽市17873524172: Mathematica有关问题我在用Mathematica5.0提取多项式系数的时候出现如下问题,在此先谢过...如多项式:x+2*x*y+3*x*y^2(x和y在这里都是变量)当我想提取x... -
祗奚秦苏:[答案] 你输入这个命令得时候系统默认y是一个参数了 好像没有一个直接用得命令 我觉得这样处理x+2*x*y+3*x*y^2先代入y=0 再对新函数提取x项系数就可以了

双辽市17873524172: 在mathematica中如何实现简单的公式推导?急求大神指导,十分感谢~ -
祗奚秦苏: (*公式推导程序在mathematica中编程实现如下:*) Clear[s]; gradationEi[d_, c_] := Module[{K, u},K = (d + 3 c)/s;u = 2 c + s;Simplify[9*K*u/(3*K + u)]](*2.gradationEg(for循环)*) Eg = gradationEi[{0, 1, 2, 3, 4}, {1, 2, 3, 4, 5} ]

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网