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

[编程进阶] Out输出内容会自动隐藏吗?

[复制链接]
发表于 2010-6-15 09:45:00 | 显示全部楼层 |阅读模式 来自 甘肃兰州
大家请看图,In[24]运行后没有输出任何结果,但当再运行OUt[24]之后却有内容显示,这是怎么回事?附上代码,麻烦各位帮忙解释一下。
  1. bf[a_, b_, h_, x0_: - 1, y0_: - 1, z0_: - 1] :=
  2. Module[{t, k1, v1, m1, k2, v2, m2, k3, v3, m3, k4, v4, m4, x = x0,
  3.    y = y0, z = z0},
  4.   For[data = {}; t = a, t <= b, t += h, k1 = -10*(x - y);
  5.    v1 = 28*x - y - x*z; m1 = (-8/3)*z + x*y;
  6.    k2 = -10*((x + h/2.0*k1) - (y + h/2.0*v1));
  7.    v2 = 28*(x + h/2.0*k1) - (y +
  8.        h/2.0*v1) - (x + h/2.0*k1)*(z + h/2.0*m1);
  9.    m2 = (-8/3)*(z + h/2.0*m1) + (x + h/2.0*k1)*(y + h/2.0*v1);
  10.    k3 = -10*((x + h/2.0*k2) - (y + h/2.0*v2));
  11.    v3 = 28*(x + h/2.0*k2) - (y +
  12.        h/2.0*v2) - (x + h/2.0*k2)*(z + h/2.0*m2);
  13.    m3 = (-8/3)*(z + h/2.0*m2) + (x + h/2.0*k2)*(y + h/2.0*v2);
  14.    k4 = -10*((x + h*k3) - (y + h*v3));
  15.    v4 = 28*(x + h*k3) - (y + h*v3) - (x + h*k3)*(z + h*m3);
  16.    m4 = (-8/3)*(z + h*m3) + (x + h*k3)*(y + h*v3);
  17.    x = x + h/6.0*(k1 + 2*k2 + 2*k3 + k4);
  18.    y = y + h/6.0*(v1 + 2*v2 + 2*v3 + v4);
  19.    z = z + h/6.0*(m1 + 2*m2 + 2*m3 + m4);
  20.    data = Append[data, {t, x, y, z}]]]

  21. bf[0, 1, 0.01]
复制代码

本帖子中包含更多资源

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

×
发表于 2010-6-15 10:03:54 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
1# jimogsh


  1. bf[a_, b_, h_, x0_: - 1, y0_: - 1, z0_: - 1] :=
  2. Module[{t, k1, v1, m1, k2, v2, m2, k3, v3, m3, k4, v4, m4, x = x0,
  3.    y = y0, z = z0},
  4.   For[data = {}; t = a, t <= b, t += h, k1 = -10*(x - y);
  5.    v1 = 28*x - y - x*z; m1 = (-8/3)*z + x*y;
  6.    k2 = -10*((x + h/2.0*k1) - (y + h/2.0*v1));
  7.    v2 = 28*(x + h/2.0*k1) - (y +
  8.        h/2.0*v1) - (x + h/2.0*k1)*(z + h/2.0*m1);
  9.    m2 = (-8/3)*(z + h/2.0*m1) + (x + h/2.0*k1)*(y + h/2.0*v1);
  10.    k3 = -10*((x + h/2.0*k2) - (y + h/2.0*v2));
  11.    v3 = 28*(x + h/2.0*k2) - (y +
  12.        h/2.0*v2) - (x + h/2.0*k2)*(z + h/2.0*m2);
  13.    m3 = (-8/3)*(z + h/2.0*m2) + (x + h/2.0*k2)*(y + h/2.0*v2);
  14.    k4 = -10*((x + h*k3) - (y + h*v3));
  15.    v4 = 28*(x + h*k3) - (y + h*v3) - (x + h*k3)*(z + h*m3);
  16.    m4 = (-8/3)*(z + h*m3) + (x + h*k3)*(y + h*v3);
  17.    x = x + h/6.0*(k1 + 2*k2 + 2*k3 + k4);
  18.    y = y + h/6.0*(v1 + 2*v2 + 2*v3 + v4);
  19.    z = z + h/6.0*(m1 + 2*m2 + 2*m3 + m4);
  20.    data = Append[data, {t, x, y, z}]]; data]
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2010-6-15 12:01:26 | 显示全部楼层 来自 甘肃兰州
2# TBE_Legend 可以解释一下为什么要这样吗?这样的写法却可以正常表示出来
  1. In[1]:= y[x_] := Module[{t, m = 3}, t = x^2; m = m (t - 1)]

  2. In[2]:= y[3]

  3. Out[2]= 24
复制代码
回复 不支持

使用道具 举报

发表于 2010-6-15 21:40:05 | 显示全部楼层 来自 黑龙江哈尔滨
2# TBE_Legend 可以解释一下为什么要这样吗?这样的写法却可以正常表示出来In[1]:= y[x_] := Module[{t, m = 3}, t = x^2; m = m (t - 1)]

In[2]:= y[3]

Out[2]= 24
jimogsh 发表于 2010-6-15 12:01


不是module的问题,是For的问题,就像:


For[i = 0, i < 4, i++, Print]

帮助中说:“Unless an explicit Return is used, the value returned by For is Null. ”

清晰透彻的解释我也不知道。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-6-16 11:51:51 | 显示全部楼层 来自 甘肃兰州
4# TBE_Legend 非常感谢,不过另一个问题还是不明白,就是那个Out[24]分明存在为什么却没有显示出来?
这个应该不是For的原因,因为For返回的就是Null。
回复 不支持

使用道具 举报

发表于 2010-7-16 01:34:28 | 显示全部楼层 来自 北京
本帖最后由 guocong89 于 2010-7-16 01:39 编辑

感觉像bug
  1. For[i = 0;s=0, i < 5, i++, i]
复制代码
复制代码
无输出
  1. For[i = 0;s=0, i < 5, i++,s+= i]
复制代码
复制代码
无输出
  1. For[i = 0;s=0, i < 5, i++, i;s+=i]
复制代码
复制代码
输出10
  1. For[i = 0;s=0, i < 5, i++,s+=i; i]
复制代码
复制代码
输出4

也许是对For的第四参数提取时,如果只有一条语句就返回NULL且不保留结果;如果有2+条语句,就返回NULL但保留最后结果。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 08:04 , Processed in 0.042478 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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