mathematica自学整理
mathematica自学整理
mathematica功能
数值计算,数值精算程序都尽量精确 ,由N()函数控制
符号计算
绘图功能
编程功能
笔记本
- *格式语言输入
- 使用样式表进行格式的调整
- 输入技巧:alt+],自动匹配成[]
基本技巧
程序运行:shift+enter
终止运行:alt+空格 或者 alt+
帮助:?+函数名(开头大写)
变量的批量赋值,并且都用小写开头
清除变量clear[]
命令序列可以自动调用 %n
退出:alt+F4
;号在末尾表示不输出结果
查询程序包:$Packages
比如:
第一个程序:
[图片上传失败...(image-e42754-1553590671499)]
从这个图片可以看出:
- 可以直接进行数值运算的输入
- 计算得到的结果系统尽可能用精确值表示(区别)
- 字体大小可以进行调整
- 文档结构清晰
- 随时随处插入各种对像
- 系统会自动记录输入的指令的顺序和输出结果
数据转换
-
函数
- N[x] 将x转换为实数形式
- N[x,n] 将x转换为最多具n个数字精度的近似实数
- Rationalize[x] 给出x的近似有理数
- Rationalize[x,dx] 给出误差在dx内x的近似有理数
- Rationalize[%]
- % 表示上一次输出的结果
%% 表示倒数第2次输出的结果
%%…%(共n个) 表示倒数第n次输出的结果
%n 表示以n为序号的那次输出结果
- % 表示上一次输出的结果
- ScientificForm[表达式] 以科学记数形式输出表达式
-
变量控制
- 赋值:p=3
- 擦除:clear[变量名],或者p=.
- 变量替换:
p3 = 5 - 4 y + 3 y^2 + y^3
p3/.y -> t+1
p3/.y ->2 [图片上传失败...(image-6159dd-1553590671499)]-
f = x^2 + x y + y^2
f/.{x->u+1, y->v-1}
[图片上传失败...(image-b82dd0-1553590671499)]
-
表(list)
- 当表中的元素较少时,可以采用直接输入的形式:
表变量名 = {元素1,元素2,…}
来生成表,即在给出表名的同时又给出了表中的元素,但在更多的时候是要利用建表函数Table、Range和Array来生成 - 表的元素又称为表的分量,表中分量的一般表示如下:
t[[n]]或Part[t,n] 表示表t中的第n个元素
t[[-n]]或Part[t,-n] 表示表t中的倒数第n个元素
First[t] 表示表t中的第一个元素
Last[t] 表示表t中的最后一个元素
t[{n1,n2,…}]
或
Part[t,n1,n2…]] 表示由表t中第n1,n2,…元素组成的表
t[[i,j]] 表示表t中的第i个子表的第j个元素 - 表的集合运算
- Union[t1,t2,…]若干表之“并”,由表t1,t2,…中所有不同元素组成
- Intersection[t1,t2,…]若干表的“交”,由表t1,t2,…中公共元素组成
- Complement[t1,t2]表t1与表t2的“补”
。由t1中有而t2中没有的元素
- 当表中的元素较少时,可以采用直接输入的形式:
-
局部变量和全局变量
原因是调用f[a]后,全局变量a的值已经变为10了。使用模
块函数可以解决这个问题,因为模块函数内定义的变量均为
局部变量。模块函数的定义格式为:
Module[{x,y...},模块体]
Module[{x=x0,y=y0...},模块体]
Module[{x,y...},表达式/;条件]
编程技巧
输入/出数据文件
(1) 输出到文件:
Export["文件名",表]
(2) 输入文件:
Import["文件名"]
(3) 显示文件内容:
!!"文件名"
(4) 读数据文件:
ReadList["文件名",Number]
ReadList["文件名",Number,RecordLists True]
注:无Number,以"
,
"作间隔;有Number以空格作间隔Input[] 输入数值表达式Input[提示字符串]InputString[] 输入字符串InputString[提示字符
-
自定义函数
!!fil,查看自定义函数内容
Save[“文件名”,自定义函数名序列f,g,h,…]
<<file1
f[1] + g[1, 2]
-
函数迭代
[图片上传失败...(image-430d91-1553590671499)]
-
函数嵌套
newton3[x_] := N[1/2( x + 3/x)]
NestList[newton3, 5.0, 4] -
不动点
FixedPoint[newton3, 5.0]
-
迭代折叠函数
f[x_, y_] := x + y^2FoldList[f, x, {a, b, c}]
-
函数运算与算子
[图片上传失败...(image-b992d6-1553590671499)]
[图片上传失败...(image-f90ace-1553590671499)]
-
条件结构
- =x/ 当 test 为真时使用定义 rsh
- 如test为真计算then,反之计算else
- 依次计算 testi,给出对应的值 vaulei
- expr 与每一个 formi 相比较,给出相匹配的值 valuei
eg:定义分段函数
方法一:
方法二:
方法三:
循环结构
-
Do 结构、For 与 While 结构
- 循环计算 expr,步长为 di,i从 imin 增加 imax(步长缺省则默认为 1,imin 缺省也默认为 1)
- 循环计算 expr 共 n 次
- 循环计算 expr,i 从 imin 到 imax 循环,对于每个 i,j 从jmin 到 jmax 循环(即多重循环)
-
For
- 以 start 为起始值,重复计算执行主体 body 和执行表达式incr 改变循环变量的值,直到 test 为假
-
while结构
- 只要 test 为真,则重复计算执行主体 body
tips:防止死循环,break[]函数
绘图
-
平面曲线表示法
-
直角坐标显式(简称显式),直接输入
-
直角坐标隐式(简称隐式)
ImplicitPlot[F[x,y] == 0,{x,x1,x2},可选项]
<< Graphics` 调入包
ImplicitPlot[x^4 + y^4 – 18 (x^2 + y^2) + 14 ==0, {x, -6, 6}] -
参数式
ParametricPlot[{x(t), y(t)}, {t, t1, t2}, 可选项] ParametricPlot[{{x1(t),yl(t)},{x2(t),y2(t)},…},{t,t1,t2},可选项]
极坐标式
<< Graphics`
PolarPlot[1 – 2 Cos[t], {t, 0, 2 Pi}]列表式(又称数据形式,或称离散点形式
图形式(画出曲线的图形)
-
-
空间曲线表示
-
显式:
Plot3D[x4+y4 – 18 (x^2 + y^2), {x, -4, 4}, {y, -4, 4}]
参数形式
x = x(u,v),y = y(u,v),z = z(u,v)
ParametricPlot3D[{x(u,v),y(u,v),z(u,v)},{u,u1,u2},{v,v1,
v2},可选项]- 数据形式
Ta = {{0, 1, 4, 9, 16}, {1, 2, 5, 10, 17}, {2, 3, 6, 11, 18}, {3, 4, 7, 12,
19}};
ListPlot3D[Ta]交截形式
绘制函数函数ParametricPlot3D[{x(t),y(t),z(t)},{t,t1,t2},可选项]
投影函数shadow[],不是内置函数,<<Graphics'
-
-
属性(可选项)
[图片上传失败...(image-94a883-1553590671499)]
- 可选项名 - > 可选项值 PlotStyle->GrayLevel[i]
-
Show函数的功能之一是显示已经做好的图形
-
C1 = Plot[Sin[x], {x, 0, 2 Pi}, PlotStyle-> RGBColor[1, 0, 1]];
C2 = Plot[Sin[x – 1], {x, 0, 2 Pi}, PlotStyle-> GrayLevel[0.6]];
C3 = Plot[Sin[x + 1], {x, 0, 2 Pi}, PlotStyle-> Thickness[0.009]];
C4 = Plot[Sin[2 x], {x, 0, 2 Pi}, PlotStyle-> Dashing[{0.01, 0.02,
0.04}]];Show[C1, C2, C3, C4]
-
符号计算
-
表达式的变换
[图片上传失败...(image-56b272-1553590671499)]
函数的极限
Limit[f(x), x->a]与Limit[f(x),x->Infinity
- 导函数与偏导数
D[f(x),x]D[f(x),{x,n}上面第一式是将f(x)对x求一阶导数,而第二式是将f(x)对x
求n阶导数,式中的D是求导符号。
D[f(x,y),x,y] 将f(x,y)先对x求导,再对y求导。D[f(x,y),{x,m},{y,n}]将f(x,y)先对x求m阶导数,再对y求n阶
- 不定积分与定积分
Integrate[f(x),Integrate[f(x),{x, a, b}
- 将函数展开为幂级数
Series[f(x), {x, x0, n}]
- 求和与求积
Sum[un,{n,n1,n2}] 求和
Product[un,{n,nl,n2}] 求积
式中un为通项,n为通项的项数,n1为起始项,n2为终止
项,n2可以取有限数,也可以取Infinity(即+∞)
- 方程求根
Solve[代数方程(或方程组),未知量]
- 常微分方程求解
DSolve[微分方程或方程组,未知函数,自变量] 求通解
DSolve[{微分方程,初始条件},未知函数,自变量] 求特解
- 偏微分方程
DSolve[偏微分方程,未知函数u(x,y),自变量{x,上式中尚未涉及到定解条件,求得的解只含有任意函数的解析解
数值计算
-
函数值与导数值的计算
x = {-Pi/6, Pi/3, Pi/2};
N[Sin[x] + Sin[2 x] + Sin[3 x]] -
定积分与重积分的数值计算
Clear[x];
f = Exp[-2*x] * Sinfx = D[f, x]
N[fx /. { x->l }]
fxx = D[f, {x, 2} ]
N[fxx/. {x-> -1}]
fxxx = D[f, {x, 3}]N[fxxx/. {x ->2
NIntegrate[f(x),{x,a,b}]
NIntegrate[f(x,y),{x,a,b},{y,c,d}]
-
方程的近似根
FindRoot[f(x) = = 0,{x,x0}]
在0≤x≤1与0≤y≤1的范围内很可能存在
实根,故不妨取x0
= Random[],y0
= Random[],即有
FindRoot[{x + y ==1, Sin[x] – Cos[y] == 0.1},
{x, Random[]},{y, Random[]}] -
常微分方程数值解
NDSolve[{微分方程,初始条件},未知函数,{自变量范围}]NDSolve[{微分方程组,初始条件},{未知函数1,未知函数2,…}, {自变量范围
-
一元插值
InterpolatingPolynomial[数据名(用data1),自变量名]
二元插值
-
一元拟合
Fit[data1,{1,x,x
,…},
二元拟合
迭代和分形
基本概念:
- 生成元
帮助
现代软件都十分庞大,功能纷繁复杂,有非常多的库调用,那么怎么样去从全局把控去掌握这些软件的操作技巧,把心力着力于问题的分析和解决呢,毕竟人脑可不是全部用来记忆的,那么这里有一些软件通用的技巧。
-
使用或命令
- 具体某一个对象的信息:
- 显示有关name的详细信息:
- 通配符,显示相关所有的对象:
-
Help功能
- 窗口里面的help
- 快捷键调出帮助界面:Shift + n
名称完善功能:Ctrl+K ,输入命令或函数前几个字母得到一个名称列表
公式输入可以用输入面板palttes[图片上传失败...(image-681f5d-1553590671499)]
(*…*)为Mathematica系统的注释符号,两个号之间为注释内容,注释部分可以放在程序的任何位置
学习资源
官网
有点郁闷啊,为啥GitHub有些更新看不见了呢,shit!
上一篇: ProjectEuler Mathematica 答案
下一篇: Mathematica 智多星