Mercurial > hg > what-is-octave
view PoliMI2012/examples/parcellfun_example.m @ 4:0a1567794b40
[mq]: folder_reorganization
author | Carlo de Falco <cdf@users.sourceforge.net> |
---|---|
date | Thu, 08 Nov 2012 09:55:34 +0100 |
parents | |
children |
line wrap: on
line source
## Copyright (C) 2011 Carlo de Falco ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. ## Author: Carlo de Falco <carlo@guglielmo.local> ## Created: 2011-12-24 %% you need at least version 3.4 of Octave to run this script clear all close all %% uncomment the following line if you don't have the required packages installed %% pkg install -forge general bim fpl msh splines pkg load general bim fpl msh splines %%%%%%%%%%%%%%%%%%%%% %%% SERIAL VERSION %%%%%%%%%%%%%%%%%%%%% tic (); nel = 100; U0 = randn (200, 1); us = zeros (101, 200); for ii=1:numel (U0) x = transpose (linspace (0, 1, nel+1)); A = bim1a_laplacian (x, 1, 1); b = bim1a_rhs (x, 1, 1); us(:,ii) = zeros (size (x)); us(1,ii) = U0(ii); res = @(X) A(2:end-1, 2:end-1) * X - (b(2:end-1) - A(2:end-1, [1 end]) * us([1 end], ii)); us(2:end-1,ii) = fsolve (res, us(2:end-1,ii)); endfor toc () %%%%%%%%%%%%%%%%%%%%% %%% PARALLEL VERSION %%%%%%%%%%%%%%%%%%%%% %% solve - u'' + exp (u) = 1 in (0, 1) with u(0)=u0 and u(1)=0 function u = poisson1d (u0) nel = 100; x = transpose (linspace (0, 1, nel+1)); A = bim1a_laplacian (x, 1, 1); b = bim1a_rhs (x, 1, 1); u = zeros (size (x)); u(1) = u0; res = @(X) A(2:end-1, 2:end-1) * X - (b(2:end-1) - A(2:end-1, [1 end]) * u([1 end])); u(2:end-1) = fsolve (res, u(2:end-1)); endfunction tic (); U0 = num2cell (randn (1, 200)); up = parcellfun (2, @poisson1d, U0, "UniformOutput", true, "VerboseLevel", 2); toc () %subplot (1, 2, 1) %plot (x, us) %subplot (1, 2, 2) %plot (x, up)