xzcyr
xzcyr
关注数: 3
粉丝数: 743
发帖数: 13,770
关注贴吧数: 18
【补档】保尔是不是叛徒——《钢铁》的历史背景和民族认同问题 本帖原为吧友 @故垒萧萧 所发,(就我所知)是中文互联网最早对标题所述问题作深入探讨的文章,堪称本吧镇吧之宝,但遗憾的是,该帖自百度“灭霸式删帖”后就一直没有恢复,作者本人也长期未上线,故现在重发一下。本帖备份极早,原帖下的回复未能收录。(包括作者本人的勘误。)想阅读完整版,只能期待原帖奇迹般恢复或是作者重出江湖了。 ———————— 保尔是不是叛徒——《钢铁》的历史背景和民族认同问题 吧里有人说,保尔是乌克兰民族的叛徒。对这个问题,我想写写自己的观点。我认为保尔不是叛徒。不过在说这个问题前,我想先写一些乌克兰的历史方面的东西。 1、俄罗斯和乌克兰的关系 俄罗斯、乌克兰以及白俄罗斯是三大东斯拉夫民族,其共同的祖先是古罗斯人,乌克兰的基辅城被认为是“罗斯众城之父”。后来蒙古人入侵,包括诺夫哥罗德以及后来的莫斯科等城市被蒙古人统治,而立陶宛、波兰等国(不要小看他们,虽然后来很矬,但想当年这都是很牛叉的大国)则也趁机东进,占领了包括基辅在内的大片地区。以此为契机,俄罗斯、乌克兰和白俄罗斯三大民族开始逐渐形成。后来,俄罗斯驱逐了蒙古人。而乌克兰人在1648年爆发了反对波兰的大起义,在起义中寻求俄罗斯的支持,最终于1654年签订俄乌合并协议。 此后,乌克兰和俄罗斯的关系一直保持,但是乌克兰也自始至终都有人争取乌克兰的独立。比如在彼得大帝时期,乌克兰首领马泽帕就曾乞求来自瑞典的支持;十月革命后,也有乌克兰民族主义者试图独立(彼得留拉就是其中之一);二次大战期间,还有乌克兰人试图在德国的支持下建立独立的乌克兰。1944年2月,苏联大将、坦克战专家瓦图京(瓦杜丁)于遭乌克兰分离主义者袭击重伤,最终于4月不治。1954年俄乌合并300年时,俄罗斯将克里米亚半岛送给了乌克兰作为礼物(不过我觉得如果俄罗斯人当时知道现在是这个样子,杀了他们也不会这么做……)1957年,克格勃特工斯塔申斯基(也是乌克兰人,后叛逃并将行动公之于众)在西德刺杀了乌克兰分离主义者列夫·里贝特。最终在苏联解体的大潮中,乌克兰脱离苏联(也脱离俄罗斯)而独立。不过,两国长期的合并,客观上使得他们的历史很难分别——很多沙俄和苏联的历史人物很难说是俄罗斯的还是乌克兰的。比如,果戈里到底是乌克兰还是俄罗斯作家?果戈里本身是俄罗斯人,但其大量作品都是在乌克兰完成的。所以在目前纪念果戈里的活动中,可以看到,乌克兰和俄罗斯在为一件事情庆祝——这在目前的地缘政治格局下实在罕见。 2、东西乌克兰的差异 如上所述,乌克兰民族自身就是在各方实力的角逐中产生的,因而其自身又有差异。比较大的就是东西乌克兰的差异——东乌克兰亲俄,西乌克兰亲西方。 第一次世界大战前我不清楚,这里不说。一战期间,俄国爆发十月革命,德国趁机向东进攻获得西乌克兰和西白俄罗斯在内的大量土地,苏俄被迫接受并签订了《布列斯特合约》,但德国自己也随之战败。协约国在武装干涉俄国的同时,在俄、德之间重建了波兰,领导人是毕苏斯基(ps:戴高乐曾经被派往波兰协助波军和红军作战,而他在德国战俘营里的朋友、沙俄军官图哈切夫斯基则——按照国军的说法——“投了共”,后来成为苏联元帅)。红军曾向波兰进攻,但最终在华沙城下失败。因此,西乌克兰和西白俄罗斯就成了白色波兰的领土。二战前夕,纳粹德国和苏联签订互不侵犯条约,按照协议,德国进攻波兰的同时,苏联也向西以保护白俄罗斯和乌克兰同胞的名义一起进攻,两国瓜分了波兰。西乌克兰和西白俄罗斯也随之成立了苏维埃政权,并并入了乌克兰和俄罗斯。二战后苏联击败纳粹德国,西乌克兰、西白俄罗斯(以及波罗的海三国、摩尔多瓦等)仍然是苏联领土,而波兰则向西拿走了德国的(如果没记错的话)东普鲁士、西里西亚等地区。这就是现在这一地区版图的由来。苏联解体时,西乌克兰仍然是乌克兰的一部分。 可以看到,至少100多年以来,东、西乌克兰的政治是有巨大的差异的。这对于一个民族在政治等方面的观念来说,足够造成巨大的分歧和差异了。 这大概也就是西乌克兰人亲西方,喜欢强调其历史上和波兰(和俄罗斯、乌克兰不同,波兰人是西斯拉夫人,政治上合西方关系密切,信仰和西欧一样的天主教,书写用拉丁字母——对东斯拉夫人来说,足够西方了)以及德国等西方国家的关系,而东乌克兰人亲俄罗斯,更喜欢强调其与俄罗斯共同历史民族渊源关系的原因吧。 3、保尔不是叛徒——关于《钢铁》中的民族和国家认同问题 (说了这么一堆,终于进入正题了) 老实说我不知道舍佩托夫卡的具体位置,不过我记得这里曾经是苏联和白色波兰的边界,那么这里应该不是西乌克兰,应该算东西乌克兰的一个路口。这里既有彼得留拉匪帮,又有红军,这可以说再正常不过了。而在沙俄崩溃的时刻,保尔面前,既有来自东方的、工人阶级的红军,又有得到西方支持的、地主阶级的白军。作为工人阶级的一员,保尔他们选择了红军,选择了苏维埃,这是再正常不过的。选择红军虽然意味着乌克兰和俄罗斯的合并,放在俄乌文化相近且长期合并的大背景下,这种选择无可非议(而要是在如获得独立芬兰等地,难保不被当成“芬奸”什么什么的)。而白军在西方的支持下,虽然号称争取民族独立,但是很难说会不会在英法列强的大笔一挥下和波兰合并以组成一个更强大的白色国家来反对苏联(这种事情太常见了,比如阿尔巴尼亚的独立——如果我没记错,阿尔巴尼亚建国的最初目的,是为了让塞尔维亚失去出海口。在强权面前,一个弱小国家和民族是否独立完全要服从大国的需要。) 因此,在俄乌长期的合并和共同的历史文化背景下,再加上阶级认同,保尔的选择没什么问题,说保尔等人是出卖乌克兰民族的叛徒,是没什么道理的。 这是当时的事情,现在呢?苏联解体了,乌克兰终于独立了,在乌克兰民族主义的影响下,俄乌冲突不断。反映在历史上,而一切苏联时代被打倒的——无论是意识形态还是民族观念上——都回来了,而苏联时代的英雄则被抛弃了。保尔远去了,青年近卫军远去了,反对俄罗斯的彼得留拉和马泽帕则成了英雄。当历史成为政治的工具的时候,很难说这种有色眼镜下的历史还有多少真实的成分。 而作为旁观者,我们甚至不需要了解这么长的民族恩怨,我们应该记住的是保尔的精神——无论面前有多少艰难险阻,只要一息尚存,就应当为自己所坚持、热爱和信仰的一切战斗下去。 还是用最经典的那一段话结尾吧—— 人最宝贵的是生命。生命对人来说只有一次。人的一生应当这样度过——当回忆往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧;在临死的时候,他能够说:“我的整个生命和全部精力,都已献给了世界上最壮丽的事业——为人类的解放而斗争。
分享贴子 分享贴子
【教程】使用手机等移动设备访问电脑版贴吧的方法 贴吧客户端相较于传统的pc网页版弊端颇多(如中括号无法在顶楼正常显示,无法自由对帖子文字进行复制,置顶只能显示一条等),因此,如果因为某些原因不得不使用手机访问贴吧,使用网页浏览器访问pc版网页其实是一个不错的选择。这里介绍一下修改手机浏览器设置的方法。我的手机里目前只有小米系统自带浏览器和Opera,就以这俩为例了。其他浏览器的设置修改方法(大概)是大同小异的。先说小米系统自带浏览器。最新版本的小米浏览器设置还是很好改的。首先我们点击菜单(就是下方三条杠的位置):然后点击“访问电脑版”:就大功告成了。如果你的小米浏览器版本较旧,那这个设置可能会藏得更深一些。首先要点击下方菜单中的设置按钮(就那个螺帽):然后点击“网页浏览设置”:然后点击“浏览器UA标识”,改成“电脑版”:就大功告成了。最后再说Opera。Opera的设置就更简单了,只要点一下右上角的电脑符号就行:顺便,登录的时候点击右上角(就上面橙色圈的位置)可以切换成密码登录。 再顺便,Opera浏览器没有开屏广告哦。 如果对教程内容还有疑问,欢迎跟帖讨论。
【调查】你为啥在用贴吧客户端? 贴吧客户端相较于传统的pc网页版弊端颇多(如中括号无法在顶楼正常显示,置顶只能显示一条等),但吧里始终有一小部分用户(访问数约占7%)在使用客户端,故开此帖调查。视调查结果可能会在下个答题日出篇教程。
【活到老学到老】原来Cases和ReplaceAll的匹配方式有细微区别啊 我原本一直以为,在参数设置得当时,两者的匹配顺序是一样的。但是最近,我遇到了这个例子: Cases[2 a b, a b :> j, All](* All这语法文档里没写,它等效于{0,Infinity} *) (* {} *) (* 以防万一我们用{0,Infinity}再试下: *) Cases[2 a b, a b :> j, {0, \[Infinity]}] (*{}*) ReplaceAll是没问题的: 2 a b /. a b -> j (* 2 j *) SE帖子《Successful match in Replace but not in Cases?》(编号5002)尝试对此做了探索,结论是,尽管Cases会考虑Flat属性,但它不会进行越级检查,说具体点就是: 2 a b 完整形式 Times[2, a, b],因为有Flat属性,它可以等效于 Times[2, Times[a, b]] 因此形如 Cases[2 a b, 2 _ :> i, All] 的匹配可以生效。(Cases在第0层识别出了 Times[2, _]结构。) 但是,Cases在此层次的检查又只限于该层。对于Times[2, Times[a, b]],此时 Times[a, b] 位于第1层,所以Cases查不到它(ReplaceAll的行为则不同,它会顺带检查变换出的所有层),等到Cases开查第一层,Times又已经“成了过去”,Cases此时只能查到2, a, b(这个行为倒是很正常),因此最终输出空表——当然了,这套解释目前没有官方背书,因此可能有误,大家可以进一步探索。
【吧务】本吧不鼓励对历史背景的“低端”讨论 这个其实也是说过多次的事情,但是以往都是写在回复里,较难搜索;此外,百度“灭霸式吞帖”也导致吧里帖子损失了不少,因此单开一帖进行说明,方便检索。在对本书内容进行讨论时,对历史背景的探讨是非常自然的,因此本吧历来不禁止对历史背景的讨论,并且相关的帖子加精得还不少,但同时,吧里历来也对针对历史背景的“低端”讨论持抑制态度,因为: 1. 此类讨论的准入门槛太低,没错,是太低。它低就低在没看过本书的人也能凑上来扯两句。很多时候,此类讨论看似不算跑题,实则无限接近于跑题。请不要忘记,本吧终究是“钢铁是怎样炼成的”吧。 2. 要对此类话题作有价值的讨论,对讨论者的知识储备的要求太高。很多时候,参与讨论者仅仅是相互复读N手资料——此类讨论是极难碰撞出思想火花的。 最后,再强调一遍,本书在精读层面上仍有许多内容可以讨论,吧里的相关帖子其实依旧是较为匮乏的,希望大家在讨论时能更多地立足于文本(当然,也包含本书的各种改编)本身。
关于近期出现在SE的对广义有限差分法(GFDM)的失败(?)尝试 嗯……吧里关心微分方程的人不多,不过这个月新帖也少,姑且发个帖说说近期出现在Stackexchange的这个我觉得还比较有意思的帖子。我们知道,对于不规则区域上的偏微分方程求解,目前有限元法(finite element method, FEM)几乎可以说是一家独大(我甚至见过某些对微分方程求解不甚了解的童鞋竟模模糊糊地觉得“解偏微分方程=用一下有限元”);目前,在Mathematica的NDSolve函数的内置方法里,它也是唯一一种可以在不规则域上求解偏微分方程的方法。但是,可以用于不规则域的偏微分方程数值求解方法其实远不止有限元一种,今天我要讲的就是一种较为小众(?)的无网格偏微分方程求解方法——广义有限差分法(generalized finite difference method, GFDM),也称无网格有限差分法(meshless finite difference method, MFDM)。 我们知道传统的有限差分法(finite difference method, FDM)所用的差分公式是基于单变量泰勒展开的,这使得其通常只适用于规则区域的求解(当然了,基于外差法或是坐标变换将FDM用于不规则域是一个可行的思路,但是非常繁琐,一个例子是SE帖子《Poisson PDE over a irregular region with FDM》(编号:64585)),GFDM的改进,在于使用多元泰勒展开(不是内置的那个,而是“点附近的展开”,可以参看《Multivariable Taylor expansion does not work as expected》(编号:15023))代替单变量泰勒展开,也就是说,对于选定的中心结点,我们选定它附近的n个点,分别作n次多元m阶泰勒展开(m和n不必相同),获得n个方程,再使用最小二乘法求解这n个方程,即可得到该点处的1至m阶导数——显然,GFDM的这套思想还是非常简单自然有吸引力的。 好了,重点来了。近期,在SE帖子《How can I construct the derivative matrix for an irregular domain?》(编号:131705)下面,Ulrich Neumann 终于对GFDM作了尝试,这一尝试最终被整理成了一个基于GFDM法的微分矩阵计算程序包,代码如下: BeginPackage["GFDM`"]; taylorterms; matGFDM; Begin["`private`"]; taylorterms[dim_, order_] := Block[{t, f, vars, difforder, x, xlst}, xlst = x /@ Range@dim; With[{expr = Normal@Series[f @@ (t xlst), {t, 0, order}] /. t -> 1}, {vars, difforder} = Cases[expr, a : Derivative[o__][f][__] :> {a, {o}}, Infinity]\[Transpose]; {difforder, Compile @@ {{#, _Real, 1} & /@ xlst, (CoefficientArrays[expr, vars] // Last // Normal)}}]] w = Function[{d, dm}, #] &[ With[{x = d/dm}, If[d <= dm, 1 - 6 x^2 + 8 x^3 - 3 x^4, 0]] // PiecewiseExpand // Simplify`PWToUnitStep]; dmfunc[sf_, pcenter_, pinf_] := sf Sqrt[# . # &@(pcenter - pinf)]; matGFDM[dim_, order_, plst_, neighborsize_, sf_ : False] := (meshsize = Length[plst]; nf = Nearest[plst -> "Index"]; neighbors = nf[plst, neighborsize + 1]; {difforderlst, taylortermfunc} = taylorterms[dim, order]; With[{lst = difforderlst}, take = First@FirstPosition[lst, #] &]; diffmat = Function[indexlst, pcenter = plst[[indexlst[[1]]]]; If[NumericQ@sf, dm = dmfunc[sf, pcenter, plst[[indexlst[[-1]]]]]; wlst = w[Sqrt[((pcenter - Transpose@plst[[indexlst // Rest]])^2 // Total)], dm], wlst = 1.]; sparse = Module[{spa = SparseArray[{{Range@neighborsize, indexlst // Rest}\[Transpose] -> ConstantArray[1., neighborsize]}, {neighborsize, meshsize}]}, spa[[All, First@indexlst]] = -1.; wlst spa]; pinv = PseudoInverse[ wlst Transpose[ taylortermfunc @@ (plst[[indexlst // Rest]]\[Transpose] - pcenter)]]; pinv . sparse] /@ neighbors; With[{mat = diffmat\[Transpose], take = take}, mat[[take@#]] &]); End[]; EndPackage[]; 程序包的使用方式如下: (* 在给定的方形区域 mesh 上计算微分矩阵 *) << NDSolve`FEM` mesh = ToElementMesh[Rectangle[], "MeshElementType" -> "TriangleElement", "MeshOrder" -> 1]; plst = mesh["Coordinates"]; dim = 2; order = 8; size = 29; getmat = matGFDM[dim, order, plst, size]; // AbsoluteTiming (*{0.194138,Null}*) (* 提取混合导数 D[..., x, y] 的微分矩阵 *) dxymat = getmat@{1, 1}; (* 验算 *) Clear[x,y] f = Function[{x, y}, Sin[2 Pi (x - Pi/2)] Cos[Pi y]]; funcvalues = f @@ (plst\[Transpose]); dfunc = Function[{x, y}, D[#, x, y] &@f[x, y] // Evaluate]; ref = dfunc @@@ plst; dxylst = dxymat . funcvalues;dgfdmfunc = ElementMeshInterpolation[{mesh}, dxylst]; Manipulate[ Plot[{dgfdmfunc[x, y], dfunc[x, y]}, {x, 0, 1}, PlotRange -> 20, PlotStyle -> {Automatic, Dashed}], {y, 0, 1}]如大家所见,这个精度并不是特别理想,尽管数值基本能对上,但是误差肉眼可见(要知道这个计算足足用了29个点作最小二乘),并且这个精度似乎也远远不及GFDM相关论文中所声称的精度,至于是不是我对论文的理解有问题我就不太清楚了。 部分论文在计算时使用了权函数,但就我个人的测试结果而言,效果似乎不明显。 大家觉得是哪里出了问题? 另,在上述 131705 号帖子中还有径向基函数-有限差分法(radial basis function-finite difference, RBF-FD,也是一种以FDM后继者自居的方法)的编程尝试,效果也不是很好,有兴趣的童鞋可以看看。
【资源】《钢铁是怎样炼成的》章回体改编本《百炼成钢》 度盘链接的后半截(不知道这个要怎么用的请随便找个度盘链接观察一下格式): s/1Qnal-dNszgEs90296WqHgA?pwd=pbpb 书是用手机拍的,质量略糟,但应该不影响阅读。 这个改编本是个反面典型。方长安《〈钢铁是怎样炼成的〉在新中国“17年”的传播研究》中提到,出版总署在1954 年发布的《出版总署关于停止出版文学名著的改写本或通俗本的规定》中对其进行了点名批评:“……采用了章回小说的体裁和布局,而用许多缺乏生命力的腐朽词句作为回目,用许多陈腔滥调来代替原著的生动活泼的描写,歪曲了原著人物的真实的面貌”,然而,实际读完这个改编本后我发现——出版总署的这段批评未免太温柔了,这个改编本说是夹带私货蓄意歪曲原作都不夸张。我们来看几段典型的。 1. 36页保尔带冬妮亚参加工人聚会的剧情,原著中保尔面对同伴的指责时是为解冬妮亚做了辩护的,《百炼成钢》却改成了“保尔实在也用不到强辩”:2. 编写本按理来说是惜字如金的,但本书愣是在保尔家的部分原创了几段保尔向达雅他爹低头的情节:3. 原著中,保尔第一次去冬妮亚家,起初担心冬妮亚父母会不欢迎他,但实际上“冬妮亚还把保尔介绍给自己的母亲。事情并不像原先想象的那样可怕,保尔觉得冬妮亚的母亲也挺好”,《百炼成钢》却改变视角,来了番恶意揣度:4. 原作中战士们一起读《牛虻》的情节全部砍掉,改成了保尔“一有空就埋头读书,也不管旁人嘲笑他是书呆子”:5. 冬妮亚得知保尔被抓后的位置,抛弃原剧情,来了一段拉低冬妮亚全家人物形象的原创:6. 修路再会,保尔和冬的形象均被拉低——这段倒不见得是夹私货,可能真的只是文笔太差了:除此之外还有不少“有趣”的不同,大家可以自行寻找。
一个非常罕见的NDSolve默认常微分求解器失效的例子 吧里关心微分方程的人不多,但这个例子确实很独特,姑且提一句。我们知道(好吧,相当多的人不知道,想着自己写经典龙格库塔的人时不时就会冒出来),NDSolve默认的常微分方程求解器(细节不明——甚至可以说是NDSolve中最不透明的部分——似乎一般是LSODA方法,有时似乎也会调用StiffnessSwitching方法)性能是非常好的,在NDSolve求解出错的时候,常微分方程求解器永远应该放在最后检查。而当常微分方程求解器出现性能问题时,“使用MaxStepSize限制步长”又可以解决掉绝大多数问题,求解方法导致的问题可以说是少之又少,而上个月,我居然发现了一个。完整讨论请参见SE帖子 《Boundary condition for heat equation in polar coordinates deduced with L'Hôpital's rule fails for method of lines, but works well for FDM》(编号305852) 简单地说,我发现了一类似乎只能用特定的隐式方法求解的常微分方程组,而默认的常微分方程求解器 并不总是能正确地处理它。
【资料】 M. Asghar Bhatti的两本基于Mathematica的有限元教材 后半截(不许问这个是什么或是怎么用): s/1ytBfx9aZZLQvhSBvt9YqgA?pwd=wisz 两本书分别是 《Fundamental Finite Element Analysis and Applications: with Mathematica and Matlab Computations》 《Advanced Topics in Finite Element Analysis of Structures: With Mathematica and MATLAB Computations》 书的优点是讲解极为详细,几乎看不到跳步,即便撇开编程的部分也是很不错的有限元教材(尤其是第一册)。此外随书附赠的源代码(上面的链接中已包含)也是不错的学习材料。
【水?】这条抛物线满足了什么条件?该条件可有简洁直观的表述? 最近在重看有限元相关的东西,结果在看到等参元这部分内容的时候发现了一个数学上的小问题,姑且拿出来水一帖。考虑下面这个参数方程: base = DeleteCases[{-(1/4) (-1 + s) (-1 + t) (1 + s + t), -(1/ 4) (1 + s) (-1 + s - t) (-1 + t), 1/4 (1 + s) (1 + t) (-1 + s + t), 1/4 (-1 + s) (1 + s - t) (1 + t), 1/2 (-1 + s^2) (-1 + t), -(1/2) (1 + s) (-1 + t^2), -(1/2) (-1 + s^2) (1 + t), 1/2 (-1 + s) (-1 + t^2)} /. t -> -1, 0][[{1, 3, 2}]] (* {1/2 (-1 + s) s, 1 - s^2, 1/2 s (1 + s)} *) 这个方程有如下性质:s为-1时,第1项为1,其余项为0;s为0时,第2项为1,其余项为0;s为1时,第3项为1,其余项为0: Table[%, {s, -1, 1}] (* {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} *) 不难意识到,利用这个性质,我们可以轻易构造出一条过平面内任意三点的曲线。好了,(至少对我这学渣而言)神奇的事来了:稍加尝试我们会发现,这条曲线的方程可以写成不含参的隐函数形式,并且它居然还是根抛物线(这里我们忽略退化的情形): coord = ({Subscript[x, #], Subscript[y, #]} & /@ Range[3]); eq = Collect[Expand@Eliminate[base . coord == {X, Y}, s], {X Y, X, Y}, Simplify]Cases[eq, a_. X^2 + b_. X Y + c_. Y^2 + d__ :> b^2 - 4 a c, \[Infinity]] // Simplify (* {0} *) 现在问题来了:我们知道,要在平面内确定一条一般化的抛物线应该需要5个方程(a X^2 + b X Y + c Y^2 + d X + e Y + f ==0, b^2 - 4 a c == 0),但我们确定这条曲线只用了3个点,这说明上述构造过程还隐含了2个限制,这两个限制是啥?有没有简洁直观的表述?
『吧务?』小吧 asdasd1dsadsa 近期无故被封 他的帖子也跟着隐藏了,目前吧里损失不小,希望有空的朋友能一起来帮忙申诉下。具体地说,就是访问 tieba.baidu.com/pmc/feedback 然后选“账号被封禁”,把他的账号 asdasd1dsadsa 贴进去,再回车,如下图:
如果符号解算不出来且符号解不是必须的,试试数值解 这个也是讲烂了的内容,但吧里好像没有标题足够显眼的帖,姑且专开一帖,方便索引。 比较常用的“超级函数”基本都有与之对应的数值求解器。如标题所说,如果符号解没算出来并且符号解对你来说不是必要的,那么不妨去试试数值解。 只写这么几行的话内容好像太少,那就再稍微谈一下比较常见的成对的符号/数值求解器及其特性。 对于代数方程:Solve(虽然现在已经发展成了超级求解器,但它主要是个多项式方程求解器)/NSolve(引入时间非常晚,目前在某些方程上的表现反而不如Solve,但对部分类型的方程可能有奇效,具体看帮助)、FindRoot(需要初值,优点是差不多是个方程就能解,但方程性质不好照样会跪) 对于微分方程:DSolve(虽然近几版明显改善,但依旧是符号求解失败重灾区)/NDSolve(性能强劲,但某种意义上也是把人骗进去杀的玩意儿) 对于积分:Integrate(性能强劲,但是积不出来的积分就是积不出来)/NIntegrate(性能强劲,最近的加强应该是有限元法的引入,但是自从版本8引入LevinRule后好像就没有了针对特殊类型积分的改进。) 对于极值:Maximize、Minimize/NMaximize、NMinimize(全局算法,无需初值,"DifferentialEvolution"法有时有奇效,新引入的"Convex"法值得关注);FindMaximum、FindMinimum(这俩需要初值) ……成对的函数当然不止这些,不过我现在累了,今天先到这儿。
【转】【教程】怎样算阶乘(一)—— Mathematica 是个计算器 本帖是果壳网友 马甲与小号 发在果壳小组的一篇入门教程。如今果壳小组已关,故在吧里发一份备份。 note.youdao.com/noteshare?id=c5114ccda3270199fd801952cf785bff
【吧务】【注意】贴吧手机客户端有bug,顶楼中括号无法正常显示 症状: 顶楼中的 [ 和 ] 会被自动转换为 [lbk] 和 [rbk]。此现象在回复帖中不存在。 影响范围: 此bug至少在去年10月16日即已出现,至今(安卓12.58.1.0)未修。IPhone受影响情况不明,欢迎实验补充。 对策: 对于提问者,最简单的对策就是改用电脑访问贴吧网页版,不要使用使用手机客户端发帖。如果确有相关需求(所以说你们到底为什么会有这种需求?电脑没连网?那也可以开手机热点啊,访问网页又花不了什么流量),避免在顶楼张贴代码也是一个办法。 对于回答者,可以使用下列函数对代码进行转换: f1 = StringReplace[#, "lbk]" | "[rbk" -> ""] &; f2 = ToExpression[f1@#, StandardForm, Defer] &; (* 本身含有语法错误的代码无法用f2处理,请用f1 *) 鉴于此bug的危害相对较轻,本吧暂时不打算对此类帖子进行限制,但是,诸位提问者请注意:掺杂乱码的代码会大幅降低你的问题获得回答的概率(毕竟不是谁都像我一样吃饱了撑的专门写个函数处理你们的代码),此外,手机客户端的种种弊端也会严重影响你的学习体验,其中利害还请自行掂量。
目前ReplaceAt存在设计缺陷,内部的自动计算没有被妥善控制 这是一个已经报给官方并被证实的bug。在核心语言里发现bug的情况(相对)不太多见,姑且开帖说一下。总之,大家可以试一下下面的代码: ReplaceAt[Unevaluated@a[[0]], a -> {1}, 1] (*Language`ReplacementsDump`replace*)
震惊!Esc+dd+Esc再带个下标居然会……! 近期在SE闲逛时的一点偶然收获,姑且记录一下。Esc+dd+Esc再带个下标会被解析成全微分: \!\( \*SubscriptBox[\(\[DifferentialD]\), \(t\)]a\) (* Dt[a, t] *)此语法在文档中似乎没写。
Plus等数值函数的Listable属性的特殊之处 一点偶然的发现,姑且记录一下: ClearAttributes[Plus, Listable] {1} + {1} {1} + {2} {1} + 1 SetAttributes[Plus, Listable]Times函数也有类似行为。当然了,这种行为不难模拟,增加一条类似f[a_List, a_List] := {f[a, a]}的规则就能实现。 最后,这个故事再次告诉我们,随便改内置函数是危险的,结果是不可预料的,能不这么干就不这么干。
为什么Word公式字体Cambria Math没法在Mathematica里正常调用? 因为Cambria Math字体对字符采用了特殊编码。关于这个可以参考 mathematica.stackexchange.com/q/288212/1871 mathematica.stackexchange.com/q/193668/1871
SliceDensityPlot3D认不得“有名”的ColorFunction 近期发现的bug一个(已返馈给WRI),行为太诡异了,姑且发一帖说说: f1 = Function[f, If[f > 1/2, Red, Blue]]; f2 = (If[# > 1/2, Red, Blue] &); SliceDensityPlot3D[Sin[π x], "BackPlanes", {z, -2, 2}, {y, -2, 2}, {x, -2, 2}, ColorFunction -> #] & /@ {f1, f2}是的你没看错,SliceDensityPlot3D仅识别出了以 # 号表示的纯函数,而对等效的“有名字”的纯函数无动于衷……
我才知道就算设了RegionFunction,Plot系函数照样会全域取样啊 这又是一个一直没有深究过的问题,结果让人有点惊讶。总之看这个例子: help[{x_, y_}] := (Sow@{x, y}; Exp[-x^2 - y^2]) {plot, {pts}} = Reap@Plot3D[help@{x, y}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y}, x^2 + y^2 < 1], PlotRange -> All, PlotPoints -> 50]; plotpts // ListPlot版本10新增的区域语法的行为则不同: reg = ImplicitRegion[x^2 + y^2 < 1, {x, y}]; {plot2, {pts2}} = Reap@Plot3D[help@{x, y}, {x, y} \[Element] reg, PlotRange -> All, PlotPoints -> 50]; pts2 // ListPlot但是,两种情况下,域外的函数值都对作图效果造成了影响(新增的区域语法受的影响较小)。注意下面这两例的三维图边缘: help2[{x_, y_}] := If[x^2 + y^2 <= 1, Exp[-x^2 - y^2], 1/0] Plot3D[help2@{x, y}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y}, x^2 + y^2 < 1], PlotRange -> All, PlotPoints -> 50]Plot3D[help2@{x, y}, {x, y} \[Element] reg, PlotRange -> All, PlotPoints -> 50]
我才知道Shortest的这个“最短”并不是语义上的最短啊 考虑下面这个例子: str = "AbcAde" ; StringCases[str, "A" ~~ Shortest[a__] ~~ "e" :> a]会出现这种现象,是因为匹配是从左往右进行的,模式"A" ~~ Shortest[a__] ~~ "e"最先匹配到了最左端的A。也就是说,这个“最短”的寻找会以“包含最左端的A”为前提,“不包含最左端A”的情况则不在考虑之列。 此问题可参考SE帖子《Wrong result from StringCases with Shortest》(mathematica.stackexchange.com/a/72293/1871) 顺便,SequenceReplace也有类似行为: lst = {A, b, c, A, d, e}; SequenceReplace[lst, {A, Shortest[a__], e} :> a]
NDSolve解不出来的东西,你也别指望经典龙格库塔能解! 如果你: 1. 看到某某人/某某书/某某文章用了龙格库塔法,所以决定也要用龙格库塔法; 2. 试图用NDSolve解某问题却失败了,所以决定还是用龙格库塔法; 3. 压根不知道NDSolve是什么,以为求解微分方程 = 编个龙格库塔法; 4. 觉得龙格库塔就是好,就是好,就是好! 那么,请记住,经典龙格库塔法(classical Runge-Kutta,RK4,文献里提到了“龙格库塔法”“四阶龙格库塔法”却没具体说明算法细节时一般也都是指它)很大程度上只是一个教学方法,它的性能(不论是速度还是精度)都是无法与NDSolve的默认方法相比的。如果只是需要解微分方程/微分方程组的初值问题,请直接使用NDSolve。NDSolve解不了的问题,你也别指望经典龙格库塔会起效。(过往十年我没见过哪怕一个疑难问题是靠切换成经典龙格库塔解决的。) 当然,在某些特殊情况下经典龙格库塔还是有“市场”的,比如有时我们需要精确重现某些文献的结果(指连数值误差之类的都准确重现),又比如有时我们可能会需要保证自己的结果也能被别人简单地重现。这种时候我们依旧可以使用NDSolve,因为NDSolve是可以通过设置具体选项来调用经典龙格库塔法的,具体可以参看自带帮助中的教程《NDSolve 的 "ExplicitRungeKutta" 方法》(tutorial/NDSolveExplicitRungeKutta),另可参考stackexchange帖子《Solving a system of ODEs with the Runge-Kutta method》: mathematica.stackexchange.com/a/23583/1871 啥?“我要写龙格库塔法没啥高大上的理由纯粹是为了交作业哦对了我们老师还要求我们用For循环”?…………
【水?】文心一言眼里的蕾 还有很长的路要走啊……
【水?】poe里这个chatgpt该不会是山寨货吧? 这效果也忒差了:还不如文心一言:
【水?】千里送鹅毛,礼轻情意重
关于我为什么只在公开场合回答Mathematica提问 这个其实也是说过多次的事情,索性开个主题,方便查找。吧里的老人应该都知道我只在公开的网站(贴吧/知道/知乎/Stackexchange…)回答Mathematica相关的问题。我也没有加入任何与Mathematica相关的qq群/微信群(确切地说我没微信)。这么做的原因主要有2个: 1. 封闭的讨论对知识的传承非常不利。 2. 我想尽可能地对抗“社交蒸发冷却效应”。 顺便,这套做法倒也不是一朝形成的。尽管我很早就意识到了封闭式讨论的缺点,但在早期,面对对方主动奉上qq号的“热情”,我依旧加过部分提问者的qq——这些人中的某几位的所做所为,构成了我不再进行非公开答疑的直接原因,不过这又是另一个故事了。
关闭笔记本中悬浮提示的办法 大概从版本10开始,当鼠标在笔记本中移动到内置函数上方时,Mathematica会自动出现如下的的悬浮提示。点击这个按钮可以打开帮助。这个功能对新手来说无疑是有好处的(它可以引导新手去阅读帮助),但对于脱离了新手阶段的人而言,这个功能有些多余(F1键调用帮助更方便),甚至可以说是麻烦(n击代码扩展选择的时候非常容易误触这个按钮),那么,有没有办法把这个功能关掉呢?答案是有的。 首先 Ctrl+Shift+O 打开(或者在顶部菜单“格式”中找到)“选项设置”,然后“显示选项值”设为“全局偏好”,再在 编辑选项 -> 个人编辑选项 -> CodeAssistOptions 中将 FloatingElementEnable 设为 False 即可:此法在12.3版及13.2版均测试通过。
【吧务】明确两条吧规:1. 禁跑题回复。与主题有足够相关性…… 与主题有足够相关性的回复不一定会判为跑题,但 具体尺度由吧务把握。 2. 所有询问新版/新中文版是否已发布的 提问均视作下载相关的问题,请在置顶中进行。(如果你非问不可的话。) 以上两条的处罚同为删+封1天。 这两条针对的是啥现象应该不需要我多解说,实在不解可在此帖下讨论。 置顶重发比较麻烦,就不重写了,我已补充在1楼的楼中楼里。 顺便这两条其实都是暗地执行了很长时间的规则,此前没有明确化主要是觉得实践不足。吧里类似的“内测”规则其实还有几条,不过这些规则是否合适目前都在实践中,这里就不明说了。(有争议的场合我一般会私信沟通——如果私信发得出去的话——所以不必太担心。)
【路标】为什么阿尔焦姆不娶石匠的漂亮女儿? 鉴于贴吧手机客户端帖子列表无法显示早年匿名用户所发主题的bug长期未修(参《【通告】贴吧手机客户端有bug,匿名发帖在列表中无法显示》:https://tieba.baidu.com/p/7424367899),现为部分匿名用户发起的典型主题增加“路标”。 《为什么巴尔焦姆不娶石匠的漂亮女儿,尔要去一个年轻的丑八怪老婆?》: https://tieba.baidu.com/p/196567381 对此话题感兴趣的同学请前往此帖讨论,不要另开新主题。
我是不是又被我小学同学骗了(《吞食天地》相关) 小学时有个同学,号称用一个暑假打通了《吞食天地》,他当时告诉大家的结局是: 刘备一把剑往地上一插,大地以剑为中心变成了一片草原。旁白:随着时间的流逝,三国的格局正式形成。(原话不记得了,大意如此。) 刚才突然想起来这件事,搜了个通关视频看了下,发现结局根本不是这么回事啊。我是不是又被骗了。(小学时的某些同学,唉。)还是说这是别的游戏的结局?(毕竟红白机上三国游戏不止一个。)
【回忆互助】一个模式有点像炸弹人的游戏 小时候在学习机上玩的,当时就不知道名字。主角是个感觉有点像海豹的奇怪生物,可以捡起地面上的十字架(?)喷火,游戏模式感觉很像炸弹人(新爆破)。这游戏另一个明显的特征是屏幕两侧各有一道火柱,画面上方中间有个狗头人(?)在那里指示火柱移动的方向。有人知道是啥游戏吗?
【水?】版本13.2更新幅度怎么这么小? 应该是版本10以来改幅最小的一次0.1版,新增函数非常少,new in 13.2的页面加入了大量的Updated充数。连老沃的更新博文都承认 Version 13.2 is—by our standards—a fairly small release. 下半年AI大爆发,难不成老沃把人全派去搞AI了?
查询Mathematica启动时间的内置方法 在SE晃悠的时候看到的: FE`Evaluate[FEPrivate`$StartTimes] 版本8及以上版本可用。 不知道是不是错觉,总感觉不准……
用Mathematica实现经典龙格库塔法(RK4)的教程没人写过? 用“龙格库塔 mathematica”在百度翻了10页,只看到2个基于Mathematica的经典龙格库塔法实现。一个是一篇论文,用的是For循环。(顺便摘要里还说经典龙格库塔是常微分方程近似解法里“最常用的一种”,这句话即使放在论文发表的06年也是大有问题。)还有一个是我在知道上的回答,引用的是Stackexchange上使用MapThread和Rule的代码,这个答案如今看来写得也不好。 自编RK4也算是个常见的作业题,如果目前中文网络上的相关实现真的只有上面两个,那是不是有必要写一个相关的教程?(帖子《NDSolve解不出来的东西,你也别指望经典龙格库塔能解!》( tieba.baidu.com/p/8054474975 )里面提及的primaryRK`程序包不太适合入门。)以此为切入点,可写的东西还挺多的其实。谁有兴趣写写吗?(我?我现在累了……) 大家手里要是有现成教程的话,也不妨分享一下。
继续玩图片混合,这次混的是《日出印象》:原图:
【八卦速递(?)】Mathematica的深度学习相关函数完蛋了? 在知乎上看到了这么个帖:我是不是可以把它概括为“Mathematica的深度学习相关函数完蛋了”?有没有 熟悉深度学习的大佬评论下?
“二维表达式从软件里拷出来就变乱,怎么办啊!”高级篇 虽然置顶也说了,看似杂乱的代码只要贴回Mathematica的笔记本里就会恢复原状,但是代码贴出来通篇的 ! 和 \ 还是让人有点不爽不是?虽然复制前先按 Ctrl+Shift+I 把代码换成 InputForm 可以在一定程度上解决这个问题,但还是不够好(毕竟整页的*也挺烦人,而且这还会导致某些排版丢失),因此这里以 D 和 Derivative 为例介绍一个高级解法: MakeBoxes[Derivative[n_Integer?(Between[{1,4}])][f_],StandardForm]:=With[{p=StringRepeat["\[Prime]",n],q=StringRepeat["'",n]},TemplateBox[{MakeBoxes[f]},"Derivative1",DisplayFunction->(SuperscriptBox[#1,p,MultilineFunction->None]&),InterpretationFunction->(RowBox[{#1,q}]&)]] MakeBoxes[Derivative[n__Integer][f_],StandardForm]:=TemplateBox[{MakeBoxes[f],RowBox[BoxForm`MakeInfixForm[{n},",",StandardForm]]},"Derivative2",DisplayFunction->(SuperscriptBox[#1,RowBox[{"(",#2,")"}],MultilineFunction->None]&),InterpretationFunction->(RowBox[{RowBox[{"Derivative","[",#2,"]"}],"[",#1,"]"}]&)] Unprotect[D]; FormatValues[D]={}; MakeBoxes[D[expr_,x__],StandardForm]:=TemplateBox[{MakeBoxes[expr],RowBox[BoxForm`MakeInfixForm[{x},",",StandardForm]]},"D",DisplayFunction->(RowBox[{SubscriptBox["\[PartialD]",#2],#}]&),InterpretationFunction->(RowBox[{"D","[",#,",",#2,"]"}]&)] Protect[D]; 参看 mathematica.stackexchange.com/a/231436/1871 mathematica.stackexchange.com/q/268886/1871 上述代码可以放在 SystemOpen@"init.m" 文件里,这样就不用每次都重新执行了。 其它拷出来就变乱的二维表达式(积分,微分算子……)也可以依此思路修正,大家不妨试试。
Mathematica“某一天突然不能用了”集中讨论帖 考虑到此类问题和“Mathematica已经装好了,但不能用”即“Mathematica一开始就不能用”有一定区别,特开专帖讨论。今后此类问题 原则上请不要单开主题。 这里的“不能用”,包括不限于 1. Mathematica 突然无法正常打开 2. Mathematica 突然变得无法正常工作(1+1也算不了等) 3. Mathematica 突然在执行正确的代码时出现莫名其妙的警告。 如果你的“Mathematica 一开始就不能用”,请看置顶。 闲话少叙,说一说可能的修复方法: 此类问题似乎和Mathematica的Paclet更新不当有关。多数情况下,只要给Mathematica来个clean start( 启动Mathematica时按住Ctrl和Shift;如果是通过命令行启动,则运行 mathematica.exe -cleanstart )即可。 另一个可能有效的办法,是打开 %APPDATA%\Mathematica\Paclets\Configuration 路径(没错,这个%APPDATA%也是一种地址,不信你把它贴到Windows文件夹顶部的那个框里回车下试试。更多内容请自行百度),将其中的 pacletSiteData_10.pmd2 文件删去。 如果想要预防此问题,可以考虑将顶部菜单 编辑 -> 偏好设置 -> 网络与邮件 -> 自动检测数据更新 给关掉——Mathematica会通过Paclet修复一些小bug,所以,可能的话尽量别关,但如果你网络环境很糟以至于Mathematica三天两头地“突然坏掉”,那或许还是关掉更好。 我知道的修复方法就这些。(我自己几乎没有遇到过,所以没什么经验。)欢迎诸位补充。 如果本帖的方法无法修复你遇到的问题,请回帖说明你的情况(Mathematica版本,操作系统版本,出错的具体情形等),不要另开新主题。
你猜D[E[x], x]会输出啥?——兼交流滥用内置符号可能导 致的有趣问题。 “别随便拿内置函数/符号当变量名”——Mathematica教程里一般都会带一句类似的话,这句话是这么的理所应当,似乎没什么好多说的,可是,如果稍加思考,就会发现事情似乎没这么简单:为什么我们不能拿内置函数/符号当变量名?如果这么干了,会导致什么问题? 比较容易想到的一种情况是:内置符号基本上都有Protected属性,因此诸如C=1的赋值默认情况下会失败。 可是除此之外呢? 我标题里所说的,就是其中之一:好了,废话了半天其实就是想把上面这个发现拿出来现一现。大家要是还知道其他类似的例子也可以拿来说说。躺。
【交流】Mathematica公式转为Word公式出错时的应对方法 我们知道(好吧,可能也不是人人都知道),Mathematica里的公式是可以直接Ctrl+C, Ctrl+V贴进Word里面的(当然,这是近几个版本的事,至少版本9时代我们得手动选择“复制为 -> MathML”,参《【交流】Mathematica版本10以来的某些悄悄改变》10楼:tieba.baidu.com/p/6249308172):这个功能很多时候是方便的(比如上面这个偏微分方程,即便你在Word里设置了恰当的简写和模板,输入效率也不见得比得过Mathematica),但是,就像几乎所有软件与软件、语言与语言间的交互功能一样,这个“Mathematica公式转Word公式”的功能并不完美——不,应该说出错的时候并不少,因此,本帖主要想和大家做两方面的交流: 1. “Mathematica公式转Word公式”在什么情况下会出错? 2. 对于此类错误,有没有好的解决方法? 是否有可能通过修改Mathematica中与前端(FrontEnd)有关的函数来进行“修复”? 照例由我先说一个例子吧。如果我们将TraditionalForm的 a==b 给贴进Word里,就会出现对于这个问题,我能想到的解决方法有两个: a. 在书写公式时避免使用==。如果我们只是把Mathematica作为公式输入器,这点自然不难做到,但如果我们是在把已有代码的一部分转为TraditionalForm,这就不那么方便了。 b. 用vba替换: Sub fixformula() With Selection.Find .Text = ChrW(63449) .Replacement.Text = "=" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub 最后,本帖暂不打算包含对逆过程(即“Word公式转Mathematica公式”)的讨论,毕竟排版语言转编程语言出错概率太高了。
关于蕾为什么叫蕾的一些瞎猜 免责声明:以下内容全是瞎猜,毕竟作者本人不亲自解释,这些名字的词源我们终究是无从确定的。 众所周知,《武器种族传说》的故事发生在架空世界里,里面的人名地名也都是作者编的。但编名字不可能凭空编,作者取名时必然借鉴过现实世界的人名/地名/词汇,比如男主角酷的全名“酷德·望·朱鲁艾特(クード=ヴァン=ジルエット)”,这个“望(ヴァン)”明显是来自荷兰语的“van”(顺便范德瓦尔斯的“范”和梵高的“梵”都是van的音译)。那么,蕾的全名“蕾芙丽·梅扎兰斯(レヴェリー=メザーランス)”是怎么来的呢? “蕾芙丽(レヴェリー)”是比较好猜的,它的发音显然指向英语单词reverie,英文版动画也使用了这个词作为蕾的译名。这个词的含义有“遐想,幻想,梦幻曲”,与蕾的人设相符。 梅扎兰斯(メザーランス)这个姓氏就比较麻烦了。从英文版动画译名“Metherlence”出发去考据并没有什么收获。以下是一个比较大胆的猜测:酷的名字受了荷兰语的启发,那么蕾的名字或许也和荷兰相关,而荷兰在英语中是“Netherlands”。“ランス”在日语里可以用作“lands”的转写,例如“landscape”的片假名表记就是“ランスケープ”,这便构成了姓氏的后半部;而姓氏的前半部“メザー”可能脱胎于“目指す(めざす)”(以……为目标),与lands合起来就是目标之地,这和整部漫画的主题也是相符的。
某个微分方程的帖子也不知道是被吞了还是LZ自删了 可我答案都写好了帖却没了我可就不爽了:看样子又是某种描述轮廓的微分方程。
你知道Mathematica里有三种换行吗?你真的知道换行的含义吗? 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初学者 次常见掉坑路径之一。“那么在一个函数内写下多条语句的正确方法到底是啥呢?”这便回到了我们开头的话题。 顺便,自带文档中也存在着大量的“复杂”函数定义示例,稍微多看两眼就能遇到,比如下面的例子,出自“ = ”的文档:所以说,最后还是那句老话, 自带帮助是最好的教材。
基于快速傅立叶变换的卡门涡街模拟 ——一段我八年时间也没搞清楚怎么修的代码 因为使用了较复杂的排版,正文发在 mmaqa 了。吧里就发个截图供预览吧:代码文本可在mmaqa获得。
Internal`Bag 为啥这么快?它在“低级”语言中的对标物是啥? 如题。显然它不只是个动态列表,比如下面这段 fortran 代码在我机子上要花11秒: program tst implicit none integer(8),allocatable:: lst(:) integer(8)::o1 lst=[integer(8)::] do o1=1,60000*2 lst=[lst,o1] end do print *, size(lst) end program 而这段 Mathematica 代码只要0.006秒: $ContextPath = DeleteDuplicates@Append[$ContextPath, "Internal`"]; dat = Compile[{}, Module[{list = Bag@Most@{0}}, Do[StuffBag[list, index], {index, 6 10^4 2}]; BagPart[list, All]]][]; // AbsoluteTiming
“右箭头”直接输入 -> 就行,不要到数学助手里去找! 就算你要到数学助手里找,也请在“基本”面板找:不要跑到“排版”的箭头分类里去找!注意提示文字,这两个箭头不一样!顺便说一句前一个箭头的完整形式是 Rule ,而后一个箭头的完整形式是 RightArrow ,不过对于会需要阅读本帖的童鞋而言这个知识点大概还太早了。 (这条其实已经收在《十戒》里了,想想还是单开个标题好认的主题吧。)
ClearAll 没有你们想象中的那个作用,请不要想当然! ClearAll 的正确用途及语法请参看帮助,不知道怎么查帮助的人,以及不知道我现在在说啥的人,请参看《你查过自带帮助了吗?你真的会查自带帮助吗?》:https://tieba.baidu.com/p/4392855072 顺便,clc,clear all之类的东西在Mathematica里也是没有任何意义的。 再顺便,如果你模模糊糊地觉得MATLAB、Mathematica、Maple、C、Pascal……其实是一个东西,那么,你是错的。 (这条其实已经收在《十戒》里了,但想想还是单开个标题好懂的帖强调一下。)
【老帖重发】冬妮娅的处理是作者水平太高还是水平太烂 此帖本是吧里“争鸣讨论”分区的一个精品帖,但该帖楼主 @千鹤のGuardian 目前遭百度屏蔽,他的帖子也跟着隐藏了,故现在重发一下。本帖备份较早,一些较新的回复没能收录(贴吧的“楼中楼”也对备份造成了不小的麻烦),想阅读完整版,只能期待 千鹤のGuardian 解封了。 为方便排版及避免再次被吞,正文放在有道云笔记里了: note.youdao.com/s/UEheO6XL
【注意】警惕手机客户端新bug,目前部分主题仅能在网页端查看 话不多说,上图:另,再强调一遍,我个人是反对大家用手机客户端访问这个贴吧的,Mathematica又不是手机软件。除此之外,手机客户端还有不少坑爹特性,大家对比一下手机端和网页端就知道了,这里不再多牢骚。
你猜1.001`2 /. (1.002`2 -> a)会返回啥? 这两天的一点关于模式匹配和任意精度数的小发现,文档里好像没有讲。(期待有人打我脸。)
【通告】贴吧手机客户端有bug,匿名发帖在列表中无法显示 建议大家尽量用电脑访问本吧,因为吧里的典型主题有不少是匿名用户发出的,光看手机客户端会错过不少内容。 顺便,此bug的修复大概是遥遥无期的:
我发表了一篇贴子,大伙来看看吧~
【调查】前来提问的你,用的是小号吗?
不会用 /. 和 -> 的人,连门都没入 想想还是再开一个标题醒目的帖强调一遍。自带帮助里对 ReplaceAll(/.)和 Rule( ->)的解说是很清楚的,请仔细阅读帮助。Solve,DSolve 等输出中包含 -> 的函数的帮助中也含有大量它们的实例:总之,请仔细阅读帮助。 不会查帮助的人请阅读吧里的精品帖《你查过自带帮助了吗?你真的会查自带帮助吗?》:https://tieba.baidu.com/p/4392855072
【资源】【自扫 + 搬运】《钢铁是怎样炼成的》日文版 据日文wiki,本书的日文译本至少有以下七种: 『鉄はいかに鍛へられるか』(東京案内社、1936年) - 稲田定雄訳 『鋼鉄はいかに鍛えられたか』(ナウカ社、1950年) - 杉本良吉訳(注:其实查杉本良吉的百科可知此版本初版也是1936年,但当时 可能只译出了第1部。) 『鋼鉄はいかに鍛えられたか』(青木文庫、1953年) - 一条正美訳 『鋼鉄はいかに鍛えられたか』(岩波文庫、1955年) - 金子幸彦訳 『いかに鋼鉄は鍛えられたか』(角川文庫、1958年) - 袋一平訳 『ロシア文学全集第32巻 オストローフスキィ 鋼鉄はいかに鍛えられたか』(修道社、1959年。平凡社版、1964年) - 中村融訳 『世界革命文学選1 鋼鉄はいかに鍛えられたか』(新日本出版社、1964年。文庫版、1974年) - 横田瑞穂訳 在亚马逊上可以找到的,有 一条正美,金子幸彦,袋一平,横田瑞穂 的四个译本。我收集癖作祟,购买并自扫了一条正美的译本,我选择该译本的原因是——这一版的封面图好看(心照不宣)。 此外,杉本良吉所译的第一部已经过了著作权保护期,其电子版可以在 国立国会図書館 免费阅读和下载,这里也搬运一下: 链接:s/1YlnpdWwb4x1u7fYINCEpFA 提取码:4j5x
话说版头可以改了吧,早够三个月了。电脑端会提示需要flash 话说版头可以改了吧,早够三个月了。电脑端会提示需要flash,但手机端貌似没这限制。@哭泣de御姐控 @猫留下的泪
1,{1},{{1}}是不一样的,不要对大括号视而不见! 这应该算是使用 ReplaceAll ( /. )的过程中必踩的两个坑之一。(另一个请参看《为什么 a^4 /. a^2 -> b 不输出 b^2 ?说说语义式匹配》:https://tieba.baidu.com/p/5728734141 。)为方便修订,正文内容放在了云笔记上,请多点一下鼠标: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fnote.youdao.com%2Fs%2F8cleVUiT&urlrefer=e470b466c52baa61d2286aa65dd3d657
【吧务】本吧暂时不会处罚设置“你需要关注TA才能发表评论”的人 但是,请做好没人答你的问题的心理准备。 决定暂时不做处罚的原因,主要是目前会这么做的人很少。(一个月也不见得有一个。)“司法”实践不足。 顺便,自己没有做任何尝试的帖子原则上都可以判断为求码帖,诸位吧务应该没忘吧? 最后表个态,我不会回答任何设置了“你需要关注TA才能发表评论”的主题。
ToExpression[…, TeXForm]认不出 \mathbb 其实经常在SE答题的盆友应该都有所察觉,那就是Mathematica对LaTeX的导入导出一直不完美。上面提及的这个问题很可能是继承自下面这个问题: ToExpression["\\mathbb{A}", TeXForm]输出的是普通的A嗯。 \[DoubleStruckCapitalA]右键复制为LaTeX倒是可以正确导出为\mathbb{A},不过这个步骤是由FrontEnd`CopyAsTeX[]函数控制的。参看 mathematica.stackexchange.com/q/102928/1871 个人感觉这回这个LaTeX直接输入功能的上线有点仓促,把 Underscript 的快捷键占了,结果 Underscript 的自带帮助页面又没改,只在非兼容性改变那页里说了一下。但愿会有12.2.1吧。
1
下一页