欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mathematica自学整理

程序员文章站 2022-03-31 12:25:09
...

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!