数据类型与数据结构
客官别急,此篇笔记尚未完稿,作者正在玩命码字呢,先看看其它主题吧 ^_^
数据类型
在 Mathematica 中使用变量之前无需定义,直接对其赋值即可,不需要考虑数据类型,这对初学者来说可能会是一个福音。 但随着你对 Mathematica 越来越熟悉,就会发现,Mathematica 中存在着各种数据类型,并应该在使用时加以注意,以避免写出低效率的程序。
表达式(一切数据类型)
作为符号计算系统,Mathematica 将一切都视为表达式(可解理为符号,一般有返回值),没有什么是不可以计算的,这也正是其特点之一。 为阐述这一点,下面举两个例子加以说明:
字符串是可计算的
s1 = "Hello";
s2 = "World";
Simplify[(s1 + s2)^2 - s1^2 - s2^2]/2
输出(输出格式不显示字符串标记的双引号,下同):
Hello World
函数是可计算的
f = Sin[#] + 1 &;
g = Cos[#] + 2 &;
h = f@*g;
h[x]
输出:
1 + Sin[2 + Cos[x]]
整数(整型:314)
在 Mathematica 中,整数是最接近“符号”的数据类型。如果内存允许,Mathematica 在理论上支持任意大整数的精确计算。
实数(浮点型:3.14)
在 Mathematica 中,实数即其它编程语言中的浮点数。如果内存允许,Mathematica 在理论上支持任意精度的浮点计算。
1.0+2(*默认精确度*)
2.0`20+2(*指定精确度*)
NSolve[x^2 == 2, x, WorkingPrecision -> 100] (*指定精确度*)
输出:
3.
3.00000000000000000000
{ {x->-1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573},{x-> 1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573} }
N[Pi^2/6, 500] (*将符号数字转为实数,指定500位精度*)
输出:
1.6449340668482264364724151666460251892189499012067984377355582293700074704032008738336289006197587053040043189623371906796287246870050077879351029463308662768317333093677626050952510068721400547968115587948903608232777619198407564558769632356367097100969489020859320080516364788783388460444451840598251452506833876314227658793929588063204472197908477340910590208378289549278263890379763583343942045159120818099593454448774587965008808894087011116347106931614618428879815486244835909183448757387428394
复数(整型 & 浮点型)
在 Mathematica 中,复数域为默认数域,其支持整型复数也支持浮点型复数,但只有实部与虚部皆为整数时,才按整型复数计算。 因此,下面几乎是每位初学者都会遇到的问题——为什么 $\sqrt[3]{-1}\ne -1$ ?
默认复数域
(-1.0)^(1/3) (*为了看得更清楚一些,将-1改为-1.0*)
Surd[-1.0, 3]
输出:
0.5 +0.866025 I
-1.
字符串
在 Mathematica 中,字符串标记为双引号,转义字符为反斜杠“\
”。比如,当字符串包含双引号时,要在双引号前面加一个反斜杠;当字符串中包含反斜杠时,要在反斜杠前面加一反斜杠,即双写反斜杠。
转义字符
s1 = "\"my path contain a space character";
s2 = "\\";
s3 = "file.txt\"";
s = s1 <> s2 <> s3
输出:
"my path contain a space character\file.txt"
字符串模板
StringTemplate["`a` plus `b` is equal to `c`"][<|"a"->1,"b"->2,"c"->3|>]
输出:
1 plus 2 is equal to 3
日期与日间
实体
数学常量
如:Pi
, E
, I
, EulerGamma
, Infinity
等,更多请参见:http://reference.wolfram.com/language/tutorial/MathematicalConstants.html
无穷大
Sum[1/i^2, {i, 1, Infinity}]
输出:
Pi^2/6