function shooting(Nx,zstart,deltaz,Nz) % % Belövéses módszer (shooting method) egy L hosszúságú rúd stacionárius % hőeloszlásának kiszámítására. Ez a % megoldását igényli: % % d^2 T % ----- + c (Tinf - T) = 0 % dx^2 %típusú kétpontos peremérték feladatok megoldását igénylo, amelyet a bvps %nevű rutin hajt végre. %Nx: a térbeli osztásrészek száma %zstart: a kezdeti meredekseg erteke % deltaz: az interpoklalacioho szukseges z megvaltozasa % Nz: hany lépést számoljon egy iranyban az interpolációnál Ta = 300; % bal oldali végponteli peremfeltétel Tb = 400; % jobb oldali végponteli peremfeltétel Tinf = 200; % külső hőmérséklet c = 0.05; % állandó L = 10; % a rúd hossza xs = 0; % kezdő pont koordinátája T = Ta; % kezdeti feltétel deltax=L/Nx; zv(Nz+1)=zstart; z=zv(Nz+1); [T,Tvect,xvect]=bvps(Nx,z);Tvegpont(Nz+1)=T; for i=1:Nz zv(i)=zstart-(Nz+1-i)*deltaz; z=zv(i); [T,Tvect,xvect]=bvps(Nx,z);Tvegpont(i)=T; zv(Nz+1+i)=zstart+i*deltaz; z=zv(Nz+1+i); [T,Tvect,xvect]=bvps(Nx,z);Tvegpont(Nz+1+i)=T; end for i=1:2*Nz+1 Tvegpont(i); zv(i); end % A gyök megkeresésére az inverz interpolációt alkalmazzuk. Tint=Tvegpont-Tb; z=interp1(Tint,zv,0); fprintf('A meredekség: %f\n',z) % disp('ellenőrzés: z és Nx') % z,Nx % pause [Tfinal,Tvect,xvect]=bvps(Nx,z) %[Tfinal,Tvect,xvect]=bvps(5,-13.2075) pause Meg=ones(Nx+1,3); for i=1:Nx+1 Meg(i,1)=i; Meg(i,2)=xvect(i); Meg(i,3)=Tvect(i); end disp(' csomópont koordin. hőmérséklet') disp(Meg) %plot(xvect,Tvekfinal); lambda=sqrt(c); s1=exp(lambda*L); s2=1/s1; szam1=(Ta-Tinf)*s2-(Tb-Tinf); nev=s2-s1; szam2=-(Ta-Tinf)*s1+(Tb-Tinf); A=szam1/nev; B=szam2/nev; [Tpontos,zpontos]=pontosshooting(Nx,xvect,A,B); hiba=norm(Tvect-Tpontos,inf); disp('lépésköz és hiba max. normában:'),deltax, hiba disp('a meredekség hibája :'),abs(z-zpontos) i=1:Nx+1; plot(i,Tvect,'r', i, Tpontos,'b') xlabel('rúd'), ylabel('belövéses módszer (piros), pontos megoldás (kék)')