美文网首页
mathematica自学整理

mathematica自学整理

作者: 兵哥_8e95 | 来源:发表于2019-03-26 16:58 被阅读0次

    mathematica自学整理

    mathematica功能

    • 数值计算,数值精算程序都尽量精确 ,由N()函数控制

    • 符号计算

    • 绘图功能

    • 编程功能

    笔记本

    • 自由格式语言输入
    • 使用样式表进行格式的调整
    • 输入技巧:alt+],自动匹配成[]

    基本技巧

    • 程序运行:shift+enter

    • 终止运行:alt+空格 或者 alt+

    • 帮助:?+函数名(开头大写)

    • 变量的批量赋值,并且都用小写开头

    • 清除变量clear[]

    • 命令序列可以自动调用 %n

    • 退出:alt+F4

    • ;号在末尾表示不输出结果

    • 查询程序包:$Packages

    比如:

    第一个程序:

    [图片上传失败...(image-e42754-1553590671499)]

    从这个图片可以看出:

    • 可以直接进行数值运算的输入
    • 计算得到的结果系统尽可能用精确值表示(区别)
    • 字体大小可以进行调整
    • 文档结构清晰
    • 随时随处插入各种对像
    • 系统会自动记录输入的指令的顺序和输出结果

    数据转换

    • N[ ]函数

      • 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[提示字符

    • 自定义函数

      f\left[x_{-}\right] :=\operatorname{Exp}[x] *(\sin [x]+1)+\log \left[x^{\wedge} 2\right]

    • !!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)]

    • 条件结构

      • Ihs :=xhs 1/;test 当 test 为真时使用定义 rsh
      • If [test, then, else] 如test为真计算then,反之计算else
      • Which [test1, valuel, test2, value2,\cdots] 依次计算 testi,给出对应的值 vaulei
      • Switch [expr, forml, valuel, form2, value2,\cdots] expr 与每一个 formi 相比较,给出相匹配的值 valuei

    eg:定义分段函数
    f(x)=\left\{\begin{array}{cc}{x^{2}+1} & {x>0} \\ {-x^{2}-1} & {x<0} \\ {0} & {x=0}\end{array}\right.
    方法一:
    \begin{array}{l}{f[x] :=x^{\wedge} 2+1 / ; x>0} \\ {f\left[x_{-}\right] :=-x^{\wedge} 2-1 / ; x<0} \\ {f\left[x_{-}\right] :=0 / ; x==0}\end{array}

    方法二:
    f\left[x_{-}\right] :=I f\left[x>0, x^{\wedge} 2+1, I f\left[x<0,-x^{\wedge} 2-1,0\right]\right]
    方法三:
    f\left[x_{-}\right] :=\text { Which }\left[x>0, x^{\wedge} 2+1, x<0,-x^{\wedge} 2-1, x==0,0\right]

    循环结构

    • Do 结构、For 与 While 结构

      • Do[expr,{i,imin,imax,di}] 循环计算 expr,步长为 di,i从 imin 增加 imax(步长缺省则默认为 1,imin 缺省也默认为 1)
      • Do[expr,{n}] 循环计算 expr 共 n 次
      • Do[expr,{i,imin,imax,di},{j,jmin,jmax,dj}]循环计算 expr,i 从 imin 到 imax 循环,对于每个 i,j 从jmin 到 jmax 循环(即多重循环)
    • For

      • For[start,test,incr,body]以 start 为起始值,重复计算执行主体 body 和执行表达式incr 改变循环变量的值,直到 test 为假
    • while结构

      • While[test,body] ​只要 test 为真,则重复计算执行主体 body

    tips:防止死循环,break[]函数

    绘图

    • 平面曲线表示法

      • 直角坐标显式(简称显式),直接输入y=e^{-x} \sin x, \quad y=4+2 x-x^{3}

        Plot[f(x),{x,x1,x2},可选项] Plot[{f1(x),f2(x),…},{x,x1,x2},可选项]

      • 直角坐标隐式(简称隐式)F(x, y)=0 ,x^2+y^2=0

        ImplicitPlot[F[x,y] == 0,{x,x1,x2},可选项]

        << Graphics` 调入包
        ImplicitPlot[x^4 + y^4 – 18 (x^2 + y^2) + 14 ==0, {x, -6, 6}]

      • 参数式z = x(t),y = y(t)

        ParametricPlot[{x(t), y(t)}, {t, t1, t2}, 可选项]
        ParametricPlot[{{x1(t),yl(t)},{x2(t),y2(t)},…},{t,t1,t2},可选项]
        
      • 极坐标式\rho=\rho(\theta),\rho=\frac{1}{3} e^{2 \theta}​
        PolarPlot [\rho(\theta),\{\theta, \theta 1, \theta 2\}]
        << Graphics`
        PolarPlot[1 – 2 Cos[t], {t, 0, 2 Pi}]

      • 列表式(又称数据形式,或称离散点形式
        ListPlot[\{x1,y1\},\{x2,y2\},…,\{xn,yn\},可选项]

      • 图形式(画出曲线的图形)

    • 空间曲线表示

      • 显式:z = x ^4 + y ^4 – 18(x^2 + y ^2 )​

        Plot3D[x4+y4 – 18 (x^2 + y^2), {x, -4, 4}, {y, -4, 4}]

      • 参数形式x = x(t),y = y(t),z = z(t)

      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]

      • 交截形式
        \left\{\begin{array}{l}{f(x, y, z)=0} \\ {\varphi(x, y, z)=0}\end{array}\right.

      • 绘制函数函数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
      • 显示有关name的详细信息:??name​
      • 通配符,显示相关所有的对象:?Abc*
    • Help功能

      • 窗口里面的help
      • 快捷键调出帮助界面:Shift + n
    • 名称完善功能:Ctrl+K ,输入命令或函数前几个字母得到一个名称列表

    • 公式输入可以用输入面板palttes[图片上传失败...(image-681f5d-1553590671499)]

    • (*…*)为Mathematica系统的注释符号,两个号之间为注释内容,注释部分可以放在程序的任何位置

    学习资源

    官网

    有点郁闷啊,为啥GitHub有些更新看不见了呢,shit!

    相关文章

      网友评论

          本文标题:mathematica自学整理

          本文链接:https://www.haomeiwen.com/subject/eyvgvqtx.html