13/11/2017, 17:54
m=100;
h=(1-eps)/(m-1);
x=linspace(0+eps,1,m)';
%matrici di discretizzazione + boundary conditions
D2 = toeplitz(sparse([1,1],[1,2],[-2,1]/(h^2),1,m));
D1 = toeplitz(sparse(1,2,-1/(2*h),1,m), sparse(1,2,1/(2*h),1,m));
I=speye(m);
D2(1,1:2)=[0,2/(h^2)];
D1(1,2)=0;
I(1,1)=0;
b=zeros(m,1);
b(1,1)= 1 -2/h^2 - cos(1);
%funzione
Fun=@(u) D2*u + spdiags(1./x,0,m,m)*(D1*u) - cos(I*u) + b;
Jac=@(u) D2 + spdiags(1./x,0,m,m)*D1 + diag(sin(I*u));
%newton
u0=ones(m,1); %guess iniziale
tol=1e-10;
maxit=200;
u=u0;
delta=-Jac(u)\Fun(u);
i=0;
%Newton per sistemi NON-LINEARI
while(norm(delta,inf)>tol && i<maxit)
i=i+1;
u=u+delta;
delta=-Jac(u) \ Fun(u);
end
u=u+delta;
plot(x,u,'*')
14/11/2017, 09:54
feddy ha scritto:Poiché ho condizioni di Neumann sul primo nodo e sempre sullo stesso ho una di Dirichlet,
feddy ha scritto: ho pensato di porre $u_1=1$, in quanto $y(0)=1$, e poi utilizzare un ghost node $u_0$ per discretizzare la derivata prima.
In sostanza, detto $h$ il passo di discretizzazione, ho $y'(0)=(u_2-u_0) / (2h) = 0$, da cui $u_0=u_2$.
14/11/2017, 10:48
D2 = toeplitz(sparse([1,1],[1,2],[-2,1]/(h^2),1,m));
D1 = toeplitz(sparse(1,2,-1/(2*h),1,m), sparse(1,2,1/(2*h),1,m));
F(u)= D2*u + spdiags(1./x,0,m,m)*(D1*u) - cos(I*u) + b
Jac(u)= D2 + spdiags(1./x,0,m,m)*D1 + diag(sin(I*u))
14/11/2017, 12:35
14/11/2017, 20:26
14/11/2017, 22:32
feddy ha scritto:ho pensato di porre $u_1=1$, in quanto $y(0)=1$, e poi utilizzare un ghost node $u_0$ per discretizzare la derivata prima.
feddy ha scritto:Scusa ma non mi pare di aver aggiunto nulla.
feddy ha scritto:Ad ogni modo, ho posto $ u_1=1 $. Questo viene dalla condizione $ u_1=1 $. Sono abbastanza certo di questo procedimento
14/11/2017, 22:58
Scusa ma ho scritto questo post dopo una giornata intera di studio e evidentemente sono fuso.Raptorista ha scritto:Comunque,
feddy ha scritto: Ad ogni modo, ho posto u1=1. Questo viene dalla condizione u1=1. Sono abbastanza certo di questo procedimento
Non fa una piega.
15/11/2017, 10:03
23/11/2017, 15:48
24/11/2017, 12:05
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.