Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

MATLAB Plotting a potential function in MATLAB

  1. Nov 14, 2012 #1
    Hi all,

    I would like to be able to plot this function in MATLAB

    [itex] \mathcal{V} (\phi_{1}, \phi_{2}) = m^2(\phi_{1}^2 + \phi_{2}^2) + \lambda( \phi_{1}^2 + \phi_{2}^2)^2[/itex]

    Where [itex] \phi_{1,2} , m^2 , \lambda \in \mathbb{R} [/itex] and [itex] \lambda > 0 [/itex]

    I am aware that the cases [itex] m^2 > 0 [/itex] and [itex] m^2 < 0 [/itex] yield two different plots.

    I encountered this while doing some reading on QFT, this potential was used in a Lagrangian density while trying to demonstrate spontaneous U(1) symmetry breaking.

    I would really like to be able to plot this in MATLAB but unfortunately I have minimal previous experience with it.

    Would anybody here be able to help me please?

  2. jcsd
  3. Nov 14, 2012 #2
    Hello Maxtor,

    I believe the surf() function in matlab to be suited for your purposes.

    After defining [itex] \phi_1, \phi_2, V [/itex] in MATLAB you would use it in this way:
    surf(phi_1, phi_2, V). Information and examples are available here:

    http://www.mathworks.de/de/help/matlab/ref/surf.html [Broken]

    All the best,
    Last edited by a moderator: May 6, 2017
  4. Nov 14, 2012 #3
    Thank you for your reply!

    phi1 = [-20:0.5:20];
    phi2 = [-20:0.5:20];
    lam = 1;
    m = 1;

    V = (m^2)*(phi1.^2 + phi2^2) + lam*(phi1.^2 + phi2.^2).^2 ;

    surf(phi1, phi2, V)

    I tried this but I get the following error:

    Error using ^
    Inputs must be a scalar and a square matrix.
    To compute elementwise POWER, use POWER (.^) instead.

    Error in p1a (line 6)
    V = (m^2)*(phi1.^2 + phi2^2) + lam*(phi1.^2 + phi2.^2).^2 ;
  5. Nov 14, 2012 #4
    Apologies, I got it working

    [phi1, phi2] = meshgrid(-20:0.5:20);

    lam = 1;
    m = 1;

    V = (m^2)*(phi1.^2 + phi2^2) + lam*(phi1.^2 + phi2.^2).^2 ;

    surf(phi1, phi2, V)

    thanks for your help!
  6. Nov 15, 2012 #5
    You are very welcome :smile:
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook