Ngô Quốc Anh

December 2, 2009

MuPAD

Filed under: Linh Tinh — Tags: — Ngô Quốc Anh @ 22:21

MuPAD was a Computer algebra system (CAS). Originally developed by the MuPAD research group at the University of Paderborn, Germany, it was developed by the company SciFace Software GmbH & Co. KG in cooperation with the MuPAD research group and partners from some other universities since 1997.

I found MuPAD a very cool tool for plotting graph of functions. I will show you in details some examples.

1. We start with the following function

f(x,y)=-(x^2+y^2)(\cos (3y) + \sin (7y)).

To plot its graph, I use the following

f := plot::Function3d(exp(-x^2-y^2)*(cos(3*y)+sin(7*x)), x=-2..2, y=-2..2, Submesh=[1,1], FillColorFunction=((x, y, z) -> [(z+2)/4, 0.5, (2-z)/4])): plot(f)

and this is what we get

exp(-x^2-y^2)*(cos(3*y)+sin(7*x))

To obtain the following picture

you need

f := plot::Function3d(exp(-x^2-y^2)*(cos(3*y)+sin(7*x)),
x=-2..2, y=-2..2,
Submesh=[1,1]):
graphLines:=plot::modify(f, Filled = FALSE, XLinesVisible = FALSE, YLinesVisible = FALSE,
ZContours = [Automatic, 15], LineColorFunction=((x, y, z) -> [(z+2)/4, 0.5, (2-z)/4])):
linesProjection := plot::Transform3d(
[0, 0, -1.5], // shift vector
[1, 0, 0, // transformation matrix
0, 1, 0,
0, 0, 0],
graphLines):
plot(f,linesProjection)

2. With the following function

{\rm Re}(\cos (x+iy).

To plot its graph, I use the following

f := plot::Function3d(Re(cos(x+I*y)), x=-2..2, y=-2..2, Submesh=[1,1], FillColorFunction=((x, y, z) -> [(z+2)/4, 0.5, (2-z)/4])): plot(f)

and this is what we getRe(cos(x+I*y)3. If our function has singularities, for example, Gamma function f(x,y)=|\Gamma (x+iy)|, we have

Re(cos(x+I*y)f := plot::Function3d(abs(gamma(x+I*y)), x=-4.5..4.5, y=-3..3, Submesh=[3,3], XSubmesh = 1, YSubmesh = 2): plot(f)

4. If you intend to plot sereval graphs, the following is a good example.

sin(x^2 + y^2), cos(x^2 - y^2)

Here we used functions \sin(x^2 + y^2), \cos(x^2 - y^2). The code I used is

plotfunc3d(sin(x^2 + y^2), cos(x^2 - y^2), x = 0..1, y = 0..2)

5. The Mobius band can be drawn by using the following

x := cos(alpha) * (1 + r * cos(alpha/2)):
y := sin(alpha) * (1 + r * cos(alpha/2)):
z := r * sin(alpha/2):
plot(plot::Surface([x,y,z], r = -0.5 .. 0.5, alpha = -PI .. PI,
Mesh = [35, 31], LineColor = RGB::Black.[0.2]),
Axes = None, Scaling = Constrained)

6. If you need a transparent picture, probably you need to add a factor like abs(sin(z)) in the FillColorFunction. Following is an example

K := (x,y,z)->[abs(sin(x)), abs(sin(y)), abs(sin(z)), abs(sin(z))]:
F1 := plot::Function3d(
1.7*x*exp(-1/2*(x^2+y^2)),
x=-4..4, y=-4..4,
FillColorFunction=K):
F2 := plot::Function3d(-1, x=-4..4, y=-4..4):
plot(F1, F2)

The original one is

7. I will end this topic by showing some more pictures obtained by zooming a little bit closed.

sin(x

sin(x

sin(x

sin(x

plotfunc3d(sin(x - -PI)*sin(y - -PI), Submesh = [4, 4], x = -PI .. PI, y = -PI .. PI)

sin(x

sin(x

In conclusion, if you want to plot a general surface in 3D, you need its parametrization in order to draw. For details, I prefer the reader to this paper.

21 Comments »

  1. Chào Q. Anh!
    Mình thấy bạn giới thiệu chương trình này cũng khá hay và vẽ được rất nhiều hình 3D đẹp. Hiện tại mình có tải bản MuPad 4.0.6 về nhưng không có thông tin để đăng ký. Bạn có biết chỗ nào có đường dẫn để tải thì chỉ cho mình với.

    Cảm ơn Q. Anh nhiều nhé.

    Comment by V Hanh — December 13, 2009 @ 9:10

    • Bạn Hạnh thân mến, rất cảm ơn bạn đã vào blog. Tiện đây vì động đến bản quyền nên QA ko thể cung cấp số đăng ký ngay ở đây được, cách đơn giản nhất là search trên google, rất nhanh và dễ.

      Comment by Ngô Quốc Anh — December 13, 2009 @ 10:10

  2. QA gửi giúp mình qua email được không? Mình search trên google mà tìm ko ra link trực tiếp được. Mình có thấy mấy link từ torrent nhưng mạng bên VN chậm quá nên tải được hơn 6% là đứng luôn.

    Nếu QA không ngại thì gửi qua email cá nhân cho mình với. Chương trình thì mình có rồi, chỉ cần có “thuốc” nữa mới chạy được.

    Thanks! Good luck!

    V Hạnh.

    Comment by V Hanh — December 13, 2009 @ 10:35

  3. À quên! email của H là: nvhkph@gmail.com nhé:)

    Comment by V Hanh — December 13, 2009 @ 10:37

  4. Anh ơi, em muốn vẽ x=3cost, y=3sint, z=t 0<t<4pi thì phải vẽ làm sao???

    Comment by Hiếu — December 5, 2011 @ 11:30

    • Vì đây là đường trong trong không gian 3 chiều nên ta dùng lệnh sau

      plot(plot::Curve3d([3*cos(t), 3*sin(t), t], t = 0 .. 2*PI))

      để vẽ nhé.

      Comment by Ngô Quốc Anh — December 5, 2011 @ 12:31

  5. Em vẽ hình tạo bởi x^2+y^2=4x+z=4 thì nó lúc nào cũng ra x+y bằng 4 hết, lệnh của em là plot((x^2+y^2=4,x+z=4,z=-4..4)#3D), anh giúp em với

    Comment by Hiếu — December 6, 2011 @ 16:51

    • Hình như Hiếu muốn vẽ 2 hình một lúc, nếu thế phải khai báo 2 hàm rồi plot 2 hàm đó cùng nhau. Sau đây là cách vẽ

      f := plot::Implicit3d(x^2 + y^2 = 4, x = -2..2, y = -2..2, z = 1..4,
      Mesh = [21, 9, 9], AdaptiveMesh = 2):
      g := plot::Implicit3d(x + z = 4, x = -2..2, y = -2..2, z = 1..4,
      Mesh = [21, 9, 9], AdaptiveMesh = 2):
      plot(f, g, Scaling = Constrained)

      Chú ý rằng ở trên ta đã sử dụng vẽ đồ thị hàm ẩn.

      Comment by Ngô Quốc Anh — December 6, 2011 @ 19:26

      • Anh giải thích thêm cho em về dòng Implicit3d với Mesh=[21,9,9] và AdaptiveMesh=2 dc hok anh??
        Em muốn chỉnh lại sao cho 1 hình màu đỏ, 1 hình màu xanh thì phải thêm lệnh thế nào??

        Comment by Hiếu — December 6, 2011 @ 23:28

      • Chịu khó đọc HELP nhé, có cái lệnh FillColor đó, nó giúp thay đổi màu.

        Comment by Ngô Quốc Anh — December 6, 2011 @ 23:29

  6. mình xin bạn copy bài bạn viết nhé. hay .cảm ơn bạn. mình sẽ ghi rõ nguồn bài viết của bạn .

    Comment by Tiến — April 1, 2012 @ 15:35

  7. bạn có thể ghé thăm blog của tôi và xem bài viết của bạn ( tôi đã ghi rõ nguồn là blog bạn và tác giả bạn : http://nguyenhuutienbk.blogspot.com/2012/04/some-examples-in-mupad.html )

    Comment by Tiến — April 1, 2012 @ 15:42

    • Dạ cảm ơn (thầy) Tiến đã quan tâm đến bài viết của QA, QA sẽ ghé thăm trang nhà ngay.

      Comment by Ngô Quốc Anh — April 1, 2012 @ 15:45

  8. Anh cho em hỏi cách vẽ giao tuyến của 2 đường: x^2+y^2+z^2=4x+y+z=0.

    Comment by duong — May 3, 2012 @ 0:05

    • Chào bạn, trong trường hợp này giao tuyến là 1 đường trong trong \mathbb R^3. Đây là một ví dụ tiêu biểu nhé

      plot(plot::Surface([r*cos(phi), sqrt((1-r^2)/2), r*sin(phi)], r = 0 .. 2, phi = 0 .. 2*PI,
      UMesh = 20, VMesh = 20,
      USubmesh = 1, VSubmesh = 1),
      plot::Surface([r*cos(phi), -sqrt((1-r^2)/2), r*sin(phi)], r = 0 .. 2, phi = 0 .. 2*PI,
      UMesh = 20, VMesh = 20,
      USubmesh = 1, VSubmesh = 1),
      plot::Function3d(-x, x = -1 .. 1, y = -1 .. 1, Mesh=[6,6]),
      plot::Curve3d([sqrt(1/2)*cos(r), sqrt(1/2)*sin(r), -sqrt(1/2)*cos(r)], r = 0..2*PI, LineWidth = 1),
      Scaling = Constrained
      )

      Comment by Ngô Quốc Anh — May 3, 2012 @ 0:10

      • Em cám ơn anh

        Comment by duong — May 3, 2012 @ 0:29

  9. Anh cho em hỏi, nếu cho 1 hàm f(x,y)=0 (không có z) thì ta vẽ mặt đó bằng cách nào, giả sử em có xmin xmax ymin ymax.

    Comment by duong — May 6, 2012 @ 1:29

  10. Em đã áp dụng hàm plot::Implicit3d như anh đã hướng dẫn trc đó, và đã vẽ được😀.
    Anh có thể giải thich dùm em đoạn code sau được không, nick em là mndduong@gmail.com
    Chỗ em chưa hiểu là dấu -> , hàm piecewise, plot::Surface, và cận min max của u,v trong các code, em không hiểu đc bằng cách nào ng` viết code xác định đc nó

    Vẽ vật thể giới hạn bởi |x|+|y|u:
    y:=(u,v)->piecewise([abs(u)+abs(v)piecewise([u^2-u*(1-abs(u))+(1-abs(u))^2>v,v]):
    s3:=plot::Surface([u,1-abs(u),k1],u=-1..1,v=0..1, Filled=FALSE):
    k2:=(u,v)->piecewise([u^2-u*(abs(u)-1)+(abs(u)-1)^2>v,v]):
    s4:=plot::Surface([u,abs(u)-1,k2],u=-1..1,v=0..1, Filled=FALSE):
    plot(s1,s2,s3, s4)

    Comment by duong — May 6, 2012 @ 2:08

  11. Vẽ vật thể giới hạn bởi abs(x) + abs(y) u:
    y:=(u,v)->piecewise([abs(u)+abs(v)piecewise([u^2-u*(1-abs(u))+(1-abs(u))^2>v,v]):
    s3:=plot::Surface([u,1-abs(u),k1],u=-1..1,v=0..1, Filled=FALSE):
    k2:=(u,v)->piecewise([u^2-u*(abs(u)-1)+(abs(u)-1)^2>v,v]):
    s4:=plot::Surface([u,abs(u)-1,k2],u=-1..1,v=0..1, Filled=FALSE):
    plot(s1,s2,s3, s4)

    Comment by duong — May 6, 2012 @ 2:12

  12. thầy ơi, thầy giúp con bài này nha
    Nhªp h m x = x1(y); x = x2(y) cắt nhau tại 2 điểm phân biệt. Nhập hàn f (x; y): Tính I =
    tích phân kép trên miền D củaf (x; y)dxdy; Với miền D giới hạn bởi 2 đường x = x1(y); x = x2(y): Vẽ miền D
    (

    Comment by Vuminhtri — May 9, 2012 @ 23:49

  13. Xin chào bạn Ngô Quốc Anh, tôi là giáo viên dạy toán cần chương trình Mupad để dạy môn quy hoạch tuyến tính. Xin hỏi bạn có còn giữ chương trình này không? Tôi có thể hỏi mua bạn được không. Xin liên hệ với tôi theo địa chỉ huanhoangngu@gmail.com hoặc điện thoại 0975 890 248. Xin cảm ơn bạn

    Comment by Huan — December 6, 2016 @ 20:14


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: