janhardo

545 Reputation

11 Badges

10 years, 305 days

MaplePrimes Activity


These are replies submitted by janhardo

@Arya-S-AA 

restart:
with(plots):

### Lump Parameters ###
a := -1; b := -2; alpha := 1; beta := 1;
vx := -3/5; vy := 1/5;
trajectory_slope := vy/vx;  # automatisch bepaald

# ✅ Startpositie van de 2-lump golf als één geheel op t=0
x0 := 0;
y0 := trajectory_slope * x0;  # Bewegingslijn y = -1/3 * x

U := (x, y, t, a, b, alpha, beta) ->
    4*beta*((a*y - 2*alpha*t + x)*b^2 + a*(-2*beta*t + a*(a*y - 2*alpha*t + x))*b^2) /
    (-b^6*beta*y^2 
    + (-4*t*y*beta^2 + (-2*a^2*y^2 + (4*alpha*t - 2*x)*a*y - 4*(alpha*t - x/2)^2)*beta + 3*a)*b^4 
    + (-4*t**2*beta**3 + 4*a*t*(a*y - 2*alpha*t + x)*beta**2 - a**2*(a*y - 2*alpha*t + x)**2*beta + 6*a**3)*b**2 
    + 3*a**5);

### 🚀 Dynamische 2-Lump-Plot: Exacte Verplaatsing 🚀 ###
DynamicLumpPlot := proc(tijd::numeric)
  local contour, trajectory_plot, text_label, pos_shift, xmin, xmax, ymin, ymax;

  # ✅ Bereken de correcte positie van de 2-lump golf
  pos_shift := [x0 + vx*tijd, y0 + vy*tijd];

  # ✅ Controle: Toon de correcte positie in de console
  printf("Lump op t=%.1f bevindt zich exact op (%.2f, %.2f)\n", tijd, pos_shift[1], pos_shift[2]);

  # ✅ Dynamisch plotbereik dat altijd rond de lump gecentreerd is
  xmin := pos_shift[1] - 30; xmax := pos_shift[1] + 30;
  ymin := pos_shift[2] - 30; ymax := pos_shift[2] + 30;

  # ✅ Contourplot die exact zoals bij t=0 wordt weergegeven, maar **verplaatst**
  contour := contourplot(
      eval(U(x - pos_shift[1], y - pos_shift[2], 0, a, b, alpha, beta)),  # **Houd U exact zoals bij t=0, maar verschuif x en y!**
      x = xmin..xmax, y = ymin..ymax, contours = 40, color = red, 
      grid = [300,300], transparency = 0.05
  );

  # ✅ Traject van de 2-lump golf (referentielijn)
  trajectory_plot := implicitplot(y = trajectory_slope*x, x=xmin..xmax, y=ymin..ymax, color=black, thickness=2):

  # ✅ Label toevoegen met tijd
  text_label := textplot([pos_shift[1], pos_shift[2] + 3, cat("t=", evalf[2](tijd)), 'font'=["Arial",12,'bold']]):

  # ✅ Plot alles samen
  display(contour, trajectory_plot, text_label, 
    title = cat("2-Lump Soliton Golf op t=", evalf[2](tijd), " seconden"),
    labels = ["x", "y"], scaling = constrained
  );
end proc:

# ✅ Voorbeeld aanroepen: time t in DynamicLumpPlot(t)
DynamicLumpPlot(0);   # ✅ Correcte startpositie van de 2-lump golf
DynamicLumpPlot(50);  # ✅ Exacte 2-lump golf op (-30, 10), zonder vervorming
DynamicLumpPlot(-50); # ✅ Exacte 2-lump golf op (30, -10), zonder vervorming
DynamicLumpPlot(-25); # ✅ Exacte 2-lump golf op (15, -5), zonder vervorming

@Arya-S-AA 
Maybe I can still help you with your question, but it is not clear to me what exactly you want for a designation?

@salim-barzani 
you don't need ai to chance the colors of the two trajectory lines?

Now you need to get the lumps a bit smaller...good luck

@salim-barzani 
looks good ..lol 

restart;
with(PDEtools):
with(plots):
declare(u(x, y, t), quiet);

# Parameters
a[1] := -1:
b[1] := -2:
a[2] := -2/3:
b[2] := -1:
alpha := 1:
beta := 1:

# Complexe parameters
l[1] := a[1] + b[1]*I:
l[2] := a[2] + b[2]*I:
l[3] := conjugate(l[1]):
l[4] := conjugate(l[2]):

# Functie f(x,y,t) zonder '=' zodat het een expressie blijft
f_expr := (
    (alpha*t*l[1] - y*l[1]^2 + beta*t - x*l[1])*
    (alpha*t*l[2] - y*l[2]^2 + beta*t - x*l[2])*
    (alpha*t*l[3] - y*l[3]^2 + beta*t - x*l[3])*
    (alpha*t*l[4] - y*l[4]^2 + beta*t - x*l[4])/(l[1]*l[2]*l[3]*l[4])
    + 6*l[1]*l[2]*(l[1] + l[2])*(alpha*t*l[3] - y*l[3]^2 + beta*t - x*l[3])*(alpha*t*l[4] - y*l[4]^2 + beta*t - x*l[4])/((l[1] - l[2])^2*beta*l[3]*l[4])
    + 6*l[1]*l[3]*(l[1] + l[3])*(alpha*t*l[2] - y*l[2]^2 + beta*t - x*l[2])*(alpha*t*l[4] - y*l[4]^2 + beta*t - x*l[4])/((l[1] - l[3])^2*beta*l[2]*l[4])
    + 6*l[1]*l[4]*(l[1] + l[4])*(alpha*t*l[2] - y*l[2]^2 + beta*t - x*l[2])*(alpha*t*l[3] - y*l[3]^2 + beta*t - x*l[3])/((l[1] - l[4])^2*beta*l[2]*l[3])
    + 6*l[2]*l[3]*(l[2] + l[3])*(alpha*t*l[1] - y*l[1]^2 + beta*t - x*l[1])*(alpha*t*l[4] - y*l[4]^2 + beta*t - x*l[4])/((l[2] - l[3])^2*beta*l[1]*l[4])
    + 6*l[2]*l[4]*(l[2] + l[4])*(alpha*t*l[1] - y*l[1]^2 + beta*t - x*l[1])*(alpha*t*l[3] - y*l[3]^2 + beta*t - x*l[3])/((l[2] - l[4])^2*beta*l[1]*l[3])
    + 6*l[3]*l[4]*(l[3] + l[4])*(alpha*t*l[1] - y*l[1]^2 + beta*t - x*l[1])*(alpha*t*l[2] - y*l[2]^2 + beta*t - x*l[2])/((l[3] - l[4])^2*beta*l[1]*l[2])
    + 36*l[1]*l[2]*(l[1] + l[2])*l[3]*l[4]*(l[3] + l[4])/((l[1] - l[2])^2*beta^2*(l[3] - l[4])^2)
    + 36*l[1]*l[3]*(l[1] + l[3])*l[2]*l[4]*(l[2] + l[4])/((l[1] - l[3])^2*beta^2*(l[2] - l[4])^2)
    + 36*l[1]*l[4]*(l[1] + l[4])*l[2]*l[3]*(l[2] + l[3])/((l[1] - l[4])^2*beta^2*(l[2] - l[3])^2)):

# Oplossing u(x,y,t)
u_expr := -2*diff(f_expr, x)/f_expr:

# Trajectvergelijkingen (correcte afsluiting toegevoegd)
eq1 := y = -beta/((a[1]^2 + b[1]^2)*alpha + 2*a[1]*beta)*(x - (sqrt(3)*sqrt(-a[1]*beta*(a[1]^2 + b[1]^2)^3)/(beta*(a[1]^2 + b[1]^2)*b[1]))):
eq2 := y = -beta/((a[2]^2 + b[2]^2)*alpha + 2*a[2]*beta)*(x - (sqrt(3)*sqrt(-a[2]*beta*(a[2]^2 + b[2]^2)^3)/(beta*(a[2]^2 + b[2]^2)*b[2]))):

# Contourplots met correcties
contour1 := contourplot(eval(u_expr, t = -50), x = -200..200, y = -100..100,
            contours = 30, color = red, grid = [100, 100], transparency = 0.1):
contour2 := contourplot(eval(u_expr, t = -30), x = -200..200, y = -100..100,
            contours = 30, color = orange, grid = [100, 100], transparency = 0.1):
contour3 := contourplot(eval(u_expr, t = 0), x = -200..200, y = -100..100,
            contours = 30, color = blue, grid = [100, 100], transparency = 0.1):
contour4 := contourplot(eval(u_expr, t = 30), x = -200..200, y = -100..100,
            contours = 30, color = green, grid = [100, 100], transparency = 0.1):
contour5 := contourplot(eval(u_expr, t = 50), x = -200..200, y = -100..100,
            contours = 30, color = cyan, grid = [100, 100], transparency = 0.1):
contour6 := contourplot(eval(u_expr, t = 70), x = -200..200, y = -100..100,
            contours = 30, color = magenta, grid = [100, 100], transparency = 0.1):

# Trajectories plot
trajectory_plot := implicitplot({eq1, eq2}, x = -200..200, y = -100..100,
                     color = black, thickness = 2):

# Combine plots
display(contour1, contour2, contour3, contour4, contour5, contour6, trajectory_plot,
        title = "2-Lump Soliton Dynamics with Trajectories",
        labels = ["x", "y"], scaling = constrained, size = [1200, 800]);

 
 

 

Download 2_lump_wave_verzoek_watch_my_file_and_what_i_told_you_use_that_equation_i_mentioned_25-2-2025.mw

@salim-barzani 
How about this?

note:
Problem is also that you work in 2D input now and as I understand it, it is not completely error-free and via standard maple input it works error-free as I understand it from the specialist users

Have now copied that 2D maple code as well and it looks like that is skipping some ...?

alpha := 1;
beta := 1;
a1 := -1;
b1 := -2;
a2 := -2/3;
b2 := -1;
f := (alpha*l1*t - l1^2*y + beta*t - l1*x)*(alpha*l2*t - l2^2*y + beta*t - l2*x)*(alpha*l3*t - l3^2*y + beta*t - l3*x)*(alpha*l4*t - l4^2*y + beta*t - l4*x)/(l1*l2*l3*l4) + 6*l1*l2*(l1 + l2)*(alpha*l3*t - l3^2*y + beta*t - l3*x)*(alpha*l4*t - l4^2*y + beta*t - l4*x)/((l1 - l2)^2*beta*l3*l4) + 6*l1*l3*(l1 + l3)*(alpha*l2*t - l2^2*y + beta*t - l2*x)*(alpha*l4*t - l4^2*y + beta*t - l4*x)/((l1 - l3)^2*beta*l2*l4) + 6*l1*l4*(l1 + l4)*(alpha*l2*t - l2^2*y + beta*t - l2*x)*(alpha*l3*t - l3^2*y + beta*t - l3*x)/((l1 - l4)^2*beta*l2*l3) + 6*l2*l3*(l2 + l3)*(alpha*l1*t - l1^2*y + beta*t - l1*x)*(alpha*l4*t - l4^2*y + beta*t - l4*x)/((l2 - l3)^2*beta*l1*l4) + 6*l2*l4*(l2 + l4)*(alpha*l1*t - l1^2*y + beta*t - l1*x)*(alpha*l3*t - l3^2*y + beta*t - l3*x)/((l2 - l4)^2*beta*l1*l3) + 6*l3*l4*(l3 + l4)*(alpha*l1*t - l1^2*y + beta*t - l1*x)*(alpha*l2*t - l2^2*y + beta*t - l2*x)/((l3 - l4)^2*beta*l1*l2) + 36*l1*l2*(l1 + l2)*l3*l4*(l3 + l4)/((l1 - l2)^2*beta^2*(l3 - l4)^2) + 36*l1*l3*(l1 + l3)*l2*l4*(l2 + l4)/((l1 - l3)^2*beta^2*(l2 - l4)^2) + 36*l1*l4*(l1 + l4)*l2*l3*(l2 + l3)/((l1 - l4)^2*beta^2*(l2 - l3)^2);
f_complex := eval(eval(f, {l3 = conjugate(l1), l4 = conjugate(l2)}), {l1 = a1 + b1*I, l2 = a2 + b2*I});
u := -2*diff(f_complex, x)/f_complex;
contour1 := contourplot(eval(u, t = -50), x = -50 .. 50, y = -50 .. 50, contours = 30, color = red, grid = [100, 100]);
contour2 := contourplot(eval(u, t = 0), x = -50 .. 50, y = -50 .. 50, contours = 30, color = blue, grid = [100, 100]);
contour3 := contourplot(eval(u, t = 50), x = -50 .. 50, y = -50 .. 50, contours = 30, color = green, grid = [100, 100]);
display(contour1, contour2, contour3, title = "2-Lump Soliton Dynamics", labels = ["x", "y"], scaling = constrained);

@salim-barzani 
Its chatGPT payd with the :Math & Physics 👉🏼 Algebra Calculus Stats for now and free DeepSeek 
Sometimes chatGpt is not giving wanted answer and Deepseek gives a good answer or the opposite..lol
Deepseek has waiting times but  not the the paid version of chatGPT
I do have two ai's  working together in combo with maple with two worksheettabs and sections in it

I have your pdf with information translated by the ai and ask it to translate this into maple code , it's that simple
The ai does not get tired and can reason deeper logically 
It's just a great tool to start exploring all kinds of things in natyurics 

@salim-barzani 

2 different ways to get the lumps bigger ( maybe there is a more clever way?)

contourplot(Lump2(x,y,tijden[i],schaalfactor), x=-80..80, y=-80..80,
contourplot(1e5*Lump2(x,y,tijden[i]), x=-80..80, y=-80..80,
restart:
with(plots):

alpha := 1: beta := 1:
l3 := -1 - 2*I: l4 := -2/3 - I:

Lump2 := proc(x,y,t)
    local theta, B, f, u, l3c, l4c:
    l3c := conjugate(l3): l4c := conjugate(l4):
    theta := (l) -> x + l*y - (alpha + beta/l)*t:
    B := (li, lj) -> 3*(li + lj)/(beta*(li - lj)^2):
    f := theta(l3)*theta(l3c)*theta(l4)*theta(l4c)
         + B(l3,l3c)*theta(l4)*theta(l4c)
         + B(l3,l4)*theta(l3c)*theta(l4c)
         + B(l3,l4c)*theta(l3c)*theta(l4)
         + B(l3c,l4)*theta(l3)*theta(l4c)
         + B(l3c,l4c)*theta(l3)*theta(l4)
         + B(l4,l4c)*theta(l3)*theta(l3c)
         + B(l3,l3c)*B(l4,l4c)
         + B(l3,l4)*B(l3c,l4c)
         + B(l3,l4c)*B(l3c,l4):
    u := simplify(12*diff(f, x$2)/f^2 - 12*(diff(f, x)^2)/f^3):
    return Re(u):
end proc:

# Tijden en kleuren
tijden := [-70, 0, 70]:
kleuren := [red, green, blue]:

contourPlots := []:
for i from 1 to 3 do
    # Schaal hier de functie zelf met factor 10^5 om lumps te vergroten
    contourPlots := [op(contourPlots), 
        contourplot(1e5*Lump2(x,y,tijden[i]), x=-80..80, y=-80..80, 
                    contours=[0.1], grid=[400,400], color=kleuren[i], thickness=2)]:
od:

# Bewegingslijnen
lijn1 := plot(-1/3*x - sqrt(30)/6, x=-80..80, color=black, thickness=2):
lijn2 := plot(-9*x - 3*sqrt(26), x=-80..80, color=brown, thickness=2):

# Eindplot
display(contourPlots[], lijn1, lijn2, axes=boxed, scaling=constrained,
        view=[-80..80,-80..80],
        title="Contourplot 2-lump waves: t=-70(rood), t=0(groen), t=70(blauw)",
        labels=["x","y"]);
##################################################################
restart:
with(plots):
with(plottools):

alpha := 1: beta := 1:
l3 := -1 - 2*I: l4 := -2/3 - I:

Lump2 := proc(x,y,t,schaal)
    local theta, B, f, u, l3c, l4c:
    l3c := conjugate(l3): l4c := conjugate(l4):
    theta := (l) -> x + l*y - (alpha + beta/l)*t:
    B := (li, lj) -> 3*(li + lj)/(beta*(li - lj)^2):
    f := theta(l3)*theta(l3c)*theta(l4)*theta(l4c)
         + B(l3,l3c)*theta(l4)*theta(l4c)
         + B(l3,l4)*theta(l3c)*theta(l4c)
         + B(l3,l4c)*theta(l3c)*theta(l4)
         + B(l3c,l4)*theta(l3)*theta(l4c)
         + B(l3c,l4c)*theta(l3)*theta(l4)
         + B(l4,l4c)*theta(l3)*theta(l3c)
         + B(l3,l3c)*B(l4,l4c)
         + B(l3,l4)*B(l3c,l4c)
         + B(l3,l4c)*B(l3c,l4):
    u := simplify(12*diff(f, x$2)/f^2 - 12*(diff(f, x)^2)/f^3);
    return schaal*Re(u):
end proc:

# ==== Gebruikersinstelling ====
##schaalfactor := 2e5: # Wijzig om lumps groter/kleiner te maken
  schaalfactor := 2e6: # Wijzig om lumps groter/kleiner te maken
# ==============================

tijden := [-70, 0, 70]:
kleuren := [red, green, blue]:

contourPlots := []:
for i from 1 to 3 do
    contourPlots := [op(contourPlots), 
        contourplot(Lump2(x,y,tijden[i],schaalfactor), x=-80..80, y=-80..80, 
                    contours=[0.1], grid=[400,400], color=kleuren[i], thickness=2)]:
od:

lijn1 := plot(-1/3*x - sqrt(30)/6, x=-80..80, color=black, thickness=2):
lijn2 := plot(-9*x - 3*sqrt(26), x=-80..80, color=brown, thickness=2):

display(contourPlots[], lijn1, lijn2, axes=boxed, scaling=constrained,
        view=[-80..80,-80..80],
        title="Contourplot 2-lump waves: t=-70(rood), t=0(groen), t=70(blauw)",
        labels=["x","y"]);

@salim-barzani 
"i think you use Ai i am true?"

Yes, of course ai is used by me , otherwise I get no idea what all the code represents and it becomes a hopeless search to solve anything.

@salim-barzani 
Have you tried adjusting the code to make the lump bigger? 
Maybe there are other forum members who have an idea for this to get the lump plot bigger, I am interested in that.

Or a different approach for the plotting?

@salim-barzani 
You might get a better lump visualisation with this code , than I have made before 
Experiment with these ‘basic lumps’ yourself 

i did not changed the lump itself.... 

@salim-barzani 
Find out for yourself how to increase lumps size, and show the result!

 

restart; with(plots); alpha := 1; beta := 1; l3 := -1-2*I; l4 := -2/3-I; Lump2 := proc (x, y, t) local theta, B, f, u, l3c, l4c; l3c := conjugate(l3); l4c := conjugate(l4); theta := proc (l) options operator, arrow; x+l*y-(alpha+beta/l)*t end proc; B := proc (li, lj) options operator, arrow; (3*li+3*lj)/(beta*(li-lj)^2) end proc; f := theta(l3)*theta(l3c)*theta(l4)*theta(l4c)+B(l3, l3c)*theta(l4)*theta(l4c)+B(l3, l4)*theta(l3c)*theta(l4c)+B(l3, l4c)*theta(l3c)*theta(l4)+B(l3c, l4)*theta(l3)*theta(l4c)+B(l3c, l4c)*theta(l3)*theta(l4)+B(l4, l4c)*theta(l3)*theta(l3c)+B(l3, l3c)*B(l4, l4c)+B(l3, l4)*B(l3c, l4c)+B(l3, l4c)*B(l3c, l4); u := simplify(12*(diff(f, `$`(x, 2)))/f^2-12*(diff(f, x))^2/f^3); return Re(u) end proc; times := [-70, 0, 70]; colors := [red, green, blue]; contourPlots := []; for i to 3 do contourPlots := [op(contourPlots), contourplot(Lump2(x, y, times[i]), x = -80 .. 80, y = -80 .. 80, contours = 50, grid = [400, 400], color = colors[i], thickness = 2)] end do; line1 := plot(-(1/3)*x-(1/6)*sqrt(30), x = -80 .. 80, color = black, thickness = 2); line2 := plot(-9*x-3*sqrt(26), x = -80 .. 80, color = brown, thickness = 2); display(contourPlots[], line1, line2, axes = boxed, scaling = constrained, view = [-80 .. 80, -80 .. 80], title = "Contour plot of 2-lump waves: t=-70 (red), t=0 (green), t=70 (blue)", labels = ["x", "y"])

 
 

info

 

 

Download 2-lump_waves_plot_25-2-2025_def_mprimes.mw

seems to be not the same 2 lump waves ?

@salim-barzani 
iI have already calculated a 2 lump wave and in that plot you can draw the two straight lines, from the information given
1 of the lines must then pass through the 2 lump wave?

@salim-barzani 

restart:
with(plots):

### Lump Parameters ### PROCEDURE ZONDER INITIELE POSITIE LUMPS ?
a := -1; b := -2; alpha := 1; beta := 1;
vx := -3/5; vy := 1/5;
trajectory_slope := vy/vx;  # automatisch bepaald
U := (x, y, t, a, b, alpha, beta) ->
    4*beta*((a*y - 2*alpha*t + x)*b^2 + a*(-2*beta*t + a*(a*y - 2*alpha*t + x))*b^2) /
    (-b^6*beta*y^2
    + (-4*t*y*beta^2 + (-2*a^2*y^2 + (4*alpha*t - 2*x)*a*y - 4*(alpha*t - x/2)^2)*beta + 3*a)*b^4
    + (-4*t^2*beta^3 + 4*a*t*(a*y - 2*alpha*t + x)*beta^2 - a^2*(a*y - 2*alpha*t + x)^2*beta + 6*a^3)*b^2
    + 3*a^5);

### �� Dynamische Lump-Procedure (met parameter-uitleg) �� ###
DynamicLumpPlot := proc(input::list, mode::symbol := 'tijd')
  local i, n, pos_initial, tijden, pos_shift, contour, kleuren, trajectory_plot, text_labels, U, extra_info, xmin, xmax, ymin, ymax, param_info;

  n := nops(input);
  pos_initial := [seq([200*(i-(n+1)/2), -200*(i-(n+1)/2)/3], i=1..n)];

  if mode = 'tijd' then
    tijden := input;
    for i from 1 to n do
      pos_shift[i] := [pos_initial[i][1] + vx*tijden[i], pos_initial[i][2] + vy*tijden[i]];
    end do:
    extra_info := cat(seq(sprintf("t=%.2f: (%.2f, %.2f)   ", tijden[i], pos_shift[i][1], pos_shift[i][2]), i=1..n));

  elif mode = 'positie' then
    pos_shift := input;
    for i from 1 to n do
      tijden[i] := (pos_shift[i][1] - pos_initial[i][1]) / vx;
      if abs(pos_shift[i][2] - trajectory_slope*pos_shift[i][1]) > 1e-3 then
        printf("⚠️ Lump %d ligt NIET precies op trajectory (afwijking=%.2f). Correcte positie: (%.2f, %.2f)\n",
          i, abs(pos_shift[i][2] - trajectory_slope*pos_shift[i][1]), pos_shift[i][1], trajectory_slope*pos_shift[i][1]);
      end if;
    end do:
    extra_info := cat(seq(sprintf("(%.2f, %.2f): t=%.2f   ", pos_shift[i][1], pos_shift[i][2], tijden[i]), i=1..n));

  else
    error "Kies modus 'tijd' of 'positie'";
  end if:

  xmin := min(seq(pos_shift[i][1], i=1..n)) - 50; xmax := max(seq(pos_shift[i][1], i=1..n)) + 50;
  ymin := min(seq(pos_shift[i][2], i=1..n)) - 50; ymax := max(seq(pos_shift[i][2], i=1..n)) + 50;

  xmin := min(xmin, -200): xmax := max(xmax, 200):
  ymin := min(ymin, trajectory_slope*xmin - 50): ymax := max(ymax, trajectory_slope*xmax + 50):

  U := (x, y, t, a, b, alpha, beta) ->
    4*beta*((a*y - 2*alpha*t + x)*b^2 + a*(-2*beta*t + a*(a*y - 2*alpha*t + x))*b^2) /
    (-b^6*beta*y^2
    + (-4*t*y*beta^2 + (-2*a^2*y^2 + (4*alpha*t - 2*x)*a*y - 4*(alpha*t - x/2)^2)*beta + 3*a)*b^4
    + (-4*t^2*beta^3 + 4*a*t*(a*y - 2*alpha*t + x)*beta^2 - a^2*(a*y - 2*alpha*t + x)^2*beta + 6*a^3)*b^2
    + 3*a^5);

  kleuren := [red, blue, green, orange, purple, cyan, magenta]:

  for i from 1 to n do
    contour[i] := contourplot(
      eval(U(x - pos_shift[i][1], y - pos_shift[i][2], 0, a, b, alpha, beta)),
      x = xmin..xmax, y = ymin..ymax, contours=30, color=kleuren[i mod 7 + 1],
      grid=[200,200], transparency=0.1
    );
  end do:

  trajectory_plot := implicitplot(y=trajectory_slope*x, x=xmin..xmax, y=ymin..ymax, color=black, thickness=2):

  text_labels := textplot([
    seq([pos_shift[i][1], pos_shift[i][2]+(ymax-ymin)*0.03,
         cat("t=", evalf[3](tijden[i])),
         'font'=["Arial",12,'bold'], 'color'=black], i=1..n)
  ]):

  param_info := sprintf("Lump-parameters betekenis:\n a=%.2f (richting/vormfactor), b=%.2f (breedte/hoogte-factor), α=%.2f, β=%.2f (amplitude/richting)\n → Trajectory-slope = %.2f",
                         a,b,alpha,beta,trajectory_slope);

  display(
    [seq(contour[i], i=1..n)], trajectory_plot, text_labels,
    title = cat(n, "-Lump Soliton(en) Dynamisch"),
    labels = ["x","y"], scaling = constrained,
    caption = typeset(extra_info, "\n\n", param_info)
  );
end proc:

-1

 

-2

 

1

 

1

 

-3/5

 

1/5

 

-1/3

 

proc (x, y, t, a, b, alpha, beta) options operator, arrow; 4*beta*((y*a-2*alpha*t+x)*b^2+a*(-2*beta*t+a*(y*a-2*alpha*t+x))*b^2)/(-b^6*beta*y^2+(-4*t*y*beta^2+(-2*a^2*y^2+(4*alpha*t-2*x)*a*y-4*(alpha*t-(1/2)*x)^2)*beta+3*a)*b^4+(-4*t^2*beta^3+4*a*t*(y*a-2*alpha*t+x)*beta^2-a^2*(y*a-2*alpha*t+x)^2*beta+6*a^3)*b^2+3*a^5) end proc

(1)

DynamicLumpPlot([0,1,2,3,4,5,6,7,8,9,10], 'tijd');# time in sec ?

 

DynamicLumpPlot([[-150,50],[-80,80/3],[50,-50/3],[0,0]],'positie');# position

 

 

DynamicLumpPlot([[-150,50]],'positie');

 
 

 

Download dynamische_lump_procedure_GPTDEFA-_24-2-2025.mw

4 5 6 7 8 9 10 Last Page 6 of 67