17/07/2019, 15:53
function shooting_method
clc
clear all
close all
global a h E v q D
a=12;
h=0.1;
E=200000;
v=0.3;
q=20;
D=E*h^3/12/(1-v^2);
x=[0 0];
options=optimset('Display','iter');
x1=fsolve(@solver,x)
end
function F=solver(x)
global a h E v q D
%options=odeset('RelTol', 1e-08, 'AbsTol', [1e-08 1e-08 1e-08 1e-08 1e-08]);
[t,u]=ode(@equation, [a 0.01], [0 0 x(1) 0 x(2)]);
s=length(t);
F=[ abs( u(s,2) ) , abs( u(s,4) ) ]
clf
plot(t,u(:,1),'-or')
xlabel(' r[mm] ');
ylabel(' dy [mm] ');
end
function dy=equation(r,y)
global a h E v q D
dy=zeros(5,1);
dy(1)=y(2);
dy(2)=y(3);
dy(3)=-y(3)/r+y(2)/r^2+12/h^2*y(2)*( y(5)+v*y(4)/r+0.5*y(2)^2 )+q*r/2/D;
dy(4)=y(5);
dy(5)=-y(5)/r+y(4)/r^2-(1-v)/2/r*y(2)^2-y(2)*y(3);
end
function shooting_method
clc
clear all
x=0.5;
display('La condizione iniziale equivalente vale')
x1=fzero(@solver,x)
end
function F=solver(x)
options=odeset('RelTol', 1e-08, 'AbsTol', [1e-08, 1e-08]);
a=1;
b=3;
y0=[17 x];
[t,u]=ode45(@equation, [a b], y0, options);
s=length(t);
F=u(s,1)-43/3;
figure(1)
clf
plot(t,u(:,1),'-*r') % plot della soluzione numerica
hold on
plot(t,(t.^2+16./t),'-b') % plot della soluzione esatta
end
function dy=equation(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1/8.*( 32+2.*t.^3-y(1).*y(2) );
end
18/07/2019, 10:17
Zurtolo ha scritto:* r è la variabile dipendente
Zurtolo ha scritto:L'integrazione deve avvenire sull'intervallo [a b], dove:
*a=12
*b=0
Zurtolo ha scritto:Con le seguenti condizioni al contorno:
*w(r=a)=0
*w'(r=a)=0
*w'(r=0)=0
*u(r=a)=0
*u'(r=0)=0
(Tali condizioni fisicamente rappresentano un'incastro.)
18/07/2019, 16:52
19/07/2019, 17:31
19/07/2019, 17:57
Zurtolo ha scritto: $ y'(1)=y(2) $
$ y'(2)=y(3) $
$ y'(3)=-(y(3))/r+(y(2))/r^2+12/h^2*y(2)*( y(5)+v*(y(4))/r+0.5*y(2)^2 )+(q*r)/(2*D) $
$ y'(4)=y(5) $
$ y'(5)=-(y(5))/r+(y(4))/r^2-(1-v)/(2r)*y(2)^2-y(2)*y(3) $
Zurtolo ha scritto:Non c'è un motivo per cui voglio usare il metodo di shooting se non che essendo un sistema di equazioni differenziali potevo appoggiarmi ai solutori ODE. Qualsiasi metodo che mi permetta di scrivere un solutore "mio" è ben accetto. Sul libro di Calcolo c'è scritto come fare nel caso di una equazione ma nel caso di un sistema come mi devo muovere? Dovrei prima ricondurmi ad un sistema con due equazioni dello stesso grado?
Zurtolo ha scritto:Per prendere la strada delle differenze finite come devo impostare le equazioni? Ho chiaro come si fa nel caso di una singola equazione ma per un sistema? Devo scalarle allo stesso ordine e scriverle in forma vettoriale?
22/07/2019, 08:31
22/07/2019, 10:45
22/07/2019, 13:57
22/07/2019, 14:03
Zurtolo ha scritto:*Non devo creare alcuna matrice come diciamo nel caso classico delle differenze finite (es. problema di Poisson)
Zurtolo ha scritto:**Per quantor riguarda i nodi "interni". Devo trovare la soluzione per il nodo i-esimo. Ho disponibili le soluzioni al nodo i-1 e i-2 e risolvendo il sistema (non lineare) formato dalle formule "incrementali" che ho trovato nella mia precedente risposta, trovo i valori di u e di z al nodo i.
Zurtolo ha scritto:***Per i valori al bordo non ho capito invece come devo fare...
25/07/2019, 12:38
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.