Mô hình hóa hiện tượng vật lý bằng MATLAB

Được viết dành cho người mới học, cuốn sách này giới thiệu lập trình MATLAB và mô phỏng các hệ thống vật lý. Cuốn sách mở đầu với các giá trị vô hướng và dần dần nâng lên véc-tơ và ma trận. Các chủ đề được trình bày bao gồm biến và giá trị, đoạn mã lệnh, vòng lặp, phương trình vi phân thường, véc-tơ và hàm. MATLAB được dùng trọn vẹn trong cuốn này để giải quyết nhiều bài tập cuối chương. (trích thông tin từ Amazon.com)

Tác giả

Allen B. Downey là Phó giáo sư ngành Khoa học máy tính tại Franklin W. Olin College of Engineering. Ông đã viết một số cuốn sách, bao gồm Computational Modeling and Complexity Science, How to Think Like a Computer Scientist (Cách tư duy như nhà khoa học máy tính), The Little Book of Semaphores, Physical Modeling in MATLAB, và Learning Perl the Hard Way.

Mục lục

Chương 1: Các biến và giá trị
Chương 2: Mã lệnh chương trình
Chương 3: Vòng lặp

Chương 4: Véc-tơ
Chương 5: Hàm
Chương 6: Tìm nghiệm
Chương 7: Hàm số của véc-tơ
Chương 8: Phương trình vi phân thường
Chương 9: Hệ các PVT
Chương 10: Các hệ bậc hai
Chương 11: Tối ưu hóa và nội suy
Chương 12: Bây giờ véc-tơ mới thật là véc-tơ

Lời giới thiệu

Hầu hết các cuốn sách đề cập đến MATLAB đều hướng tới người đọc đã biết lập trình. Cuốn sách này dành cho những người chưa từng lập trình từ trước.

Do đó, trình tự nội dung ở đây sẽ khác thường. Cuốn sách mở đầu với các giá trị vô hướng rồi dần tiếp tục với véc-tơ và ma trận. Cách tiếp cận này rất tốt với người mới bắt đầu lập trình, vì thật khó hiểu được những kiểu đối tượng dữ liệu phức tạp trước khi bạn hiểu ý nghĩa căn bản của lập trình. Nhưng có những vấn đề sau đây nảy sinh:

  • Tài liệu MATLAB được viết dưới dạng các ma trận, và các thông báo lỗi cũng vậy. Để hạn chế nhược điểm này, cuốn sách giải thích các thuật ngữ cần thiết từ sớm và giải mã một số thông báo lỗi có thể làm người bắt đầu thấy khó hiểu.
  • Nhiều ví dụ trong nửa đầu cuốn sách không phải là viết theo phong cách MATLAB thực sự. Tôi nhận định lại vấn đề này trong phần nửa sau cuốn sách bằng việc chuyển chúng về phong cách chính thống hơn.

Cuốn sách này nhấn mạnh về các hàm số, một phần là vì chúng là cơ chế quan trọng chi phối độ phức tạp của chương trình, và cũng vì chúng rất có ích khi làm việc với các công cụ của MATLAB như fzeroode45.

Tôi định rằng bạn đọc đã biết môn toán giải tích, phương trình vi phân, và vật lý, nhưng không cần đại số tuyến tính. Tôi sẽ giải thích về toán trong suốt nội dung sách, nhưng bạn cũng cần biết toán để nắm được những đoạn giải thích đó.

Có những bài tập nhỏ trong từng chương, và một số bài tập lớn hơn ở cuối những chương nhất định.

Nếu bạn muốn góp ý và sửa chữa nội dung cuốn sách, hãy gửi ý kiến của bạn đến downey@allendowney.com.

Allen B. Downey
Needham, MA

Danh sách những người góp ý cho cuốn sách

Michael Lintz ♦ Kaelyn Stadtmueller ♦ Roydan Ongie ♦ Keerthik Omanakuttan ♦ Pietro Peterlongo ♦ Li Tao ♦ Steven Zhang ♦ Elena Oleynikova ♦ Kelsey Breseman ♦ Philip Loh ♦ Harold Jaffe ♦ Vidie Pong


Cám ơn bạn đã quan tâm đón đọc cuốn sách này. Hãy vui lòng cho chúng tôi biết một số thông tin để giúp cho các bản dịch trong thời gian sắp tới phù hợp hơn với bạn.

Cám ơn bạn rất nhiều!

Advertisements

121 phản hồi

Filed under Mô hình hóa

121 responses to “Mô hình hóa hiện tượng vật lý bằng MATLAB

  1. Pingback: Chương 10: Các hệ bậc hai | Blog của Chiến

  2. Pingback: Chương 2. Mã lệnh chương trình | Blog của Chiến

  3. Thế Trung

    hay quá , cảm ơn tác giả , sách thật dễ hiểu , nó thật sự đã giúp đỡ mình rất nhiều

    • Rất vui khi bạn thấy cuốn sách có ích! Hi vọng trong thời gian tới bạn sẽ ghé thăm blog để tìm các bài viết về chủ đề quan tâm. smile

      • như ý

        Phương trình chuyển động dạng động học thường được biểu diễn bởi hệ phương trình x(t) và y(t). Qua đó, khi biểu điễn y = y(x), ta có phương trình quỹ đạo.
        Vectơ momen động lượng so với gốc tọa độ O xác định bởi:
        \vec{L}=\vec{r}\times\vec{p}=m\left(\vec{r}\times\vec{v}\right)
        Bài tập này yêu cầu sinh viên sử dụng Matlab để tính toán và biểu diễn đồ thị của quỹ đạo cũng như sự biến thiên của momen động lượng theo thời gian.
        Xây dựng chương trình Matlab theo:
        1) Nhập biểu thức của x(t) và y(t)
        2) Dùng các phép toán hình thức (symbolic) để tính vận tốc và momen động lượng.
        3) Vẽ đồ thị quỹ đạo và sự biến thiên độ lớn momen động lượng theo thời gian.
        Có thể dùng các cách tiếp cận khác không dùng symbolic.
        syms t
        x = input(‘Nhap ham x(t) = ‘);
        y = input(‘Nhap ham y(t) = ‘);
        m = input(‘Nhap khoi luong cua vat m = ‘);
        vx=diff(x,t);
        vy=diff(y,t);
        v = sqrt(vx^2 + vy^2);
        vectov = [vx vy 0];
        vector = [x y 0];
        vectoL = m*cross(vector, vectov);
        disp(‘Vecto dong luong la, L(vecto)= ‘);
        disp(vectoL);
        t= 0:1:10;
        subplot(1, 2, 1); plot(subs(x), subs((y))); title (‘Do thi’);xlabel(‘x’);
        ylabel(‘y’)
        subplot(1, 2, 2); plot(t, subs(vectoL*vectoL’)); title (‘L(t)’);xlabel(‘t’);
        ylabel(‘L’)
        Anh cho em hỏi bài làm này có lỗi ở đâu? sao em chạy thử x=cos(t), y=sin(t) thì không được đồ thị là đường tròn?

  4. Pingback: Ebook: Mô hình hóa các hiện tượng vật lý bằng Scilab | Blog của Chiến

  5. Pingback: Chương 12: Bây giờ véc-tơ mới thật là véc-tơ | Blog của Chiến

  6. Pingback: Chương 11: Tối ưu hóa và nội suy | Blog của Chiến

  7. Pingback: Chương 9: Hệ các PVT | Blog của Chiến

  8. Pingback: Chương 8: Phương trình vi phân thường | Blog của Chiến

  9. Pingback: Chương 7: Hàm số của véc-tơ | Blog của Chiến

  10. Pingback: Chương 6: Tìm nghiệm | Blog của Chiến

  11. Pingback: Chương 5: Hàm | Blog của Chiến

  12. Pingback: Chương 4. Véc-tơ | Blog của Chiến

  13. Pingback: Chương 3. Vòng lặp | Blog của Chiến

  14. Pingback: Chương 1. Các biến và giá trị | Blog của Chiến

  15. Thanh

    Nhờ bác Chiến giúp cháu hiểu một chút về một vài khái niệm trong mô hình hóa như: hệ số (coefficient), thông số (parameter), tham số (parameter), biến số (variable), đối số (argument)? Cháu cảm ơn bác nhiều.

    • Chào Thanh! Bạn hãy xét ví dụ về phương trình quãng đường rơi của vật thả tự do: h = ½gt². Đây là một mô hình đơn giản, được biểu diễn dưới dạng một hàm số. Thời gian t là biến số. Có người còn gọi là biến độc lập (independent variable). h là biến phụ thuộc. ½ là hệ số, nó có thể có thứ nguyên hoặc không (như trong trường hợp này). Nó có thể được tìm bằng con đường lý thuyết (như trường hợp này) hoặc thực nghiệm. g thì nói chung cũng là giá trị không thay đổi nhiều, nhưng để mô hình tổng quát (với các vĩ độ khác nhau) người ta vẫn cho phép nó thay đổi; g là thông số. Sự thay đổi này rất quan trọng trong quá trình vận hành phần mềm. Khi nhập liệu vào mô hình, không chỉ có biến đầu vào mà còn cả thông số nữa. Thông số này có thể sẽ phải được điều chỉnh qua nhiều lần chạy mô hình để kết quả phù hợp với thực tế. Còn tham số và đối số là cách nói về mặt hình thức toán học và khoa học máy tính. Khi biểu diễn h = f(g, t) thì g và t là các tham số. Chúng sẽ xuất hiện trong phần định nghĩa hàm. Khi nào áp dụng con số cụ thể cho g và t thì những giá trị số đó được gọi là đối số. Khi lập trình, thì đây là lúc gọi hàm. Trong nhiều ngôn ngữ lập trình, có thể cho g một giá trị mặc định khi viết định nghĩa và gọi hàm với t=2 thì chỉ cần viết f(2). Như vậy máy đã tự động cung cấp đối số. Hi vọng bạn sẽ hiểu rõ hơn các thuật ngữ trên. —P.S. Gọi là “bác” thì đối với tôi có lẽ hơi già quá 🙂

      • đăng khoa

        anh chiến ơi em đã gửi code qua email cho anh rồi, anh chỉnh sửa dùm em nhé, em sắp phải báo cáo rồi

  16. Tiến Đạt

    Chào anh Chiến! Em là sinh viên năm nhất và vừa làm quen với matlap nên khá lúng túng (coi như mù tịt). Có một bài toán như sau, em hy vọng nhận được sự giúp đỡ từ anh (dù là nhỏ nhất). Em xin cám ơn trước! (nếu được xin anh trả lời qua email của em ạ)
    ĐỀ BÀI
    Động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế

    Yêu cầu

    Ta đã biết lực thế là lực mà công sinh ra nhằm dịch chuyển vật từ điểm A đến điểm B không phụ thuộc vào hình dạng quỹ đạo của vật mà chỉ phụ thuộc vào vị trí A và B.

    Xét trường hợp lực thế phức tạp như sau: F(x)=\kappa{x}-4qx^3

    Ta có thể tính toán thế năng của vật tại vị trí x là U(x)=-\int{F(x)dx}.

    Bài tập này yêu cầu sinh viên tính toán và biểu diễn theo thời gian bằng Matlab động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế đã cho theo thời gian.

    Nhiệm vụ

    Xây dựng chương trình Matlab:

    Các thông số kappa và q, khối lượng của chất điểm, vận tốc ban đầu của chất điểm, bước thời gian tính toán được định nghĩa trong chương trình.

    Nhập thông số vị trí ban đầu của chất điểm (x_0).

    Tại mỗi thời điểm tương ứng cấp số cộng bước thời gian, tính toán thế năng và động năng của chất điểm

    Biểu diễn trên đồ thị với trục tung là năng lượng, trục hoành là thời gian.

    Mở rộng:

    Các thông số của chương trình đều có thể nhập vào

    Hàm lực thế được nhập vào bằng công cụ Symbolic của MATLAB

    • Có lẽ dạng bài này hơi khác với những bài trong cuốn sách. Tuy nhiên về ý tưởng thì rõ ràng:
      * Nếu bạn tính cho N bước thời gian, mỗi thời gian dài dt thì vecto thời gian sẽ là 0:dt:N*dt
      * Gọi động năng là vector KE, thế năng là vector PE
      * Bạn dùng lệnh for để lặp lại tính toán cho từng bước thời gian:
      % Nhập vị trí đầu Xo, các thông số kappa, q, m, Vo, dt, N
      % Khởi tạo x và v phù hợp với điều kiện đầu; khởi tạo động năng và thế năng
      x = Xo;
      v = Vo;
      KE = []; PE = [];
      for t = 0:dt:N*dt
      (…)
      end
      * Bây giờ đến phần lệnh tính toán viết vào chỗ (…)
      Tính lực thế F = kappa*x – 4*q*x.^3 ;
      Bạn phải giải toán cơ học: bây giờ vận tốc bằng v, lực tác dụng là F. Vậy vị trí mới và vận tốc mới tính ra bằng bao nhiêu
      Từ đó suy ra dx = x(mới) – x
      và tính được tích phân của U (xem khảo hàm tính tích phân trong MatLab) để tìm thế năng, gọi la tnang.
      Mặt khác, tính ra động năng của chất điểm = 0.5*m*v*v, gọi là dnang.
      Cập nhật các thông số tính toán:
      x = x(mới);
      v = v(mới);
      KE = [KE tnang];
      PE = [PE dnang];

      * Hết tính toán, ra khỏi vòng lặp for. Thực hiện lệnh plot để vẽ KE và PE theo vector thời gian, 0:dt:N*dt.

      Chúc bạn thành công!

      • hưu minh

        kappa và q nó kêu nhập thông số.là sao ạ. e không hiểu.
        a giúp ak.
        thank đại ca

      • Bạn dùng lệnh input để người dùng nhập thông số vào từ bàn phím. Chẳng hạn
        kappa = input(‘Hãy nhập vào kappa: ‘);

      • Ẩn danh

        oh.e hieu so so roi.
        a biet kappa la cai gi k. no la hang so co trong may tinh dung k a??
        hihi ^^

      • Nguyễn Hồng Duyên

        ủa vậy F(x) là gì vậy anh ? là lực F biểu diễn theo x hay là gì ?

      • Nguyễn Hồng Duyên

        vậy mối quan hệ giữa x và t mình làm sao tính vậy anh ?

      • Ẩn danh

        ĐỀ BÀI
        Động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế

        Yêu cầu

        Ta đã biết lực thế là lực mà công sinh ra nhằm dịch chuyển vật từ điểm A đến điểm B không phụ thuộc vào hình dạng quỹ đạo của vật mà chỉ phụ thuộc vào vị trí A và B.

        Xét trường hợp lực thế phức tạp như sau: F(x)=\kappa{x}-4qx^3

        Ta có thể tính toán thế năng của vật tại vị trí x là U(x)=-\int{F(x)dx}.

        Bài tập này yêu cầu sinh viên tính toán và biểu diễn theo thời gian bằng Matlab động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế đã cho theo thời gian.

        Nhiệm vụ

        Xây dựng chương trình Matlab:

        Các thông số kappa và q, khối lượng của chất điểm, vận tốc ban đầu của chất điểm, bước thời gian tính toán được định nghĩa trong chương trình.

        Nhập thông số vị trí ban đầu của chất điểm (x_0).

        Tại mỗi thời điểm tương ứng cấp số cộng bước thời gian, tính toán thế năng và động năng của chất điểm

        Biểu diễn trên đồ thị với trục tung là năng lượng, trục hoành là thời gian.

        Mở rộng:

        Các thông số của chương trình đều có thể nhập vào

        Hàm lực thế được nhập vào bằng công cụ Symbolic của MATLAB

    • đăng khoa

      anh chiến ơi, em làm theo hướng dẫn của anh đã viết được một chương trình hiện tại chương trình của em còn một số trục trặc, anh có thể chỉ ra chỗ sai và chỉnh sửa lại (hoặc nếu không thì hướng dẫn cách sửa) dùm em được không ạ? em sắp phai báo cáo rồi, em cám ơn anh nhiều!

      • phan duc tri

        anh chiến ơi có thể cho em một đoạn code về phần này để tham khảo không

      • Bạn nên tự làm phiên bản code của mình, hoặc có thể reply các bạn trong thread này xem có thể chia sẻ code cho nhau.

      • duc tri

        bạn gì owii..có thể cho mình mượn đoạn code để tham khảo đc ko??thank bạn trước nhé

  17. Tiến Đạt

    Anh có thể giúp em làm code hoàn chỉnh cho bài đó luôn được không ạ? Cám ơn anh nhiều!

    • Có lẽ tốt hơn là bạn gửi bản nháp chương trình để tôi chỉnh sửa và gửi lại.

      • hưu minh

        anh ơi. giúp bọn e viết code đi. bợn xem suy nghĩ mấy ngày lun. tìm kiếm khắp nơi.
        mà k biết cách viết như thế nào. a giúp đi a ơi.
        ^^

      • Bạn nhập được thông số rồi viết được phần code kha khá, cho ra kết quả. Sau đó mới xem chỗ nào còn sai để sửa chứ.

      • đăng khoa

        anh chiến ơi.a có thể cho em email để khi nào em viết code xong nhờ anh chỉnh sửa dùm được không ạ???

      • nguyenquangchien hòm thư gmail bạn ah.

      • đăng khoa

        anh chiến ơi, em làm theo hướng dẫn của anh đã viết được một chương trình hiện tại chương trình của em còn một số trục trặc, anh có thể chỉ ra chỗ sai và chỉnh sửa lại (hoặc nếu không thì hướng dẫn cách sửa) dùm em được không ạ? em sắp phai báo cáo rồi, em cám ơn anh nhiều!

      • đăng khoa

        anh chiến ơi am đã gởi code của em qua email rồi, anh chỉnh lại dùm em nhé

      • duc tri

        anh chiến ơi….giúp giùm em đoạn code lý đi anh,,,,chứ tụi em bí quá rồi,.,,cho em đoạn code tham khảo đi anh

      • Các bạn trao đổi với nhau thì tiện hơn. Hoặc trao đổi với anh chị khóa trên. Máy của mình ko có Matlab nên viết thế chứ có thể phải điều chỉnh và gỡ lỗi mới chạy được.

  18. Minh Đức

    Phương trình chuyển động dạng động học thường được biểu diễn bởi hệ phương trình x(t) và y(t). Qua đó, khi biểu điễn y = y(x), ta có phương trình quỹ đạo.
    Vectơ momen động lượng so với gốc tọa độ O xác định bởi:
    \vec{L}=\vec{r}\times\vec{p}=m\left(\vec{r}\times\vec{v}\right)
    Bài tập này yêu cầu sinh viên sử dụng Matlab để tính toán và biểu diễn đồ thị của quỹ đạo cũng như sự biến thiên của momen động lượng theo thời gian.
    Xây dựng chương trình Matlab theo:
    1) Nhập biểu thức của x(t) và y(t)
    2) Dùng các phép toán hình thức (symbolic) để tính vận tốc và momen động lượng.
    3) Vẽ đồ thị quỹ đạo và sự biến thiên độ lớn momen động lượng theo thời gian.
    Có thể dùng các cách tiếp cận khác không dùng symbolic.

    Anh ơi hướng dẫn em bài này với em làm mà không biết hướng ra sao cả.

    • 1) Bạn dùng symbolic thì nhập dễ hơn nhưng có thể cho người dùng nhập biểu thức x(t) và y(t) dưới dạng các function; hay dùng eval để lượng giá các string đó mỗi khi t nhận giá trị cụ thể. Bạn hãy suy nghĩ cách làm phù hợp.
      2) tính các vận tốc vx, vy bằng đạo hàm x và y sử dụng symbolic thì đơn giản. Nếu ko dùng symbolic, ta chọn bước thời gian dt để tính lần lượt:
      for t = 0:dt:N*dt
      … tính x
      … tính y
      … tính vx = (x – x cũ) / dt
      … tính vy = (y – y cũ) / dt
      … cập nhật x cũ, y cũ
      end
      Để tính r ₓ v là phép nhân hữu hướng. Tích hữu hướng là hàm có tên cross trong matlab. Xem thêm: http://www.mathworks.com/help/matlab/ref/cross.html
      Về độ lớn moment động lượng (tính cho câu 3) thì dùng hàm norm(P) trong đó P = [px py] là vector moment động lượng
      3) Vẽ đồ thị bằng lệnh plot và xem thêm các chương trong sách để biết cách animate (hoạt hoạ).

  19. @hưu minh: kappa chắc là hằng số do đề bài cho, không thấy có sẵn trong máy tính.
    @Duyên: F(x) là lực tác dụng theo phương x.

    • hưu minh

      cho 2 hàm f(x) và g(x) nhập từ bàn phím có đồ thị chỉ cắt nhau tại 2 điểm .viết đoạn code tính điện tích giới hạn bỡi 2 đường cong trên y=f(x) và y=g(x) và vẽ miền D.
      function dientich
      syms x
      f=input(‘nhap ham f1(x)= ‘);
      g=input(‘nhap ham f2(x)= ‘);
      m=solve(char(f-g),x);
      m=double(m);
      i=1;
      while i0.0001
      m(i)=[];
      i=i-1;
      else
      m(i)=m(i)-imag(m(i))*1i;
      end
      i=i+1;
      end
      m=union(m,m);
      if length(m)=3
      disp(‘ham f1 va f2 co nhieu hon 2 giao diem,khong thoa yeu cau’)
      else
      t=0;
      for i=1:length(m)-1
      t=t+abs(int(f-g,x,m(i),m(i+1)));
      end
      t=double(t);
      text=[‘dien tich hinh phang bang: ‘ num2str(t)];
      disp(text)
      end
      ezplot(f)
      hold on
      ezplot(g)
      hold off
      end
      a cho e cái kết dk k a/
      e không hiểu e bị sai chổ nào mà e nhập cắt nhau tại 3 điểm nó vẫn tính diện tích
      cám ơn a nhiều

      • hưu minh

        function huuminh
        syms x
        f=input(‘nhap ham f1(x)= ‘);
        g=input(‘nhap ham f2(x)= ‘);
        m=solve(char(f-g),x);
        m=double(m);
        i=1;
        while i0.0001
        m(i)=[];
        i=i-1;
        else
        m(i)=m(i)-imag(m(i))*1i;
        end
        i=i+1;
        end
        m=union(m,m);
        if length(m)=3
        disp(‘ham f1 va f2 co nhieu hon 2 giao diem,khong thoa yeu cau’)
        else
        t=0;
        for i=1:length(m)-1
        t=t+abs(int(f-g,x,m(i),m(i+1)));
        end
        t=double(t);
        text=[‘dien tich hinh phang bang: ‘ num2str(t)];
        disp(text)
        end
        ezplot(f)
        hold on
        ezplot(g)
        hold off
        end

      • Hãy kiểm tra kỹ: * dòng while i0.0001 Sai cú pháp. Ở đây có lệnh if không?

        * dòng if length(m)=3 lẽ ra phải so sánh hai dấu bằng (==) trong lệnh if?

        * hình như lệnh này ra nói rằng 3 giao điểm là không được nhưng tại sao không viết như sau: if length(m) > 2 ?

  20. Thanh TU

    anh giúp e bài này nha!
    Tính toán phân bố mật độ năng lượng điện trường

    Mối liên hệ giữa cường độ điện trường và thế điện được biểu diễn bởi biểu thức: *vecto(E)=-grad(V)
    Mật độ năng lượng điện trường có thể được tính bởi công thức: u=1/2*e0*abs(E)^2

    Xây dựng chương trình Matlab:
    1) Nhập hàm điện thế theo hai biến x và y.
    2) Tạo ma trận lưới trên mặt phẳng Oxy với O là gốc tọa độ
    3) Tính toán mật độ năng lượng điện trường tại các nút trên lưới.
    4) Vẽ các đồ thị dạng ba chiều thể hiện phân bố thế điện và mật độ năng lượng điện trường (trục z) tại các điểm trên mặt phẳng (trục x, y).

    • 1) Nhập hàm điện thế bằng symbolic
      2) Tạo ma trận lưới bằng lệnh meshgrid với khoảng chia trên trục x và y do bạn tự chọn.
      3) Mật độ năng lượng tính theo công thức. abs là độ dài vector, hay “chuẩn” của vector, norm(E)
      4) Vẽ đồ thị bằng lệnh surface chẳng hạn.

      • Thanh TU

        anh giup e ki ti dc ko anh, toi luc ve cai e khong biet ve sao het ah

      • Ẩn danh

        anh quangchien có thể chỉ rõ hơn ko

      • Vu Hao

        anh có thể giải thích rõ hơn giúp em được không ạ. Cám ơn anh nhiều.

      • 1) Điện thế V là hàm phụ thuộc x và y nhập vào
        syms x, y
        V = input(‘Nhap vao…’);
        Tính ra hàm E = -grad(V)
        Cũng như V, E là hàm liên tục. Để biểu diễn nó ta có thể tính tại các điểm nút lưới. Chẳng hạn trên một lưới 100×100 có dx = dy =1 .
        2) Tạo lưới
        [xx yy] = meshgrid(1:1:100, 1:1:100);
        Xem thêm ví dụ Matlab ở http://www.mathworks.com/help/matlab/ref/meshgrid.html
        3) Cái này còn tùy symbolic có cho phép không, nhưng trong công thức mật độ điện trường, abs(E) có thể được xác đinh bằng hàm norm(E). Cũng trong công thức trên, eo là hằng số đã cho.
        Khi tính xong u rồi:
        4) Vẽ đồ thị mặt:
        surf(xx, yy, u)
        xem lại ví dụ Matlab ở link trên.

      • Văn Chung Đặng

        Anh có thể hướng dẫn kỹ cho em phần 3 được không anh

      • u = 0.5*e0*(norm(E).^2); nếu như E là vector hai chiều.

      • hoang

        Mối liên hệ giữa cường độ điện trường và thế điện được biểu diễn bởi biểu thức: *vecto(E)=-grad(V)
        Nếu biết trước biểu thức điện thế V(x,y) ta có thể biểu diễn mặt điện thế V và vectơ cường độ điện trường \vec{E} trong mặt phẳng Oxy.
        Xây dựng chương trình Matlab:

        1) Nhập biểu thức V(x,y), ví dụ: lg(x) + y

        2) Giới hạn không gian của mặt phẳng Oxy với xmax = ymax =10

        3) Dùng các phép toán hình thức (symbolic) để tính V(x,y) và các thành phần Ex và Ey tại mọi điểm trong không gian đã cho.

        4) Vẽ đồ thị biểu diễn mặt điện thế V và vectơ cường độ điện trường \vec{E}.
        function dientruong
        syms x y
        V= input(‘Nhap vao bieu thuc cua hieu dien the V(x, y), V(x y)= ‘);
        [X, Y]= meshgrid(-10:1:10);
        Ex= – subs(diff(V, x), {x y}, {X Y});
        disp(‘Ex’);
        Ey= – subs(diff(V, y), {x y}, {X Y});
        disp(‘Ey’)
        subplot(1, 2, 1);
        plot3(X, Y, subs(V, {x y}, {X Y}));
        title(‘Dien the’)
        subplot(1, 2, 2);
        quiver(X, Y, X + Ex, Y +Ey);
        title (‘Dien truong’)
        surf(X,Y,V)
        end

      • hoang

        anh kiem tra giup em doan code tren

      • Hẹn bạn thứ 2 kiểm tra code này trên cơ quan chứ ở nhà mình không có MATLAB.

      • Code của bạn về ý tưởng cũng được nhưng có điều tại sao lại vẽ quiver với X+Ex, Y+Ey mà không phải chỉ là Ex,Ey. Bạn có thể xem một phiên bản rút gọn hơn tại: http://codepad.org/uF0wiTKj

      • hoang

        có thể dùng các cách tiếp cận khác không dùng symbolic ko anh giúp em với

      • Bạn có thể meshgrid ra lưới x, y rồi tính hàm V theo x và y. Sau đó dùng hàm gradient để tính ra E. Như vậy cả V và E đều là ma trận. Hãy xem một ví dụ http://www.mathworks.com/help/matlab/ref/gradient.html trong đó px và py là hai thành phần gradient của trường z. Cũng như Ex và Ey là hai thành phần gradient của trường V.

    • hoang

      vẽ tại Ex,Ey ko nhìn thấy vecto điện trường

  21. đăng khoa

    anh chiến ơi, anh kiểm tra email, và chỉnh code dùm em anh nhé, cám ơn anh nhiều

  22. Vẽ quỹ đạo của electron trong điện từ trường tĩnh

    1. Yêu cầu

    Khi electron chuyển động trong điện từ trường đều nó sẽ chịu tác dụng của lực tĩnh điện \vec{F_E} và lực Lorenzt \vec{F_L}:

    \vec{F}=\vec{F_E}+\vec{F_L}=q\vec{E}+q\vec{v}\times\vec{B}
    Khi đó ta có thể xác định gia tốc của electron. Nếu biết được vị trí và vận tốc ban đầu ta có thể xác định được phương trình chuyển động dạng động học của electron x(t), y(t) và z(t). Qua đó, khi biểu điễn f(x,y,z)=const, ta có phương trình quỹ đạo.

  23. đăng khoa

    anh có thể nói rõ hơn về symbolic cho em được không ạ? em cám ơn nhiều

    • Cách không symbolic: Mình đi tính tích phân bằng cách chia nhỏ thời gian tính toán thành các bước dt. Vậy nên phép tích phân (như ở phép tính v, x, và thế năng U) chẳng qua là phép cộng gộp các đại lượng thu thập ở từng bước thời gian dt một.
      Cách symbolic: Người dùng nhập vào một chuỗi biểu diễn hàm số của t. Khi đó “int” của matlab sẽ tính tích phân theo hàm này.

      • đăng khoa

        em cám ơn anh nhiều nhưng hiện tại chương trình của em vẫn chưa hoàn chỉnh a coi lại dùm em nhé, e gửi qua mail cho anh rôi.

  24. Bài toán này em đã tìm được code nhưng thuật toán của nó khó hiểu quá em sắp phải báo cáo mà phần code này dùng lập trình GUI em tìm hiểu ko kịp!
    http://www.mediafire.com/download/czdjtblnzwjogkl/code+matlab+vat+ly+hoang+chinh+nhat.rar

    • Phần cốt lõi trong mã lệnh (file .m) chỉ từ dòng 115 đến 157. Dòng f = @(t, y) là cách khai báo gọn một hàm f. Nếu viết theo cách đầy đủ thì có lẽ là result = function(t,y) result = [y(4:6); (q/m)*cross(y(4:6),B)+E]; end
      Vì vậy y đóng vai trò tham số nên không cần có giá trị từ trước. Quan trọng ở đây là khai báo được f để dùng làm hàm tính tích phân trong dòng lệnh kế tiếp.

      • vậy nếu ta muốn nhập và xuất giá trị và đồ thj từ command windown thì chỉ cần giữ lại phần khai báo hàm và thay đổi hết ở dòng lệnh đầu vào và xuất ra đồ thị hay là phải khai báo hàm theo cách khác hả anh?

      • Về cơ bản phần cốt lõi giữ nguyên. Phía trên có mấy lệnh nhập q0, B… phải chuyển sang nhập từ command window. Còn ở trong mã lệnh GUI này thì các giá trị đó nhập do người dùng thao tác trên khiển tố (chẳng hạn như di chuột lên thanh trượt để chọn giá trị q0).

      • Em đã thử sủa rồi nhưng nó chỉ xuất ra đồ thị được trường vecto B và E thôi còn ảnh của quỹ đạo thì không thấy đâu! help me!!!!!!

      • Có lẽ lệnh: plot3(r0(1),r0(2),r0(3),’*m’,’MarkerSize’,9,’LineWidth’,2);
        để vẽ tọa độ ban đầu của chất điểm.
        Chuyển dòng lệnh vào trong vòng lặp thời gian, bạn sẽ thu được quỹ đạo. (Nhớ hold on.)

  25. đăng khoa

    hiện tại em đã sửa lại chương trình nhưng nó vẫn chưa chạy được, em đã gửi chương trình đó cho anh có kèm theo ảnh chụp màn hình, anh chỉnh sửa nó lại lần nữa giúp em nha!

  26. Văn Chung

    Tính toán phân bố mật độ năng lượng điện trường

    1. Yêu cầu

    Mối liên hệ giữa cường độ điện trường và thế điện được biểu diễn bởi biểu thức: \vec{E}=-\vec{grad}\left(V\right)

    Mật độ năng lượng điện trường có thể được tính bởi công thức: u=\frac{1}{2}\epsilon_0\left|E\right|^2

    Bài tập này yêu cầu sinh viên sử dụng Matlab để biểu diễn đồ thị phân bố mật độ năng lượng điện trường theo phân bố điện thế trên một mặt phẳng đã biết trước.

    2. Điều kiện

    1) Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB.

    2) Tìm hiểu các lệnh Matlab liên quan symbolic và đồ họa.

    3. Nhiệm vụ

    Xây dựng chương trình Matlab:

    1) Nhập hàm điện thế theo hai biến x và y.

    2) Tạo ma trận lưới trên mặt phẳng Oxy với O là gốc tọa độ

    3) Tính toán mật độ năng lượng điện trường tại các nút trên lưới.

    4) Vẽ các đồ thị dạng ba chiều thể hiện phân bố thế điện và mật độ năng lượng điện trường (trục z) tại các điểm trên mặt phẳng (trục x, y).

    Chú ý: Sinh viên có thể dùng các cách tiếp cận khác không dùng symbolic.

  27. nguyễn lực

    anh chiến cho em hỏi làm sao có thể cắt bỏ phần thừa để được khối hoàn chỉnh. đề bài là vẽ vật thể giới hạn bởi z=1-x*x, z=0, y=0, y=3 và đây là chương trình của em ạ
    clc
    syms x y z
    x=-1:0.1:1;
    y=0:0.1:3;
    [x y]=meshgrid(x,y);%chia luoi
    z=1-x.^2;
    surf(x,y,z)
    z=0+x*0+y*0;
    surf(x,y,z)
    xlabel(‘Truc Ox’)
    ylabel(‘Truc Oy’)
    zlabel(‘Truc Oz’)
    title(‘Do thi Tru parabol: y=x^2’)
    hold on

    [x z]=meshgrid(x,z);%chia luoi
    y=0.*z+0.*x;
    surf(x,y,z)
    y=3+0.*z+0.*x;
    surf(x,y,z)

    anh có thể trả lời em qua email mr.nguyen.a5@gmail.com em cám ơn nhiều ạ

  28. nguyễn lực

    Chào anh! Chúc anh có ngày mới làm việc vui vẻ. 🙂 Anh ơi cho em hỏi ứng dụng của cầu vồng là làm gì ạ?. Anh có trang web hay tài liệu gì nói về điều này không? Em tìm trên mạng mà nó ra toàn là giải thích cơ chế, nguyên nhân tạo ra cầu vồng chứ em không thấy nó ứng dụng để làm gì cả. Em nghĩ nó ứng dụng để làm đẹp trong các khu du lịch thôi chứ chắc không còn làm gì cả đúng không anh? anh có thể trả lời cho em qua mail này được không a
    mr.nguyen.a5@gmail.com. em cảm ơn.

  29. ngothanhphi

    như ý
    03-01-2014 lúc 16:13
    Phương trình chuyển động dạng động học thường được biểu diễn bởi hệ phương trình x(t) và y(t). Qua đó, khi biểu điễn y = y(x), ta có phương trình quỹ đạo.
    Vectơ momen động lượng so với gốc tọa độ O xác định bởi:
    \vec{L}=\vec{r}\times\vec{p}=m\left(\vec{r}\times\vec{v}\right)
    Bài tập này yêu cầu sinh viên sử dụng Matlab để tính toán và biểu diễn đồ thị của quỹ đạo cũng như sự biến thiên của momen động lượng theo thời gian.
    Xây dựng chương trình Matlab theo:
    1) Nhập biểu thức của x(t) và y(t)
    2) Dùng các phép toán hình thức (symbolic) để tính vận tốc và momen động lượng.
    3) Vẽ đồ thị quỹ đạo và sự biến thiên độ lớn momen động lượng theo thời gian.
    Có thể dùng các cách tiếp cận khác không dùng symbolic.
    syms t
    x = input(‘Nhap ham x(t) = ‘);
    y = input(‘Nhap ham y(t) = ‘);
    m = input(‘Nhap khoi luong cua vat m = ‘);
    vx=diff(x,t);
    vy=diff(y,t);
    v = sqrt(vx^2 + vy^2);
    vectov = [vx vy 0];
    vector = [x y 0];
    vectoL = m*cross(vector, vectov);
    disp(‘Vecto dong luong la, L(vecto)= ‘);
    disp(vectoL);
    t= 0:1:10;
    subplot(1, 2, 1); plot(subs(x), subs((y))); title (‘Do thi’);xlabel(‘x’);
    ylabel(‘y’)
    subplot(1, 2, 2); plot(t, subs(vectoL*vectoL’)); title (‘L(t)’);xlabel(‘t’);
    ylabel(‘L’)
    Anh cho em hỏi bài làm này có lỗi ở đâu? sao em chạy thử x=cos(t), y=sin(t) thì không được đồ thị là đường tròn?

    Anh quangchien ơi, anh có thể giúp bạn này chỉnh sửa lỗi sai và bổ sung không ạ.em là sv năm nhất cũng đang làm bài tập như vậy và thắc mắc về vấn đề này. em cảm ơn anh rất nhiều ạ.

    • Lỗi sai thì mình chưa phát hiện được, nhưng bạn có thể dò tìm bằng cách đơn giản là lần lượt bỏ các dấu chấm phẩy ở các câu lệnh từ trên xuống; mỗi lần bỏ một dấu thì chạy lại một lần xem những kết quả trung gian có hợp lý hay không. Chỗ nào kết quả không hợp lý thường là chỗ dẫn đến lỗi sai. Chúc bạn thành công.

  30. ngothanhphi

    syms t
    x = input(‘Nhap ham x(t)= ‘);
    y = input(‘Nhap ham y(t)= ‘);
    m = input(‘Nhap khoi luong cua vat m =’);
    vx=diff(x,t);
    vy=diff(y,t);
    v = sqrt(vx^2 + vy^2);
    vectov = [vx vy 0];
    vector = [x y 0];
    vectoL = m*cross(vector, vectov);
    disp(‘Vecto dong luong la, L(vecto)= ‘);
    disp(vectoL);
    t= 0:1:10;
    subplot(1, 2, 1); plot(subs(x), subs((y))); title (‘Do thi’);xlabel(‘x’);
    ylabel(‘y’)
    subplot(1, 2, 2); plot(t, subs(vectoL*vectoL); title (‘L(t)’);xlabel(‘t’);
    ylabel(‘L’)
    end
    Nhap ham x(t)= 2*t
    Nhap ham y(t)= t^2-5*t
    Nhap khoi luong cua vat m =3
    Vecto dong luong la, L(vecto)=
    [ 0, 0, 30*t + 6*t*(2*t – 5) – 6*t^2]

    ??? subplot(1, 2, 2); plot(t, subs(vectoL*vectoL); title (‘L(t)’);xlabel(‘t’);
    |
    Error: Unbalanced or unexpected parenthesis or bracket.
    hiện thi ra biểu đồ rồi mà vẫn bị lỗi này là sao vậy nhỉ

  31. A ơi giúp e câu này với@@
    ” Cho 2 KG con F, G trong R^n ở dạng tập sinh. Tìm cơ sở và số chiều của F + G và F giao G .”
    tks a!

  32. Ẩn danh

    anh giúp e làm bai nay đươc không

    Lực tương tác tĩnh điện do n điện tích điểm tác dụng lên điện tích điểm q0 được xác định bằng nguyên lý chồng chất.

    \vec{F}=\sum\limit_i{\vec{F_i}}

    Trong đó, \vec{F_i} là lực tĩnh điện do điện tích điểm thứ i tác dụng lên điện tích q0. Lực này được xác định bằng định luật Coulomb:

    \vec{F_i}=k\frac{q_i{q_o}}{r^2}\vec{e_r}

    Với k=9\times10^9 Nm^2/C^2; r – khoảng cách giữa điện tích điểm thứ i và điện tích điểm q0.

    Bài tập này yêu cầu sinh viên sử dụng Matlab để tính toán các thành phần Fx, Fy của lực tương tác tĩnh điện giữa các điện tích điểm trong mặt phẳng Oxy.

    • Bạn có thể nhập các tọa độ của điện tích vào các vec tơ, chẳng hạn X, Y, Z. Để tính được vec tơ lực thì có thể (a) dùng vòng lặp tính với từng phần tử thứ i trong vec tơ hoặc (b) lập các ma trận Fx, Fy, Fz trong đó Fx(i,j) là thành phần lực tương tác, theo phương x, giữa các điện tích điểm thứ i và thứ j. Khi đó thành phần hợp lực, theo phương x, tác dụng lên điện tích điểm thứ i sẽ là tổng hàng i (của j=1:n giá trị). Tương tự với Fy(i,j), Fz(i,j) và hợp lực F sẽ là sqrt(Fx^2+Fy^2+Fz^2).

  33. GarLic

    em mới học matlab có bài tập lớn khó quá ! mọi người giúp mình với

    Xác định phương trình chuyển động của tên lửa

    1. Yêu cầu

    Tên lửa dịch chuyển bằng dòng khí đẩy từ đuôi. Dòng khí đẩy này sinh ra bằng các phản ứng đốt cháy nhiên liệu chứa trong tên lửa nên khối lượng của nó giảm dần theo thời gian. Giải phương trình định luật II Newtom cho tên lửa:

    Với m là khối lượng của tên lửa, v’ là vận tốc của dòng khí thoát ra.

    Giải phương trình này ta xác định được gia tốc của tên lửa từ đó ta suy ra phương trình chuyển động của nó.

    Bài tập này yêu cầu sinh viên sử dụng MATLAB để biểu diễn bằng đồ thị phương trình chuyển động của tên lửa y(t).

    m\frac{dv}{dt}=-v’\frac{dm}{dt}-mg

    2. Điều kiện

    1) Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB.

    2) Tìm hiểu các lệnh Matlab liên quan symbolic và đồ họa.

    3. Nhiệm vụ

    Xây dựng chương trình Matlab:

    Nhập vào các thông số tốc độ đốt nhiên liệu dm/dt, khối lượng, vị trí ban đầu của tên lửa, vận tốc đẩy khí của tên lửa v’.
    Sử dụng công cụ Symbolic để xác định phương trình chuyển động của tên lửa và biểu diễn bằng đồ thị
    Chú ý: Sinh viên có thể dùng các cách tiếp cận khác không dùng symbolic.

    • Giả sử tên chuyển động theo trục x. Đầu bài đã cho tỉ số dm/dt, gọi là biến dmdt. Bạn cần giải phương trình vi phân dưới dạng m * dv/dt = -v’ * dmdt – g*m. Vòng lặp for t = 0:dt:n*dt sau đó trong mỗi bước thời gian tính ra m = m – dmdt*dt. Rồi v = v – v*dmdt*dt/m – g*dt. Từ đó suy ra vị trí x = x + v*dt. Trong mỗi bước thời gian bạn có thể in ra m, v, và x để khảo sát chuyển động. Cách này dựa theo phương pháp trong sách và không dùng Symbolic.

    • bạn ơi bạn có thể cho mình bài giải chi tiết được không

      • Không có bài giải mẫu, bạn thử hỏi các bạn khác xem.

      • syms x v dmdt m n ;

        disp(‘Nhap vao cac thong so’)
        dmdt = input(‘toc do dot nhien lieu’)
        v0 = input (‘van toc day khi’)
        m = input(‘khoi luong’)
        x0 = input (‘vi tri ban dau’)

        g = 10;

        % solve m*dv/dt = -v0*dmdt – g*m
        v = dsolve(‘Dv = -v*dmdt/m – g’);

        for t=0:dt:n*dt
        m = m – dmdt*dt;
        v = -v*dmdt*dt/m – g*dt;
        x = x + v*dt;
        end
        eval(x);
        ezplot(x);

        Anh xem giúp em đoạn code này với, em sữa mãi mà vẫn không được ạ!

  34. Anh ơi xem giùm em code với em nghĩ sẻ ra hình xoắn ốc nhưng không biết sai chỗ nào!
    Yêu cầu:
    -Khi electron chuyển động trong điện từ trường đều nó sẽ chịu tác dụng của lực tĩnh điện
    \vec{F_E} và lực Lorenzt \vec{F_L}:

    \vec{F}=\vec{F_E}+\vec{F_L}=q\vec{E}+q\vec{v}\times\vec{B}
    ]-Xác định gia tốc của electron. Nếu biết được vị trí và vận tốc ban đầu ta có thể xác định được phương trình chuyển động dạng động học của electron x(t), y(t), z(t). Qua đó, khi biểu diễn f(x,y,z)=const, ta có phươngtrình quỹ đạo.-Yêu cầu sinh viên sử dụng matlab để tính toán và biểu diễn đồ thị của quỹ đạo của electron trong điện từ trường tĩnh khi biết trước vị trí và vận tốc ban đầu của nó.

    clc;
    format rat
    syms t tg q me vx vy vz
    B= [0 0 1];
    xyz= input(‘Nhap vao vi tri ban dau cua electron, vitri= ‘);
    x0= xyz(:,1); y0= xyz(:,2); z0= xyz(:,3);
    v0= input(‘Nhap vao vecto van toc, v= ‘);v0x= v0(:,1); v0y= v0(:,2); v0z= v0(:,3);
    E= input(‘Nhap vao vecto dien truong, E= ‘);
    Ex=E(:,1);Ey=E(:,2);Ez=E(:,3);
    disp(‘vecto cam ung tu B=[0 0 1]’);
    me= 9.1*10^-31; q= -1.6*10^-19;
    b=cross(v0,B);
    bx=b(:,1);by=b(:,2);bz=b(:,3);
    Fx = q*( Ex + v0y );
    Fy = q*( Ey -v0x );
    Fz = q*Ez;
    F=(sqrt(Fx*Fx+Fy*Fy+Fz*Fz))%hợp lực tác dụng
    ax=Fx/me;
    ay=Fy/me;
    az=Fz/me;
    a=(sqrt(ax*ax+ay*ay+az*az))%gia tốc
    tg=input(‘nhap thoi gian tg de tinh van toc v,t= ‘);
    vx=v0x+ax*tg
    ;vy=v0y+ay*tg;
    vz=v0z+az*tg;
    v=sqrt(vx^2+vy^2+vz^2)%vận tốc
    x= x0+v0x*t + 1/2*ax*t^2;
    y= y0 + v0y*t +1/2*ay*t^2;
    z= z0 + v0z*t +1/2*az*t^2;
    ezplot3(x,y,z,[0,10^-4]);%phương trình chuyển động của electron

    • Mình không có MATLAB và symbolic trên máy để kiểm tra. Bạn có thể xem giá trị các biến để biết đến chỗ nào thì sai. Hơn nữa, để vẽ quỹ đạo chắc bạn phải dùng vòng lặp với tg thì mới thiết lập được đường cong quỹ đạo theo thời gian chứ.

  35. Đặng Ngọc

    function btli
    syms x y;
    F=input(‘nhap dien the V= ‘);
    diem = 20; %so diem de ve
    xMax = 10;
    yMax = xMax;
    for i=1:diem
    xve(i) = -xMax + (i-1)/(diem-1)*(2*xMax); %khoi tao gia tri de ve cua x
    yve(i) = -yMax + (i-1)/(diem-1)*(2*yMax); %khoi tao gia tri de ve cua y
    end
    a=input(‘Nhap toa do x: ‘);
    b=input(‘Nhap toa do y: ‘);
    V=subs(subs(F,x,a),y,b),
    %Tinh vecto cuong do dien truong E theo phuong x va y
    Ex=subs(-diff(F,x),x,a),
    Ey=subs(-diff(F,y),y,b),
    for i=1:diem
    y = yve(i);
    for j=1:diem
    x = xve(j);
    Vve(i,j) = eval(F);
    end
    end
    figure(1);
    meshgrid(xve,yve,Vve);
    xlabel(‘x’); ylabel(‘y’); zlabel(‘F’);
    axis([0,10,0,10]);
    cs = contour(xve,yve,Vve);
    clabel(cs);
    hold on;
    [a b]=meshgrid(xve,yve);
    [px py]=gradient(Vve);
    quiver(a,b,px,py);
    title(‘Mat dien the va vector cuong do dien truong’);
    xlabel(‘x’); ylabel(‘y’);
    hold off

    Anh có thể giải thích đoạn code trên cho em được ko ạ. Từng dòng luôn ấy a 😦 e phải thuyết trình về nó mà ko hiểu gì nó hết
    Nhiệm vụ e là Xây dựng chương trình Matlab:
    1) Nhập biểu thức , ví dụ: lg(x) + y
    2) Giới hạn không gian của mặt phẳng Oxy với xmax = ymax =10
    3) Dùng các phép toán hình thức (symbolic) để tính và các thành phần Ex và Ey tại mọi điểm trong không gian đã cho.
    4) Vẽ đồ thị biểu diễn mặt điện thế và vectơ cường độ điện trường .

    Vectơ cường độ điện trường được xác định thông qua điện thế trong mặt phẳng Oxy bằng biểu thức:
    E=-grad V
    cái dòng xve(i) = -xMax + (i-1)/(diem-1)*(2*xMax); %khoi tao gia tri de ve cua x nghĩa là gì vậy a

  36. Đặng Ngọc

    function btli
    syms x y;
    F=input(‘nhap dien the V= ‘);
    diem = 20; %so diem de ve
    xMax = 10;
    yMax = xMax;
    for i=1:diem
    xve(i) = -xMax + (i-1)/(diem-1)*(2*xMax); %khoi tao gia tri de ve cua x
    yve(i) = -yMax + (i-1)/(diem-1)*(2*yMax); %khoi tao gia tri de ve cua y
    end
    a=input(‘Nhap toa do x: ‘);
    b=input(‘Nhap toa do y: ‘);
    V=subs(subs(F,x,a),y,b),
    %Tinh vecto cuong do dien truong E theo phuong x va y
    Ex=subs(-diff(F,x),x,a),
    Ey=subs(-diff(F,y),y,b),
    for i=1:diem
    y = yve(i);
    for j=1:diem
    x = xve(j);
    Vve(i,j) = eval(F);
    end
    end
    figure(1);
    meshgrid(xve,yve,Vve);
    xlabel(‘x’); ylabel(‘y’); zlabel(‘F’);
    axis([0,10,0,10]);
    cs = contour(xve,yve,Vve);
    clabel(cs);
    hold on;
    [a b]=meshgrid(xve,yve);
    [px py]=gradient(Vve);
    quiver(a,b,px,py);
    title(‘Mat dien the va vector cuong do dien truong’);
    xlabel(‘x’); ylabel(‘y’);
    hold off

    Anh có thể giải thích đoạn code trên cho em được ko ạ. Từng dòng luôn ấy a 😦 e phải thuyết trình về nó mà ko hiểu gì nó hết
    Nhiệm vụ e là Xây dựng chương trình Matlab:
    1) Nhập biểu thức , ví dụ: lg(x) + y
    2) Giới hạn không gian của mặt phẳng Oxy với xmax = ymax =10
    3) Dùng các phép toán hình thức (symbolic) để tính và các thành phần Ex và Ey tại mọi điểm trong không gian đã cho.
    4) Vẽ đồ thị biểu diễn mặt điện thế và vectơ cường độ điện trường .

    Vectơ cường độ điện trường được xác định thông qua điện thế trong mặt phẳng Oxy bằng biểu thức:
    E=-grad V
    cái dòng xve(i) = -xMax + (i-1)/(diem-1)*(2*xMax); %khoi tao gia tri de ve cua x nghĩa là gì vậy a

    • Dong lenh nay co tac dung phan phoi (diem) cac diem doc theo truc x tu (-xMax) den (xMax). Nhung cau lenh khac (diff, subs, meshgrid, gradient, eval), ban co the tu tra cuu bang help de biet tac dung.

  37. Ẩn danh

    Tính toán phân bố mật độ năng lượng điện trường

    1. Yêu cầu

    Mối liên hệ giữa cường độ điện trường và thế điện được biểu diễn bởi biểu thức: \vec{E}=-\vec{grad}\left(V\right)

    Mật độ năng lượng điện trường có thể được tính bởi công thức: u=\frac{1}{2}\epsilon_0\left|E\right|^2

    Bài tập này yêu cầu sinh viên sử dụng Matlab để biểu diễn đồ thị phân bố mật độ năng lượng điện trường theo phân bố điện thế trên một mặt phẳng đã biết trước.

    2. Điều kiện

    1) Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB.

    2) Tìm hiểu các lệnh Matlab liên quan symbolic và đồ họa.

    3. Nhiệm vụ

    Xây dựng chương trình Matlab:

    1) Nhập hàm điện thế theo hai biến x và y.

    2) Tạo ma trận lưới trên mặt phẳng Oxy với O là gốc tọa độ

    3) Tính toán mật độ năng lượng điện trường tại các nút trên lưới.

    4) Vẽ các đồ thị dạng ba chiều thể hiện phân bố thế điện và mật độ năng lượng điện trường (trục z) tại các điểm trên mặt phẳng (trục x, y).

    Chú ý: Sinh viên có thể dùng các cách tiếp cận khác không dùng symbolic.

    giup em viet doan code hoan chinh voi

    • Bạn tự viết code là tốt nhất vì sẽ luyện tập được kĩ năng matlab. Nếu có các bạn cùng lớp, họ sẽ giúp bạn chỉnh sửa những lỗi phát sinh ra trong khi chạy chương trình.

      • đây là đề tài mới và hầu như k ai biết rõ về dạng bài này hết anh ơi.em thấy rất nhiều bạn hỏi về đề tài này rồi

  38. Ẩn danh

    Động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế

    Yêu cầu

    Ta đã biết lực thế là lực mà công sinh ra nhằm dịch chuyển vật từ điểm A đến điểm B không phụ thuộc vào hình dạng quỹ đạo của vật mà chỉ phụ thuộc vào vị trí A và B.

    Xét trường hợp lực thế phức tạp như sau: F(x)=\kappa{x}-4qx^3

    Ta có thể tính toán thế năng của vật tại vị trí x là U(x)=-\int{F(x)dx}.

    Bài tập này yêu cầu sinh viên tính toán và biểu diễn theo thời gian bằng Matlab động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế đã cho theo thời gian.

    Nhiệm vụ

    Xây dựng chương trình Matlab:

    Các thông số kappa và q, khối lượng của chất điểm, vận tốc ban đầu của chất điểm, bước thời gian tính toán được định nghĩa trong chương trình.

    Nhập thông số vị trí ban đầu của chất điểm (x_0).

    Tại mỗi thời điểm tương ứng cấp số cộng bước thời gian, tính toán thế năng và động năng của chất điểm

    Biểu diễn trên đồ thị với trục tung là năng lượng, trục hoành là thời gian.

    Mở rộng:

    Các thông số của chương trình đều có thể nhập vào

    Hàm lực thế được nhập vào bằng công cụ Symbolic của matlab
    cho em xin code này dc ko ạ

  39. Hùng

    Anh có thể cung cấp file PDF cho tài liệu này được không ạ? Em muốn xem offline

    • Hiện tôi không có sẵn file PDF. Nhưng bạn có thể bôi đen chọn các chương bài viết Copy Paste vào Word hoặc LibreOffice rồi Save As hoặc Export ra dạng PDF là được.

  40. quyên

    Động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế

    Yêu cầu

    Ta đã biết lực thế là lực mà công sinh ra nhằm dịch chuyển vật từ điểm A đến điểm B không phụ thuộc vào hình dạng quỹ đạo của vật mà chỉ phụ thuộc vào vị trí A và B.

    Xét trường hợp lực thế phức tạp như sau: F(x)=\kappa{x}-4qx^3

    Ta có thể tính toán thế năng của vật tại vị trí x là U(x)=-\int{F(x)dx}.

    Bài tập này yêu cầu sinh viên tính toán và biểu diễn theo thời gian bằng Matlab động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế đã cho theo thời gian.

    Nhiệm vụ

    Xây dựng chương trình Matlab:

    Các thông số kappa và q, khối lượng của chất điểm, vận tốc ban đầu của chất điểm, bước thời gian tính toán được định nghĩa trong chương trình.

    Nhập thông số vị trí ban đầu của chất điểm (x_0).

    Tại mỗi thời điểm tương ứng cấp số cộng bước thời gian, tính toán thế năng và động năng của chất điểm

    Biểu diễn trên đồ thị với trục tung là năng lượng, trục hoành là thời gian.

    Mở rộng:

    Các thông số của chương trình đều có thể nhập vào

    Hàm lực thế được nhập vào bằng công cụ Symbolic của matlab
    cho em xin code này dc ko ạ

  41. Qui

    A Chiến ơi, đoạn code của e nó bị lỗi gì đó, a xem giúp e với. e cảm ơn trước.
    function VL8
    syms x y
    V=input(‘nhap ham the dien: V(x,y)=’);
    e=-(diff(V,x)+diff(V,y));
    u=1/2*8.854*10^(-12)*e^2;
    [x,y]=meshgrid(-4:0,1:4);
    V=subs(V);
    u=subs(u);
    figure(1); surf(x,y,V);
    title(‘do thi ham the dien V’);
    xlabel(‘x’); ylabel(‘y’); zlabel(‘V’);
    grid on
    figure(2); surf(x,y,u);
    title(‘Mat do nang luong dien truong u=’);
    xlabel(‘x’); ylabel(‘y’); zlabel(‘u’);
    grid on
    end

  42. Qui

    Tính toán phân bố mật độ năng lượng điện trường

    1. Yêu cầu

    Mối liên hệ giữa cường độ điện trường và thế điện được biểu diễn bởi biểu thức: E ⃗=-(grad) ⃗(V)
    Mật độ năng lượng điện trường có thể được tính bởi công thức: u=1/2 ε_0 |E|^2

    Bài tập này yêu cầu sinh viên sử dụng Matlab để biểu diễn đồ thị phân bố mật độ năng lượng điện trường theo phân bố điện thế trên một mặt phẳng đã biết trước.

    2. Điều kiện
    1) Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB.
    2) Tìm hiểu các lệnh Matlab liên quan symbolic và đồ họa.

    3. Nhiệm vụ
    Xây dựng chương trình Matlab:
    1) Nhập hàm điện thế theo hai biến x và y.
    2) Tạo ma trận lưới trên mặt phẳng Oxy với O là gốc tọa độ
    3) Tính toán mật độ năng lượng điện trường tại các nút trên lưới.
    4) Vẽ các đồ thị dạng ba chiều thể hiện phân bố thế điện và mật độ năng lượng điện trường (trục z) tại các điểm trên mặt phẳng (trục x, y).
    Chú ý: Sinh viên có thể dùng các cách tiếp cận khác không dùng symbolic.

    Đây là cái đề nha a!

  43. anh có thê giúp em làm bài vẽ mặt điện thế và cường độ điện trường trong không gian oxy được không em là sv năm nhất nên chưa biết làm mà thứ hai ngày nưa là nộp báo cáo rồi

  44. yêu cầu:1.nhập biêu thức V(x,y) ví dụ lg(x)+y
    2.giới hạn không gian của mặt phẳng oxy với Xmax=Ymax =10
    3.dùng các phép toán hình thức đế tínhV(x,y)và các thành phần Ex,Ey tại mọi điêm trong không gian đã cho
    4.vê đồ thị biểu diễn mặt điện thế V và E
    MONG ANH CÓ THỂ GIUP EM
    EM XIN CẢM ƠN !

    • Mình không giúp bạn được. Bạn nên trao đổi với các bạn trong lớp hoặc anh chị khoá trên. Với bài của bạn chắc phải dùng các symbolic cho x, y để nhập vào biểu thức của V. Sau đó cần lập trường điện thế theo hai phương x và y, có thể phải dùng lệnh meshgrid.
      Máy của mình không cài MatLab vì đó là phần mềm thương mại, nên không có điều kiện thử nghiệm code giúp bạn. Mong bạn thông cảm.

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s