use*_*089 16 syntax wolfram-mathematica
有谁知道Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]Mathematica中的#in是什么意思?
那究竟是Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]什么意思呢?
谢谢.
Dr.*_*ius 32
它是变量的占位符.
如果你想定义ay(x)= x ^ 2函数,你可以这样做:
f = #^2 &
Run Code Online (Sandbox Code Playgroud)
将变量"泵入"#符号.这对于配对和#,当你有嵌套函数时很重要.
In: f[2]
Out: 4
Run Code Online (Sandbox Code Playgroud)
如果你有一个在两个vars上运行的功能,你可以这样做:
f = #1 + #2 &
Run Code Online (Sandbox Code Playgroud)
所以
In: f[3,4]
Out: 7
Run Code Online (Sandbox Code Playgroud)
或者您可能在列表中运行功能,因此:
f = #[[1]] + #[[2]] &
Run Code Online (Sandbox Code Playgroud)
所以:
In: f[{3,4}]
Out: 7
Run Code Online (Sandbox Code Playgroud)
关于 Root[]
根据Mathematica的帮助:
Root[f,k] represents the exact kth root of the polynomial equation f[x]==0 .
Run Code Online (Sandbox Code Playgroud)
所以,如果您的poly是x^2 - 1,使用我们上面看到的:
f = #^2 - 1 &
In[4]:= Root[f, 1]
Out[4]= -1 (* as we expected ! *)
Run Code Online (Sandbox Code Playgroud)
和
In[5]:= Root[f, 2]
Out[5]= 1 (* Thanks God ! *)
Run Code Online (Sandbox Code Playgroud)
但是如果我们尝试使用更高阶的多项式:
f = -1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &
In[6]:= Root[f, 1]
Out[6]= Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]
Run Code Online (Sandbox Code Playgroud)
这意味着Mathematica不知道如何计算符号结果.它只是多项式的第一个根.但它确实知道它的数值是多少:
In[7]:= N@Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]
Out[7]= -2.13224
Run Code Online (Sandbox Code Playgroud)
所以,Root[f,k]对于多项式的根来说,是一种速记写法,其次序> 3.我从一个关于激进的解释和找到多项式根源中拯救你......我认为更好
Yar*_*tov 10
如何找出Mathematica中任何内置语法的含义:
符号#(如上所述)用于表示"变量在这里"的纯函数(传统开发人员的"闭包").必须始终遵循它&.
最好的例子是:f[x_]:=x+5.这会创建一个延迟集,任何时候将值f作为函数参数传递给符号引用,该值将被赋予一个本地上下文函数特定的名称x(不影响全局定义x,如果有的话).然后x+5将使用此新变量/值来计算表达式.上述过程要求f初始化符号,x创建局部变量,并且表达式x+5永久保存在内存中,除非您清除它.
附注: f=5与f[x_]:=5一个"符号"都工作f.f当方括号用于提取其值时,可以被称为函数,并且f[x_]可以在f[x_,y_]不相互覆盖的情况下和平共存.一个参数发送时使用一个,发送2个参数时使用另一个参数.
有时你只需要一个快速的功能,不需要定义它并让它挂起.所以,(someValue + 5)变成(#+5)&,在哪里&说"我是一个纯粹的函数,并将与你发送给我的任何东西一起工作",并#说"我是发送到纯函数的参数(或参数列表)".你也可以使用#1,#2,#3等,如果您将它超过1点的参数.
常用的多参数纯函数示例:
假设mydata是一个列表列表,您需要按列表的中位数排序(例如,来自美国各个城市的住房价格数据):
Sort[ myData , Median[#1] > Median[#2]& ]
Run Code Online (Sandbox Code Playgroud)
快速提示,如果您将功能应用于单个值,它可能看起来更整洁,更清晰,并且使用更少的键入来@代替[],这实际上意味着Prefix.不要与Map (/@)或混淆Apply(@@).上面的命令变为:
Sort[ myData , Median@#1 > Median@#2 & ]
Run Code Online (Sandbox Code Playgroud)
你可以这样链@:Reverse@Sort@DeleteDuplicates[...]