janhardo

700 Reputation

12 Badges

11 years, 65 days

MaplePrimes Activity


These are replies submitted by janhardo

Unfortunately,  not yet been able to get a dynamically generated timestamp for a 2 lump wave soliton in a contour plot.
However, adjustable axes are possible in the procedure
 The further the 2-lumps evolve in time , it seems like they become 1 lump solitons ?  


 

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:

# Definitie van de 2-lump oplossing
u_expr := -2*((9/65 - 18*I/65)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (9/65 + 18*I/65)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (7933424/1891125 + 36508832*I/1891125)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x) + (6/65 + 9*I/65)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (6/65 - 9*I/65)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x) + (8059833/1092650 - 84073113*I/2185300)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (7933424/1891125 - 36508832*I/1891125)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x) + (8059833/1092650 + 84073113*I/2185300)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x))/(9*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x)/65 + (27783/1625 - 11619*I/1625)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + 135*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x)/52 + (74331/109265 + 118467*I/109265)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x) + (74331/109265 - 118467*I/109265)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + 26*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)/45 + (27783/1625 + 11619*I/1625)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x) + 126229597/50430):

# Trajectorieën
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]))):

MultiLumpPlot2 := proc(tijden::list, kleuren::list, x_range::list, y_range::list, custom_grid::list := [100, 100])
    local contourplots, tijd, i, trajectory_plot1, trajectory_plot2, all_plots, x_min, x_max, y_min, y_max;
    
    x_min, x_max := op(x_range);
    y_min, y_max := op(y_range);
    
    contourplots := [seq(contourplot(eval(u_expr, t = -tijden[i]), x = x_min .. x_max, y = y_min .. y_max, contours = 30, color = kleuren[i], grid = custom_grid, transparency = 0.1), i = 1 .. nops(tijden))];

    trajectory_plot1 := implicitplot(eq1, x = x_min .. x_max, y = y_min .. y_max, color = magenta, thickness = 2);
    trajectory_plot2 := implicitplot(eq2, x = x_min .. x_max, y = y_min .. y_max, color = black, thickness = 2);
    
    return display(op(contourplots), trajectory_plot1, trajectory_plot2, labels = ["x", "y"], scaling = constrained, size = [1200, 800]);
end proc:

MultiLumpPlot2([300], ["blue"], [-200, 200], [-100, 100]);

 

MultiLumpPlot2([100, 200, 300,500, -100, -200,-300 ], ["red", "green", "blue", "black", "red", "green", "blue"], [-350, 350], [-350, 350]);#

 

 

 


 

Download 2-_lump_wave_assenbereik_2-3-2025_mprimes.mw

could be correct, checking time positions


 

" i want do it without textplot in the file tester" 
I am sorry  i don't know yet a solution for text  and is different coding than for a 1 lump soliton.
I must try out different methods ..

@Arya-S-AA 
 

restart;
with(plots):

a := -1;
b := -2;
alpha := 1;
beta := 1;
vx := -3/5;
vy := 1/5;
trajectory_slope := vy/vx;
x0 := 0;
y0 := trajectory_slope*x0;

U := (x, y, t, a, b, alpha, beta) -> 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);

MultiLumpPlot := proc(tijden::list, kleuren::list, custom_grid::list := [500, 500]) 
    local contourplots, tijd, pos_shift, xmin, xmax, ymin, ymax, trajectory_plot, text_labels, all_plots, i; 
    
    contourplots := []; 
    text_labels := []; 
    
    if nops(tijden) <> nops(kleuren) then 
        error "Het aantal kleuren moet gelijk zijn aan het aantal tijdstippen."; 
    end if; 
    
    xmin := infinity; xmax := -infinity; 
    ymin := infinity; ymax := -infinity; 
    
    for i to nops(tijden) do 
        tijd := tijden[i]; 
        pos_shift := [x0 + vx*tijd, y0 + vy*tijd]; 
        
        xmin := min(xmin, pos_shift[1] - 30); 
        xmax := max(xmax, pos_shift[1] + 30); 
        ymin := min(ymin, pos_shift[2] - 30); 
        ymax := max(ymax, pos_shift[2] + 30); 
        
        contourplots := [op(contourplots), 
            contourplot(eval(U(x - pos_shift[1], y - pos_shift[2], 0, a, b, alpha, beta)), 
                        x = xmin .. xmax, y = ymin .. ymax, 
                        contours = 40, color = kleuren[i], grid = custom_grid, transparency = 0.05)];
        
        text_labels := [op(text_labels), 
            textplot([pos_shift[1], pos_shift[2] + 3, cat("t=", round(tijd)), 
            'font' = ["Arial", 12, 'bold']])];  # Hier wordt tijd afgerond
    end do; 
    
    trajectory_plot := implicitplot(y = trajectory_slope*x, x = xmin .. xmax, y = ymin .. ymax, color = black, thickness = 2); 
    
    all_plots := display(op(contourplots), trajectory_plot, op(text_labels), 
                         title = "1-Lump Soliton waves", 
                         labels = ["x", "y"], scaling = constrained, 
                         view = [xmin .. xmax, ymin .. ymax]); 
    
    return all_plots; 
end proc:

MultiLumpPlot([-100, 200, 0, 100], ["blue", "green", "purple", "red"], [100, 100]);    

@Arya-S-AA 
This is a 1 lump soliton code :from line-with-t-test.mw
What exactly do you want to write down in this plot ?
Note : the title of the plot should be corrected to 1-lump soliton

@salim-barzani 
I don't know what the availability is worIdwide for the two ai platforms ?
I use a paid chatgpt of 20 usd per month.  

@salim-barzani 
i did already, but you remove this information on th eforum

@Arya-S-AA 

Becomes already a trickier task to plot a fourth 2-lump soliton at t= 100
A procedure that will randomly draw numbers of 2 -lump wave at a given time is even more complicated

 

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

# ✅ Parameters
a[1] := -1: b[1] := -2:
a[2] := -2/3: b[2] := -1:
a[3] := -4/5: b[3] := -3/2:  # Extra lump toegevoegd
alpha := 1: beta := 1:
vx := -3/5: vy := 1/5:

# ✅ Tijdstippen per 2-lump soliton
t1 := -50:  # Tijdstip voor eerste soliton
t2 := 0:    # Tijdstip voor tweede soliton
t3 := 50:   # Tijdstip voor derde soliton

# ✅ 2-lump wave functie
u_expr := -2*((9/65 - 18*I/65)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (9/65 + 18*I/65)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (7933424/1891125 + 36508832*I/1891125)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x) + (6/65 + 9*I/65)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (6/65 - 9*I/65)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x) + (8059833/1092650 - 84073113*I/2185300)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + (7933424/1891125 - 36508832*I/1891125)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x) + (8059833/1092650 + 84073113*I/2185300)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x))/(9*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x)/65 + (27783/1625 - 11619*I/1625)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + 135*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x)/52 + (74331/109265 + 118467*I/109265)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x) + (74331/109265 - 118467*I/109265)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*((-2/3 + I)*t + (5/9 + 4*I/3)*y + t + (2/3 - I)*x) + 26*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*((-1 + 2*I)*t + (3 + 4*I)*y + t + (1 - 2*I)*x)/45 + (27783/1625 + 11619*I/1625)*(-(1 + 2*I)*t + (3 - 4*I)*y + t + (1 + 2*I)*x)*(-(2/3 + I)*t + (5/9 - 4*I/3)*y + t + (2/3 + I)*x) + 126229597/50430):

# ✅ Contourplots voor de drie tijdstippen
contour1 := contourplot(eval(u_expr, t = t1), x = -200..200, y = -100..100, contours = 30, color = red):
contour2 := contourplot(eval(u_expr, t = t2), x = -200..200, y = -100..100, contours = 30, color = green):
contour3 := contourplot(eval(u_expr, t = t3), x = -200..200, y = -100..100, contours = 30, color = blue):

# ✅ Tijdsaanduiding op de figuur
time_labels := textplot([[0, 50, cat("t=", t1)], [0, 0, cat("t=", t2)], [0, -50, cat("t=", t3)]], font=["Arial", 12, 'bold']):

# ✅ Combineer de plots
display(contour1, contour2, contour3, time_labels, labels = ["x", "y"], title="Drie 2-Lump Solitons bij Verschillende Tijdstippen", scaling=constrained);

 

@Arya-S-AA 
A procedure can also be made for the ‘2 lump waves’ I think with time indications? 

Its about combining animations 

@Arya-S-AA 

Like this, as a list input   
This option is  [100, 100] is for minimising plotdrawing time?  

 

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);

### 🚀 Multi-Tijdstip 2-Lump Plot met Kleurenoptie 🚀 ###
MultiLumpPlot := proc(tijden::list, kleuren::list, custom_grid::list := [500,500])
  local contourplots, tijd, pos_shift, xmin, xmax, ymin, ymax, trajectory_plot, text_labels, all_plots, i;
  
  contourplots := [];
  text_labels := [];

  # ✅ Controle of het aantal kleuren overeenkomt met het aantal tijden
  if nops(tijden) <> nops(kleuren) then
      error "Het aantal kleuren moet gelijk zijn aan het aantal tijdstippen.";
  end if;

  # ✅ Bepaal globale minima en maxima van alle lumps
  xmin := +infinity; xmax := -infinity;
  ymin := +infinity; ymax := -infinity;

  for i from 1 to nops(tijden) do
      tijd := tijden[i];
      pos_shift := [x0 + vx*tijd, y0 + vy*tijd];

      # ✅ Bepaal de uiterste grenzen zodat alle lumps in beeld blijven
      xmin := min(xmin, pos_shift[1] - 30);
      xmax := max(xmax, pos_shift[1] + 30);
      ymin := min(ymin, pos_shift[2] - 30);
      ymax := max(ymax, pos_shift[2] + 30);
      
      # ✅ Contourplot van de lump **op het juiste tijdstip** met de juiste kleur
      contourplots := [op(contourplots), 
          contourplot(
              eval(U(x - pos_shift[1], y - pos_shift[2], 0, a, b, alpha, beta)),  
              x = xmin..xmax, y = ymin..ymax, contours = 40, color = kleuren[i], 
              grid = custom_grid, transparency = 0.05
          )
      ];

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

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

  # ✅ Combineer alle contourplots, het traject en de labels
  all_plots := display(op(contourplots), trajectory_plot, op(text_labels), 
    title = "2-Lump Soliton Golven op meerdere tijdstippen",
    labels = ["x", "y"], scaling = constrained, view=[xmin..xmax, ymin..ymax]
  );

  return all_plots;
end proc:

# ✅ Voorbeeld aanroepen: een lijst van tijdstippen met een lijst van bijbehorende kleuren
MultiLumpPlot([100, 75, 50, 25, 0, -25, -50, -75, -100], ["red", "blue", "green", "purple", "yellow", "red", "blue", "green", "purple"], [100,100]);

@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

First 11 12 13 14 15 16 17 Last Page 13 of 75