diff options
author | Vasil Zlatanov <v@skozl.com> | 2017-02-25 19:58:29 +0000 |
---|---|---|
committer | Vasil Zlatanov <v@skozl.com> | 2017-02-25 19:58:29 +0000 |
commit | 50e2cd5cb4d87ee54b1bd737ab30f98f831e6a7f (patch) | |
tree | 40bc3587a54ae215e73b56b581706070302d74a5 | |
parent | 3cf86838be8a410e3bf70d450d50db3d799026e9 (diff) | |
download | e2-matlab-50e2cd5cb4d87ee54b1bd737ab30f98f831e6a7f.tar.gz e2-matlab-50e2cd5cb4d87ee54b1bd737ab30f98f831e6a7f.tar.bz2 e2-matlab-50e2cd5cb4d87ee54b1bd737ab30f98f831e6a7f.zip |
working solution for ex4
-rw-r--r-- | coursework17/ex4.m | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/coursework17/ex4.m b/coursework17/ex4.m new file mode 100644 index 0000000..c3ec32d --- /dev/null +++ b/coursework17/ex4.m @@ -0,0 +1,50 @@ +% Coursework 17 Q4 +% Using dx and dt as h and k are confusing +% h = dx +% k = dt + +dx = input('Input position step (for example 0.01): '); % play about with this to get resolution + +% Calulate maximum dt to maintain stability, based on the tailor expansion. +dt = dx^2/2; + +tfin = input('Input the time you wawnt to end the simulation (for example 0.1): '); + +lines = input('How many lines across the time range would you like to plot (for example 10): '); + +% v = dx/(dt^2); %redundant + +% Create x and t for plotting in the array +x = 0:dx:1; +t = 1:dt:tfin+1; + +% Initialization of temperature matrix advancing in time (rows) and space (columns) +u = zeros(length(t),length(x)); +u(1,:) = 0; +u(1,length(x)) = 0; + +% Initial condition +for i = 1:length(x) + if x(i) <= 0.5 + u(1,i) = 2*x(i);; + else + u(1,i) = 2*(1-x(i)); + end +end + + +for m = 1:length(t) + % Set boundaries + u(m+1,1) = 0; + u(m+1,length(x)) = 0; + for j = 2:(length(x)-1) + % multiply out (1-2v) and factorise out v + u(m+1,j) = u(m,j) + ((dt/(dx^2))*(u(m,j+1) - 2*u(m,j) + u(m,j-1))); + end +end + +figure; +hold on; +for i = 1:round(length(t)/lines):length(t) + plot(x,u(i,:),'.'); +end |