标签: mathematica-7

在Mathematica 7中连接两个整数

在Mathematica 7中连接两个正整数的最有效方法是什么?

cc[123, 4567] >> 1234567

两个以上怎么样?

cc[123, 4, 567, 89] >> 123456789

wolfram-mathematica mathematica-7

9
推荐指数
1
解决办法
1227
查看次数

有没有更快的方法来找到最小值和最大值?

我经常写: {Min@#, Max@#} &

然而,这似乎效率低下,因为表达式必须扫描两次,一次找到最小值,一次找到最大值.有更快的方法吗?表达式通常是张量或数组.

wolfram-mathematica mathematica-7

7
推荐指数
1
解决办法
1525
查看次数

对于指定级别的每个组唯一的上下文

Mathematica的最新版本提供了$Context通过以下方式为每个单元组提供唯一选项:

  • 评估>笔记本的默认上下文>每个单元组都是唯一的

这是一个吸引人的概念,但我发现它无法使用,因为我的代码跨越多个单元组.

我想要一种方法来为某个级别的单元格组指定唯一的上下文,例如每个Section,但不是每个Subsection或每个单独的上下文Subsubsection.

解决方案需要在创建新单元组时对其进行影响.

wolfram-mathematica mathematica-frontend mathematica-7

6
推荐指数
1
解决办法
253
查看次数

Mathematica 7逐步显示答案

我想知道Mathematica应用于获得结果的步骤.我有

Limit[n^Log[2, n]/1.001^n, n -> \[Infinity]] 
Run Code Online (Sandbox Code Playgroud)

和Mathematica显示0,但我想知道它是如何得到这个结果的.

wolfram-mathematica mathematica-7

6
推荐指数
1
解决办法
6767
查看次数

"MapList"功能

Mathematica中,有许多函数不仅返回最终结果或单个匹配,而且返回所有结果.这些功能被命名*List.展示:

  • FoldList
  • NestList
  • ReplaceList
  • ComposeList

我缺少的东西是MapList函数.

例如,我想:

MapList[f, {1, 2, 3, 4}]
Run Code Online (Sandbox Code Playgroud)
{{f[1], 2, 3, 4}, {1, f[2], 3, 4}, {1, 2, f[3], 4}, {1, 2, 3, f[4]}}

我想要一个函数的每个应用程序的列表元素:

MapList[
  f,
  {h[1, 2], {4, Sin[x]}},
  {2}
] // Column
Run Code Online (Sandbox Code Playgroud)
{h[f[1], 2], {4, Sin[x]}}
{h[1, f[2]], {4, Sin[x]}}
{h[1, 2], {f[4], Sin[x]}}
{h[1, 2], {4, f[Sin[x]]}}

人们可以将其实现为:

MapList[f_, expr_, level_: 1] :=
 MapAt[f, expr, #] & /@
  Position[expr, _, level, Heads -> False]
Run Code Online (Sandbox Code Playgroud)

但是,效率很低.考虑这个简单的情况,并比较这些时间:

a …
Run Code Online (Sandbox Code Playgroud)

performance wolfram-mathematica map mathematica-7

6
推荐指数
2
解决办法
375
查看次数

在v7中使用GroebnerBasis的奇怪行为

我在使用时遇到了一些奇怪的行为GroebnerBasis.在m1下面,我使用希腊字母作为我的变量,在里面m2,我使用了拉丁字母.它们都没有与之相关的规则.为什么根据我选择的变量得到截然不同的答案?

图片:

在此输入图像描述

可复制代码:

Clear["Global`*"]
g = Module[{x}, 
    x /. Solve[
      z - x (1 - b - 
           b x ( (a (3 - 2 a (1 + x)))/(1 - 3 a x + 2 a^2 x^2))) == 0,
       x]][[3]];
m1 = First@GroebnerBasis[\[Kappa] - g, z]
m2 = First@GroebnerBasis[k - g, z]
Run Code Online (Sandbox Code Playgroud)

编辑:

正如belisarius所指出的,我的使用GroebnerBasis并不完全正确,因为它需要多项式输入,而我的不是.这个由复制意大利面引入的错误直到现在都没有引起注意,因为当我m1从上面使用其余的代码时,我得到了我所期望的答案.但是,我并不完全相信这是一种不合理的用法.考虑以下示例:

x = (-b+Sqrt[b^2-4 a c])/2a;
p = First@GroebnerBasis[k - x,{a,b,c}]; (*get relation or cover for …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mathematica-7

5
推荐指数
1
解决办法
202
查看次数

Interpolation的InterpolationOrder选项的奇怪行为

当试图重新创建一个InterpolationFunctionNDSolve我面临非常奇怪的问题与InterpolationOrder选项Interpolation.请考虑以下内容InterpolationFunction(文档中的示例函数):

ifun = First[
  x /. NDSolve[{x'[t] == Exp[x[t]] - x[t], x[0] == 1}, x, {t, 0, 10}]]
Run Code Online (Sandbox Code Playgroud)

现在让我们尝试重建它.这是数据:

Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"]
data = Transpose@{InterpolatingFunctionGrid[ifun], 
   InterpolatingFunctionValuesOnGrid[ifun]};
Run Code Online (Sandbox Code Playgroud)

这是InterpolationOrder:

interpolationOrder = InterpolatingFunctionInterpolationOrder[ifun]
(*=> {3}*)
Run Code Online (Sandbox Code Playgroud)

现在我们尝试构建InterpolatingFunction:

Interpolation[data, InterpolationOrder -> interpolationOrder];
Run Code Online (Sandbox Code Playgroud)

并得到错误Message:

Interpolation :: inord:选项的值InterpolationOrder - > {3}应该是一个非负的机器大小的整数或一个长度等于维数的整数列表,1.>>

但如果我们InterpolationOrder用手指定,那就没关系:

Interpolation[data, InterpolationOrder -> {3}]
(*=> InterpolatingFunction[{{0.,0.516019}},<>]*)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么InterpolationOrder -> interpolationOrder在工作时不起作用InterpolationOrder -> {3}虽然interpolationOrder必须用 …

wolfram-mathematica mathematica-8 mathematica-7

4
推荐指数
1
解决办法
355
查看次数