Programación en MATLAB y obtención de gráficas en 2D
Tengo el siguiente código en MATLAB el cual modelo un esquema de diferencias finitas 2D. Por lo que obtengo superficies como graficación y el contourplot de estar observando el comportamiento a través del tiempo. Deseo obtener gráficas de (x, y) de u(t) y v(t) es decir, las gráficas de "u" y "v" con respecto del tiempo... Algo como así
Agrego el código:
% Modelo de Sel'kov 2D utilizando un esquema FTCS de diferencias finitas function []=RDzeroux(~,~,~) clear all close all % Llenado del mallado N = 100; h = 1/N; % Tamaño de paso de x y y x = h.*(0:N); % Coordenadas del mallado en x y = h.*(0:N); % Coordenadas del mallado en y [xx,~] = meshgrid(x,y); % Coordenadas x e y en 2D dt = 10.*h;%0.8.*h.^2; % tamaño de paso temporal (usualmente pequeño) % Valores de los parámetros a = 0; %0; %0.08; b = 0.9502; %0.6; %0.9502; Du = 0.0002; Dv = 0.0001; % Initial data at t=0: % us = (a+b); % u steady state % vs = b/us^2; % v steady state % u = (a+b)*ones(size(xx)); % u steady state % v = (b./u.^2); % v steady state u = b.*ones(size(xx)) + 0.01.*randn(size(xx)); % Pequeñas perturbaciones cercas del estado estable v = b./(a+b).^2.*ones(size(xx)) + 0.01.*randn(size(xx)); t = 0; tmax = 1; fig = figure('position',[100 100 850 600]); nsteps = round(tmax/dt); % número de pasos vidObj = VideoWriter('Selkov2Datro.avi'); vidObj.Quality = 100; vidObj.FrameRate = 10; open(vidObj); for n = 1:nsteps t = t+dt; uE = u(:,[2:N+1 N]); uW = u(:,[2 1:N]); uN = u([2 1:N],:); uS = u([2:N+1 N],:); vE = v(:,[2:N+1 N]); vW = v(:,[2 1:N]); vN = v([2 1:N],:); vS = v([2:N+1 N],:); % Squema FTSC u2v = u.^2.*v; u = u + dt*(a.*v - u + u2v) + Du*dt*(uE+uW+uN+uS-4*u)/h^2; v = v + dt*(b - a.*v- u2v) + Dv*dt*(vE+vW+vN+vS-4*v)/h^2; subplot(1,2,1) p = pcolor(x, y, u); title(['t=', num2str( t ), ' ATP(u)']); colorbar; set(p, 'EdgeColor', 'none', 'FaceColor', 'interp'); subplot(1,2,2) p = pcolor(x, y, v); title(['t=', num2str( t ), ' ADP(v)']); colorbar; set(p, 'EdgeColor', 'none', 'FaceColor', 'interp'); % plot(x,u,'g.-', 'linewidth',1); % hold on; % plot(x,v,'r.-', 'linewidth',1); % hold off; % legend('ATP','ADP') % axis([0 1 0 2]) % title(['t = ', num2str(t)],'fontsize',24) % drawnow; % tmax % t writeVideo(vidObj, getframe(fig));%gca)); end close(gcf) close(vidObj); winopen('Selkov2Datro.avi') % Graficas solución figure(1); s = surf(x,y,u); set(s, 'EdgeColor', 'none', 'FaceColor', 'interp'); title(['u en t = ' num2str(t)],'fontsize',16) xlabel('<----x---->') ylabel('<----y---->') zlabel('<----t---->') figure(2) s = surf(x,y,v); set(s, 'EdgeColor', 'none', 'FaceColor', 'interp'); title(['v en t = ' num2str(t)],'fontsize',16) xlabel('<----x---->') ylabel('<----y---->') zlabel('<----t---->') figure(3); p = pcolor(x, y, u); colorbar; set(p, 'EdgeColor', 'none', 'FaceColor', 'interp'); figure(4); q = pcolor(x, y, v); colorbar; set(q, 'EdgeColor', 'none', 'FaceColor', 'interp');