Mathematica绘制函数图像—隐函数图像

        熟悉几何画板的网友应该可以或许发现,几何画板几乎不成能画出隐函数的图像。若是我们需要绘制某些隐函数的图像,应该怎么办呢?我标的目的大师保举两条目软件:Desmos和Mathematica。

        关于Desmos绘制隐函数的图像,《怎么利用Desmos绘制函数图形》里已经有了简单的讲述,感乐趣的网友可以去看看。

        下面就讲一下用Mathematica画隐函数图像的具体方法,并当令地对比一下Desmos的结果。

5怎么利用Desmos绘制函数图形

工具/原料

  • 电脑
  • Mathematica(8.0以上版本)
  • Desmos网页版

例一:几种未定名的曲线、曲面

  1. 1

            有人可能要说,画不出隐函数的图像,你可以把隐函数方程化当作显函数来画呀!或者转化当作参数方程的形式呀!就像椭圆的参数方程是:x=sint,y=cost,这不就把椭圆的方程的“隐函数”转化为“参数方程”了吗?

            对此,我只好难为他们一下了:

            请测验考试着把x^y=y^x转化为“非隐函数”的形式。

  2. 2

            隐函数的图像,要用ContourPlot号令函数来实现。

            例如:绘制x^x+y^y=5/3的图像。

            Mathematica代码是:

    ContourPlot[x^x + y^y == 5/3, {x, 0, 1}, {y, 0, 1},  ImageSize -> {500, 500}]

            注重格局:这里图形大小设定为500×500像素;方程x^x + y^y == 5/3之间的等号必需是双等号;x和y的画图规模都要写出来。

            运行今后获得的图形是下面第一个图。第二个图是用Desmos画出来的。

  3. 3

            其实,ContourPlot还可以绘制等高线图

    ContourPlot[x^x + y^y, {x, -0.5, 2}, {y, -0.5, 2}]

    ContourPlot[x^x + y^y, {x, -0.1, 0.7}, {y, -0.1, 0.7}]

            发现,当x^x + y^y的值过年夜的时辰,图形不是封锁曲线。于是发生一个问题:要包管x^x + y^y=a的图像是封锁曲线,a的最年夜值和最小值别离是几多?

  4. 4

            绘制x^x + y^y + z^z ==2.3的三维图形,要用到的号令函数是ContourPlot3D。具体的格局与ContourPlot近似,独一的区别是,多了个变量z。

            代码是:

    ContourPlot3D[ x^x + y^y + z^z == 2.3, {x, 0, 1.1}, {y, 0, 1.1}, {z, 0, 1.1}]

            成果是一个封锁的三维曲面。

            一个近似的问题:要包管x^x + y^y+z^z=a的图像是封锁曲面,a的最年夜值和最小值别离是几多?

例二:非圆弧的等宽曲线

  1. 1

            有一条闻名的等宽曲线,它分歧于Reuleaux三角形之流。因为它不是靠很多圆弧拼当作的,而是处处滑腻,可以由一个隐函数方程(一个8元2次多项式)给出来。以前,我用Desmos画出来了,那时只截了个图,没有贴代码。因为方程式很长,所以,这里把代码贴出来。

            Mathematica代码

    ContourPlot[(x^2 + y^2)^4 - 45 (x^2 + y^2)^3 - 41283 (x^2 + y^2)^2 +    7950960 (x^2 + y^2) + 16 (x^2 - 3 y^2)^3 +    48 (x^2 + y^2) (x^2 - 3 y^2)^2 -    720^3 + (x^2 - 3 y^2) x (16 (x^2 + y^2) ^2 - 5544 (x^2 + y^2) +       266382) == 0, {x, -10, 10}, {y, -10, 10}]

            Desmos代码是:

    0=\left(x^2+y^2\right)^4-45\left(x^2+y^2\right)^3-41283\left(x^2+y^2\right)^2+7950960\left(x^2+y^2\right)+16\left(x^2-3y^2\right)^3+48\left(x^2+y^2\right)\left(x^2-3y^2\right)^2+x\left(x^2-3y^2\right)\left(16\left(x^2+y^2\right)^2-5544\left(x^2+y^2\right)+266382\right)-720^3

            对比成果如下:

  2. 2

            等高线图:

    ContourPlot[(x^2 + y^2)^4 - 45 (x^2 + y^2)^3 - 41283 (x^2 + y^2)^2 +   7950960 (x^2 + y^2) + 16 (x^2 - 3 y^2)^3 +   48 (x^2 + y^2) (x^2 - 3 y^2)^2 -   720^3 + (x^2 - 3 y^2) x (16 (x^2 + y^2) ^2 - 5544 (x^2 + y^2) +      266382), {x, -10, 10}, {y, -10, 10}]

            可以发现,今世码里的式子变年夜,就不是等宽曲线了(变小时,不克不及必定)。于是有一个问题怎么证实上面步调里的曲线是等宽曲线?我不会,留着慢慢解答。

  3. 3

            关于等宽曲线的其它内容,参考《等宽曲线的理解和机关》。

    2等宽曲线的理解和机关

ContourPlot(3D)各类选项

  1. 1

            去失落坐标轴,用Axes->False

            去失落边框,用Frame->False

            ContourStyle 决议等高线的外形特征。

            例如:

    ContourPlot[x^x + y^y == 5/3, {x, 0, 1}, {y, 0, 1}, 

     ContourStyle -> {Blue, Thickness[0.01]}, Axes -> False, 

     Frame -> False, ImageSize -> {500, 500}]

            这是一条蓝色的曲线,宽度为0.01。

  2. 2

            PlotLabel  给图形添加标签,一般位于顶部;

            LabelStyle 决议标签的外不雅特征。

            把上面的代码加以点窜:

    ContourPlot[x^x + y^y == 5/3, {x, 0, 1}, {y, 0, 1}, 

     ContourStyle -> {Blue, Thickness[0.01]}, Axes -> False, 

     Frame -> False, PlotLabel -> Style[x^x + y^y == 5/3, 20], 

     LabelStyle -> Directive[Bold, Blue], ImageSize -> {500, 500}]

            于是,图形上边有了一个标签。

  3. 3

            Ticks 给出坐标轴的具体刻度值。用“非圆弧等宽曲线”为例,分“有坐标轴”和“没有坐标轴”两类。

            “有坐标轴”的代码:

    F[x_, y_] := (x^2 + y^2)^4 - 45 (x^2 + y^2)^3 - 41283 (x^2 + y^2)^2 +    7950960 (x^2 + y^2) + 16 (x^2 - 3 y^2)^3 +    48 (x^2 + y^2) (x^2 - 3 y^2)^2 -    720^3 + (x^2 - 3 y^2) x (16 (x^2 + y^2)^2 - 5544 (x^2 + y^2) +       266382);

    ContourPlot[F[x, y] == 0, {x, -10, 10}, {y, -10, 10},  ContourStyle -> {Blue, Thickness[0.01]}, Axes -> True,  Frame -> False, Ticks -> {{-10, 6, 8}, {0, 1, 6}},  PlotLabel -> F[x, y] == 0, AspectRatio -> Automatic]

            “没有坐标轴”的代码:

    ContourPlot[F[x, y] == 0, {x, -10, 10}, {y, -10, 10},  ContourStyle -> {Blue, Thickness[0.01]}, Axes -> False,  Frame -> False,  PlotLabel -> F[x, y] == 0, AspectRatio -> Automatic]

            这里呈现一个问题:用Mathematica给图形添加标签,若是标签出格长,如下图那样不克不及完整显示,应该怎么办?

  4. 4

            用虚线作为等高线,ContourStyle->Dashed

            等高线完全透明,ContourStyle->None

            代码两个:

    ContourPlot[F[x, y], {x, -10, 10}, {y, -10, 10},  ContourStyle -> Dashed]

            和

    ContourPlot[F[x, y], {x, -10, 10}, {y, -10, 10},  ContourStyle -> None]

  5. 5

            Contours 确定等高线的密集水平。

    ContourPlot[F[x, y], {x, -10, 10}, {y, -10, 10},  ContourStyle -> Dashed, Contours -> 20]

            和

    ContourPlot[F[x, y], {x, -10, 10}, {y, -10, 10},  ContourStyle -> None, Contours -> 20]

  6. 6

            绘制3D曲面的时辰,不想要网格线,可以Mesh->None

            若是有网格线,那么MeshStyle确定网格线的模样。

            代码是

    ContourPlot3D[ x^x + y^y + z^z == 2.3, {x, 0, 1.1}, {y, 0, 1.1}, {z, 0, 1.1},  Axes -> False, Mesh -> None, PlotLabel -> Style[怎么能把外框去失落, Red, 30],  ColorFunction -> Function[{x, y, z}, Hue[x + y + z]]]

            和

    ContourPlot3D[ x^x + y^y + z^z == 2.3, {x, 0, 1.1}, {y, 0, 1.1}, {z, 0, 1.1},  Axes -> False,  PlotLabel -> Style[怎么能把外框去失落, Red, 30],  MeshStyle -> Dashed, Mesh -> 5,  ColorFunction -> Function[{x, y, z}, Hue[x + y + z]]

注重事项

  • 提出几个问题,留给乐趣相投的网友:
  • 要包管x^x + y^y=a的图像是封锁曲线,a的最年夜值和最小值别离是几多?
  • 要包管x^x + y^y+z^z=a的图像是封锁曲面,a的最年夜值和最小值别离是几多?
  • 怎么证实(x^2 + y^2)^4 - 45 (x^2 + y^2)^3 - 41283 (x^2 + y^2)^2 +7950960 (x^2 + y^2) + 16 (x^2 - 3 y^2)^3 +48 (x^2 + y^2) (x^2 - 3 y^2)^2 - 720^3 + (x^2 - 3 y^2) x (16 (x^2 + y^2) ^2 - 5544 (x^2 + y^2) +266382) = 0的曲线是等宽曲线?
  • 怎么把一个隐函数方程转化为参数方程?
  • 处处滑腻的等宽曲线,都有哪一些?
  • 用Mathematica给图形添加标签,若是标签出格长而不克不及完整显示,应该怎么办?
  • Mathematica图形的标签里面,能不克不及有“?问号”?
  • 发表于 2018-06-22 00:00
  • 阅读 ( 1816 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论