网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月23日漏签0天
mathematica吧 关注:19,960贴子:74,301
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回mathematica吧
>0< 加载中...

你知道Mathematica里有三种换行吗?你真的知道换行的含义吗?

  • 只看楼主
  • 收藏

  • 回复
  • xzcyr
  • 吧主
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Mathematica里是可以在一个函数里包含多条语句的,只要使用 ; 和 () 就行!一个简例(这当然只是个例子,Abs已经内置了):
abs[c_] :=
(re = Re[c];
im = Im[c];
Sqrt[re^2 + im^2])
abs[1 + I]

看到这里,吧里的老人大概会会心一笑,而其他人想必是一头雾水:这帖标题不是要说换行吗,这跟你上面说的东西有什么关系?当然有关系,请耐心往下看。
Mathematica里其实有三种换行,它们是:
1. “完整语句”外的换行。这种换行代表了语句的结束。比如下图

这里的 a 和 b 由换行分隔成了两条语句。(这点由前面的行号54和55也可以看出来:每个行号都对应了一条完整语句。)
2. “完整语句”内的换行。这种换行仅仅是一种排版(语句较长时适当换行可以使代码变得易读),不能分隔语句,比如下图

Log[2,
4]内部有一处换行,但并未影响输出。
换行的前后如果没有逗号或其他算符,Mathematica会认为我们在做乘法,比如:

当然了,这种换行并非毫无限制,比如二元算符得在上面那行,否则会出错:

如上所示,前一种写法被正确认作a除b了,而后者软件报错。
“那么,你手里有没有完整的限制列表呢?”很遗憾,没有,自带文档里好像也没写。(顺便,深究起来,自带文档对某些极度基础的内容确实缺乏明确的叙述,个人认为这其实是对自学造成了障碍的。)不过,Mathematica的笔记本在宽度不够时默认进行的就是这种排版,所以手调笔记本宽度不失为一种确认排版规则的方法。
好的,重点来了。我们知道,Mathematica代码纵然看上去千奇百怪,但实质上都是形如 a[b,c,…] 的结构的无限嵌套。这种嵌套可以使用FullForm来检查。比如:

又比如

你没看错,分号在Mathematica里其实是个函数。
自定义函数也不例外:

明白这意味着什么吗?这意味着你在定义一个函数时,不同于MATLAB或是fortran或是其他的啥,你是不能靠换行来分隔语句的。“没错!所以Mathematica定义函数时是不能写多条语句的! -> Mathematica里是不能定义复杂函数的!-> Mathematica搞不了正经编程! -> Mathematica是个计算器!”——这便是Mathematica初学者次常见掉坑路径之一。“那么在一个函数内写下多条语句的正确方法到底是啥呢?”这便回到了我们开头的话题。
顺便,自带文档中也存在着大量的“复杂”函数定义示例,稍微多看两眼就能遇到,比如下面的例子,出自“ = ”的文档:

所以说,最后还是那句老话,自带帮助是最好的教材。


  • xzcyr
  • 吧主
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
“等一下,你不是说有三种换行吗?”啊……刚才写得high了,而且第3种换行和我今天想说的没多少关系,结果就给忘了(殴)。第三种换行用的不多,但某些场合可能会有其独特作用,它就是,\ :
S\
i\
n[\
\
Pi/3]


你没看错,这种换行甚至可以把单个命令拆开,具有极高的自由度。它也是唯一一种可以在命令行里使用的换行:

最后的最后,来几句套话:
本帖所谈内容我早就想写一写,但又一直吃不准该怎么写。强行写了一下,感觉还是不太满意,有什么意见或建议欢迎提出,不过,回帖不看帖的照例直接删。


2026-04-23 18:41:14
广告
不感兴趣
开通SVIP免广告
  • asdasd1dsadsa
  • 小吧主
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个好,确实改讲


  • hjq447285628
  • For循环
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
“a/b”可以在/后换行而不能在/前换行,我的理解是“a/”明显是一个不完整的式子,所以Mathematica知道后面应该还有别的,所以会把下一行接上来;而如果在/前换行,首先“a”是一个完整的表达式,“/b”则被当成另一个表达式(也就是这里的换行变成了情况1),而/开头的表达式是没有意义的,所以就会报错。
证据就是,a\n/b虽然会报错,但是f[a\n/b]就不会报错。
不知道其他换行的限制能不能依此类推,如果理解有误,还请吧主纠正。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回mathematica吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示