Matlab lento
Publicado por Luis Eduardo (2 intervenciones) el 28/01/2017 18:39:32
Tengo problema con este código que corre muy lento.
Yo tengo un macbook pro.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
% Discretizaci?n del problema Dx(a(x,t)DxU(x,t))=DtU(x,t)-f(x,t)
%function [A,f,ateorica,uteorica,fvector,avector,x,t]=calorparabolica
function [A,ateorica,uteorica,fvector,avector,x,t]=calorparabolica
clc; clear
J=64;N=64;
%xn=linspace(0,1,J);
%tn=linspace(0,1,N);
%parpool
xn=linspace(0,1,J*N);
tn=linspace(0,1,N*J);
syms xx tt
us = exp(tt).*sin(pi.*xx);
ps = 40.*xx.^2./(40.*xx.^2+1)+1+0.*tt;
ffs=-diff(ps.*diff(us,xx),xx)+diff(us,tt);
%ezplot(ps,[0,1])
%[xm,tm]=meshgrid(xn,tn);
%xm=xm';
%tm=tm';
x=xn;
t=tn;
%numericos
fn=subs(ffs,{xx,tt},{xn,tn});
un=subs(us,{xx,tt},{xn,tn});
pn = subs(ps,{xx,tt},{xn,tn});
%f=fn;
%plot(pn)
A = zeros(J*N,J*N);
%A = zeros(J+N,J+N);
% pasar a avector las matrices
uu =un(:);
fvector = fn(:);
%avector =pn(:);
avector = pn;
h=1/(J-1);
ateorica = pn;
uteorica = un;
%% Matriz
for i = 1:J*N-2
%for i = 1:J+N
if i == 1 % t < h/2 (0,h/2)
A(i,i:i+1) = [((uu(i+1) - uu(i+2))) (5*uu(i+1) - 2*uu(i+2) - 3*uu(i))]/(h^2);
elseif i == J+N % t > 1-h/2 (1-h/2,1)
A(i,i-1:i) = [(5*uu(i-1) - 2*uu(i-2) - 3*uu(i)) (uu(i-1)-uu(i-2))]/(h^2);
else % h/2 < t < 1-h/2 (h/2,1-h/2)
A(i,i-1:i+1) = [(-uu(i) + uu(i-1)) (uu(i+1)-2*uu(i)+un(i-1)) (uu(i+1)-uu(i))]/(2*h^2);
end
end
aa = pinv(A)*fvector;
%delete(gcp('nocreate'))
plot(aa)
Yo tengo un macbook pro.
Valora esta pregunta


0