1 svar
66 visningar
Maja9999 behöver inte mer hjälp
Maja9999 503
Postad: 17 maj 20:49

Värmeledningsekvation analytiskt


T = 0.01;
dt = 10^(-5); 
N = 100;
dx = 1/N;
D = 1;
TL = 0;
TR = 0;
B = D * dt / dx^2;

t = (0:dt:T)';
w0 = zeros(N,1);
w1 = zeros(N,1);
%g = zeros(N,1);
    
for j = 1:length(t)

for i = 2:N-1
    x = (i-1) * dx; 
    w0(i) = sin(5*pi*x);
 
  w1(i-1) = w0(i-1);
  w1(i) = w0(i);
  w1(i+1) = w0(i+1);
  
end 
  
       
   A = B * diag(ones(N - 1, 1), -1) + (1 - 2 * B) * diag(ones(N, 1)) + B * diag(ones(N - 1, 1), 1);

    v = A\w1;

    w1(1) = TL;
    w1(N) = TR;
    w0 = w1;
   
    
end


%analytisk 
U = zeros(N, 1);

for k = 1:length(t)
        t = k * dt;

    for n = 1:N
    x = (n - 1) * dx;

        Hn = 2 * integral(@(x) sin(5 * pi * x) .* sin(n * pi * x), 0, 1);
        U(n, k) = Hn * exp(-D * n^2 * pi^2 * t) * sin(n * pi * x);
        Uvek =  reshape(U, [], 1);
        Uvek2 = Uvek(1:length(v));
    end

end

figure;


plot((1:N)*dx, v, 'r', (1:N)*dx, Uvek2, 'b');


xlabel('Stångens längd');
ylabel('Temperatur');
title('Värmeledningsekvation');




Detta är en kod för värmeledningsekvationen där u(x,0)=f(x)=sin(5*pi*x)

Plotten till den analytiska lösningen känns fel, så jag undrar om jag har gjort den analytiska beräkningen samt kodat den rätt?

CurtJ 1201
Postad: 18 maj 13:46

Det är svårt att hjälpa dig om man inte vet vad uppgiften är. Jsg gissar att vi behöver veta geometrin och rand-/begynnelsevillkor.

Svara
Close