Mathematica学习笔记001

基本操作

执行计算:Shift+Enter
终止计算: Alt + 句号 

?后输入函数名,然后Shift(Enter),得到对该函数的说明
如果对函数名拿不准,还可以用上通配符(*)


%表示上一个输出;%i表示编号i的输出

下标 ctrl+_
平方根 ctrl+@
点积(点乘) ctrl+.
大于等于 Esc >= Esc
积分 Esc int Esc
并集 Esc un Esc

结尾加分号,表示计算,但不输出结果——用于保留过程值
内置函数都是首字母大写,且参数都是放在方括号中:

非常著名的绘图函数:Plot[函数,{x,min,max}]
Factor[x^5-1] 因式分解
{a,b,c}(ctrl+.){x,y,z}结果为ax+by+cz

List用{.., ...}表示
求积分:Integrate[Cos[x],{x,a,b}]

2 基本概念

2.1 表达式

Mathematica中一切皆表达式(Expression,expr),正如Java中一切皆对象。

Head[expr]:返回expr的头信息,可能是整数、有理数、实数、复数...加法、函数、ListAtomQ[expr]:测试是否是元表达,比如String、复数是Atom
FullForm[]:可以看到一个表达式在Mathematica内部是如何组成的 --> 相关函数:HoldForm[], Attributes[]
TreeForm[]:可以获得更清晰的expr组成
Part[]:对于不是Atom的表达式,可以输出其组成部分,第二参数0,输出Head,也可以用expr[[n]]来简化表达

为了推迟计算参数,可以用HoldForm[]再包裹一层,或者用Evaluate@Table,或者Defer[]

用FullForm展开表达式可以了解Mathematica是如何看待表达式的,它肯定有内在的规则,你可以试试这两个表达式,看看结果是不是你想象的。(x^2+y)*z/w 和 (a/b)

2.2 定义(definitions)

定义一个变量用=
?变量名:查看一个变量
定义一个函数,用这样的规则 f[x_, y_]:=1/(x+y) —— 注意左边变量后的下划线,注意冒号加等号的表达(因为这可以看作是一种延时赋值,解释见下)
可以存在f[x_], f[x_, y_] 即函数名相同,参数数量不同,Mathematica不会混淆

Clear[]: 清除变量或函数的定义
立即赋值与延时赋值(=/:=,Set[]/SetDelayed[]),延时赋值会在变量每次使用时才去赋值(特别适用于做随机数的时候)
如果使用立即赋值(=),等式右边会首先计算出数值,即等式右边不能有未确定的值;另外注意行末尾的;也可以使该行先不计算

2.3 布尔值

PrimeQ[], EvenQ[], OddQ[]
IntegerQ[],
NumericQ[]
NumberQ[]:检查参数是否是个显式表达的数值(也即Head值是Integer,Rational,Real,Complex),Pi会返回False,因为它是个Symbol

Equal(==):注意是两个等号
Unequal,GreaterEqual,LessEqual

bitwise logical operator
BitAnd[], BitOr[], BitNot[], BitXor[]
BaseForm[数字,进制]
2^^1001,表示二进制的数1001

2.4 属性(attributes)

Attributes[]
SetAttributes[]
ClearAttributes[]

3 Lists

3.1 创建、显示和基本操作

可以用List[]或{..., ...}来构建list,Mathematica对List中元素类型不限制,可以嵌套list
还可以用Range[min, max, step]、Table[expr, {i, min, max, step}]构建List

Table[i+j, {i..}, {j..}] 可以构建多重循环,可视为:
for i=...
   for j...
      i+j

所以j决定每组有多少个元素,i决定有几组
也就说明了Table还可以这样玩:Table[i+j, {i,1,4}, {j,1,i}]

Table[2^p-1, {p,{2,3,5,7,13,17}}] (*只有这样才能确定p的位置,同时p的实际值来源于一个list)

更高阶的构建list的方法还包括:Array, ConstantArray, SparseArray

Sort[] 排序
可以用不同方式显示list,MatrixForm[],TableForm[],Grid[],TreeForm[]
Array[Greater, {4, 4}] // MatrixForm

3.2 list的结构

Postion[list, target], 确定目标在list中出现的位置
Count[list, target], 确定目标在list中出现的次数
MemberQ[list, target],确定目标是否出现在list中
Free[list, target],目标是否没在list中,上一个函数取反

Length[list],返回列表长度
Dimensions[list],显示list的层级结构

3.3 对list的操作

1.取出list中指定位置的元素,实质上用的Part[list, numIndex], 简化方式是list[[numIndex]]
其中:1)索引从1开始编号,很直观;2)如果取多个数numIndex本身也可以是个关于元素位置的list,其中的元素不需要连续
基于上述2),可以用Range[lowIndex, highIndex]来取出连续的多个元素,定影的简化写法是list[[low;;high]]

2. 多维数组依然可以通过[[x,y,z]]来取数,其中y,z的位置可以用All,如果忽略,则默认该位置为All

3. Take[list, num]表示取出num个函数
num可以为负数(表示从后向前),
可以为2个数的list,表示取一部分
可以为3个数的list,表示{first, last, step}

4. Drop[list, num]表示去掉开头num个元素;num为负数时表示去掉结尾num个数,num为两个数的list时,表示去掉一段数

5. Delete[list, index]表示删除index元素,对多个进行操作时,第二个参数写成{{index1},{index2}}

6. First[], Last[], 
Rest[](*除了第一个*)
Most[](*除了最后一个*)

关于list的排列

Sort[list]
Sort[list, Greater], 大者在前(默认为大者在后,升序)

SortBy[mutiDimensionList, Last] (默认为以第一个元素排序)

Reverse[list]
RotateLeft[list, n]
RotateRight[list, n]

Partition[]分组形成新的list

Transpose[]转置

Append[list, v] 加在最后
Prepend[list, v] 加在最前
Insert[list, v, index]
ReplacePart[list, v, index]

Flatten[list] 把嵌套的list变成一维
Flatten[list, num] 减少num级嵌套

对多个list的操作

Join[list1, list2] 把多个list合成一个
Union[list1, list2] 合集 (也可以用于单独的list,此时就是把list去掉重合元素)
Intersection[list1, list2] 交集
Complement[list1, list2] 仅出现在list1中的元素

DeleteDuplicates[] 去重但不改变顺序,上述的几个函数会重新排序

Join[{header},data] 或者 Prepend[data, header]
注意要在Join中给header加个{}
通过Dimensions[header和data]就能发现这样做的意义

索引

可以在WMDC(Wolfram Mathematica Document Center,也就是其帮助文档)中搜索的索引:
Using a notebook interface:如何用Notebook记笔记
Entering Two-Dimensional Input:如何直接输入漂亮的数学公式
Evaluation and Evaluation of Expressions:Mathematica如何分析和计算

posted @   里欧老师  阅读(264)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示