%%
%% Listing 13.2 w książce "Obliczenia inżynierskie i naukowe", PWN 2011
%% (C) Piotr Krzyżanowski, 2011
%%
%% Możesz używać tego kodu zgodnie z licencją Creative Commons BY-SA, 
%% zob. http://creativecommons.org/licenses/by-sa/3.0/pl/
%%

% tworzymy dyskretyzację skalarnego pola 3-wymiarowego opisanego poniższą funkcją;

global L;
global fac;
L = 10;
fac = 0.3;

% MATLAB wymaga zdefiniowania funkcji w osobnym pliku 
% lub konstrukcji funkcji anonimowej
function t = temperatura(x,y,z)
global L;
global fac;
	r = sqrt(x.^2 + y.^2 + z.^2);
	t = log((r-L).^4).*( r > L*fac ) + 2*ones(size(r)).*( r <= L*fac ) ;
end

% siatka losowa, N punktów o współrzędnych (X,Y,Z)
N = 2500;

X = (2*L)*rand(N,1) - L;
Y = (2*L)*rand(N,1) - L;
Z = (2*L)*rand(N,1) - L;

T = temperatura(X,Y,Z);

% plik z danymi w kolejnych wierszach zawiera współrzędne danego punktu i jego temperaturę

dane = [X Y Z T];

save -ascii 'T.txt' dane
