Merge branch 'master' of https://git.art-ist.cc/daniel/NSSC
This commit is contained in:
		
						commit
						dad2f0151f
					
				
							
								
								
									
										60
									
								
								Exercise_03/calore_CN.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								Exercise_03/calore_CN.m
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					function [x,t,u] = calore_CN(L,N,T,K,c1,c2,f,u0)
 | 
				
			||||||
 | 
					% ----  Risoluzione dell'equazione del calore ----
 | 
				
			||||||
 | 
					%   u_t - u_xx = f nell'intervallo [-L,L] 
 | 
				
			||||||
 | 
					%   con condizioni al bordo di Dirichlet
 | 
				
			||||||
 | 
					%   e condizioni iniziali.
 | 
				
			||||||
 | 
					% -----------------------------------------------
 | 
				
			||||||
 | 
					% Sintassi:
 | 
				
			||||||
 | 
					%   [x,t,u]=calore_template(L,N,T,K,c1,c2,fun,u0)
 | 
				
			||||||
 | 
					%
 | 
				
			||||||
 | 
					% Input:
 | 
				
			||||||
 | 
					%   L semiampiezza intervallo spaziale (-L,L) 
 | 
				
			||||||
 | 
					%	N numero di sottointervalli in (-L,L)
 | 
				
			||||||
 | 
					%   T estremo finale intervallo temporale (0,T)
 | 
				
			||||||
 | 
					%	K numero di sottointervalli in (0,T)
 | 
				
			||||||
 | 
					%   c1 funzione che descrive la condizione di Dirichlet in x=-L
 | 
				
			||||||
 | 
					%   c2 funzione che descrive la condizione di Dirichlet in x=L
 | 
				
			||||||
 | 
					%   f funzione che descrive il termine noto dell'equazione
 | 
				
			||||||
 | 
					%   u0 funzione che descrive la condizione iniziale in t=0
 | 
				
			||||||
 | 
					%
 | 
				
			||||||
 | 
					% Output:
 | 
				
			||||||
 | 
					%   x vettore dei nodi spaziali
 | 
				
			||||||
 | 
					%   t vettore dei nodi temporali
 | 
				
			||||||
 | 
					%   u soluzione numerica 
 | 
				
			||||||
 | 
					%     del problema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Calcolo passo di discretizzazione in spazio e tempo
 | 
				
			||||||
 | 
					h=2*L/N;
 | 
				
			||||||
 | 
					tau=T/K;
 | 
				
			||||||
 | 
					% Inizializzazione del vettore t
 | 
				
			||||||
 | 
					t=linspace(0,T,K+1)';
 | 
				
			||||||
 | 
					% Inizializzazione del vettore x
 | 
				
			||||||
 | 
					x=linspace(-L,L,N+1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Inizializzazione della matrice soluzione u
 | 
				
			||||||
 | 
					u=zeros(N+1,K+1);
 | 
				
			||||||
 | 
					% Condizione iniziale
 | 
				
			||||||
 | 
					u(:,1)=u0(x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Condizioni al bordo
 | 
				
			||||||
 | 
					u(1,:)=c1(t);
 | 
				
			||||||
 | 
					u(end,:)=c2(t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Costruzione della matrice A
 | 
				
			||||||
 | 
					e=ones(N-1,1);
 | 
				
			||||||
 | 
					A=spdiags([-e,2*e,-e],[-1,0,1],N-1,N-1)/(h^2);
 | 
				
			||||||
 | 
					I=speye(N-1,N-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Ciclo iterativo
 | 
				
			||||||
 | 
					for k=1:K
 | 
				
			||||||
 | 
					    % Assemblaggio termine noto
 | 
				
			||||||
 | 
					    F1=f(x(2:end-1),t(k));
 | 
				
			||||||
 | 
					    F2=f(x(2:end-1),t(k+1))
 | 
				
			||||||
 | 
					    % Correzione del termine noto con le condizioni al bordo
 | 
				
			||||||
 | 
					    F1(1)=F1(1) + c1(t(k))/(h^2);
 | 
				
			||||||
 | 
					    F1(end)=F1(end) + c2(t(k))/(h^2);
 | 
				
			||||||
 | 
					    F2(1)=F2(1) + c1(t(k+1))/(h^2);
 | 
				
			||||||
 | 
					    F2(end)=F2(end) + c2(t(k+1))/(h^2);
 | 
				
			||||||
 | 
					    % Risoluzione del problema
 | 
				
			||||||
 | 
					    u(2:end-1,k+1) = ((I + 0.5*tau*A)\((I - 0.5*tau*A)*u(2:end-1,k)))' + 0.5*tau*F1 + 0.5*tau*F2;
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Exercise_03/image.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Exercise_03/image.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user