# I'm trying to write a MATLAB code to solve the first order 1-D wave equation (transport equation) using the Euler method

10 visualizaciones (últimos 30 días)
ayushman srivastava el 4 de Feb. de 2022
Editada: Gyan Vaibhav el 20 de Oct. de 2023
% This program describes a moving 1-D wave
% using the finite difference method
clc
close all;
%%
% Initialization
Nx= 480; % x-Grid
dx= 3/480; % Step size
x(:,1)= (0:Nx-1)*dx;
f= 125.7; % Wave number
U(:,1)= -16*(x(:,1)-1/2).^2
% U(:,1) = exp(-16*(x(:,1)-1/2).^2);
U(:,1)= exp(U(:,1));
U(:,1)= U(:,1).*sin(f*x(:,1))
%U(:,1)= exp(-16*(x(:,1)-1/2).^2)%sin*(f*x(:,1))
%U(:,1)= U(:,1).*sin(f*x(:,1))
mpx= (Nx+1)/2; % Mid point of x-axis
% (Mid point of 1 to 3= 2 here)
T= 10; % Total no. of time step
f= 125.7; % Wave number
dt= 0.000625; % time-step
t(:,1)= (0:T-1)*dt;
v= 1; % wave velocity
c=v*(dt/dx); % CFL condition
s1= floor(T/f);
%%
% Initial condition
x=0:.001:3;
u=@(t)exp(-16*(x-(.75*t+.5)).^2).*sin(125.7*x);
plot(x,u(0))
figure
plot(x,u(2))
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

### Respuestas (1)

Gyan Vaibhav el 20 de Oct. de 2023
Editada: Gyan Vaibhav el 20 de Oct. de 2023
Hi Ayushman,
It seems like you have already written some MATLAB code to solve the 1-D wave equation using the Euler method. However, I noticed a few issues and inconsistencies in your code. Here's the corrected version:
clc
close all;
% Initialization
Nx = 480; % x-Grid
dx = 3 / Nx; % Step size
x = (0:Nx-1) * dx;
f = 125.7; % Wave number
U = -16 * (x - 1/2).^2;
U = exp(U);
U = U .* sin(f * x);
mpx = (Nx + 1) / 2; % Mid point of x-axis
T = 10; % Total number of time steps
dt = 0.000625; % time-step
t = (0:T-1) * dt;
v = 1; % wave velocity
c = v * (dt / dx); % CFL condition
s1 = floor(T / f);
% Initial condition
x_plot = x; % Use the same grid points as x
u_func = @(t) exp(-16 * (x_plot - (.75 * t + .5)).^2) .* sin(125.7 * x_plot);
plot(x_plot, u_func(0));
figure;
plot(x_plot, u_func(2));
1. Fixed the wrong assignment of x.
2. Added missing semicolons at the end of each line to suppress unnecessary output.
3. Renamed the variable “x” in the initial condition section to “x_plot” to avoid conflicts with the x variable used for grid points.
4. Changed the range of “x_plot from 0:.001:3 to x to match the grid points used in the rest of the code.
5. Renamed the variable “u” in the initial condition section to “u_func” to avoid conflicts with the “U“ variable used for the wave solution.
These changes should fix the inconsistencies and make the code run without errors.
Also, the plots using above code do match your given outputs in the pdf file.
Best regards,
Gyan
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

### Categorías

Más información sobre Programming en Help Center y File Exchange.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by