Contents

%function u=lampodiffE(r)

Lämpöyhtälö differenssimenetelmällä, Eksplsiittinen

%lampodiffE.m
% Sauva olkoon 1:n pituinen
% Esim: u_t=u_xx,
% alkuehto: u(x,0)=f(x)=sin(pi*x),
% 0-reunaehdot.
clear;
close all
n=6; h=1/(n-1)
x=0:h:1;
u0=sin(pi*x);   % Alkuarvot diskretiointipisteissä
h =

    0.2000

Muodostetaan iteraatiomatriisi M

r=0.25   % Varma valinta
%r=0.5;    % Suurin "sallittu"
%r=1;      % Aivan liian suuri
k=r*h^2
Tloppu=0.2;   % Loppuaika
t=0:k:Tloppu;
m=length(t);
u=zeros(n-2,m); % alueen sisällä n-2 x-jakopistettä
u(:,1)= u0(2:n-1)'; % jätetään päätyjen nollat pois
M=lampomatr(n,r)
r =

    0.2500


k =

    0.0100


M =

    0.5000    0.2500         0         0
    0.2500    0.5000    0.2500         0
         0    0.2500    0.5000    0.2500
         0         0    0.2500    0.5000

%Iteroidaan u-matriisin sarakkeiksi eri aikatasot alkaen alkuarvoista u0, jotka
% jo yllä asetettiin sarakkeeksi 1.
for j=1:m-1
   u(:,j+1)= M*u(:,j);
end
 % Liitetään lopuksi matriisin ylle ja
 % alle nollarivi, jotta saadaan reuna-arvotkin mukaan.
nollarivi=zeros(1,m);
u=[nollarivi;u;nollarivi];

Visualisointi

surf(x,t,u'); xlabel('x');ylabel('t'),zlabel('u')
title(['Lämpötilafunktion diffferenssiapproksimaatio',' r=',num2str(r)])
shg
figure
plot(x',u)
grid
xlabel('x');ylabel('u')
title(['Lämpötilan aikasiivujen kuvaajat hetkillä t=0:0.01:',num2str(Tloppu),' r=',num2str(r)])
shg
lampotilat=u'
lampotilat =

         0    0.5878    0.9511    0.9511    0.5878         0
         0    0.5317    0.8602    0.8602    0.5317         0
         0    0.4809    0.7781    0.7781    0.4809         0
         0    0.4350    0.7038    0.7038    0.4350         0
         0    0.3934    0.6366    0.6366    0.3934         0
         0    0.3559    0.5758    0.5758    0.3559         0
         0    0.3219    0.5208    0.5208    0.3219         0
         0    0.2911    0.4711    0.4711    0.2911         0
         0    0.2633    0.4261    0.4261    0.2633         0
         0    0.2382    0.3854    0.3854    0.2382         0
         0    0.2154    0.3486    0.3486    0.2154         0
         0    0.1949    0.3153    0.3153    0.1949         0
         0    0.1763    0.2852    0.2852    0.1763         0
         0    0.1594    0.2580    0.2580    0.1594         0
         0    0.1442    0.2333    0.2333    0.1442         0
         0    0.1304    0.2111    0.2111    0.1304         0
         0    0.1180    0.1909    0.1909    0.1180         0
         0    0.1067    0.1727    0.1727    0.1067         0
         0    0.0965    0.1562    0.1562    0.0965         0
         0    0.0873    0.1413    0.1413    0.0873         0
         0    0.0790    0.1278    0.1278    0.0790         0