| [vnwrmsresult,n,v,w]=vnwrms(n,v,w); |
function [vnwrmsresult,n,v,w]=vnwrms(n,v,w);
vnwrmsresult=[];
persistent i summlv ;
;
%***BEGIN PROLOGUE VNWRMS
%***SUBSIDIARY
%***PURPOSE Subsidiary to DEBDF
%***LIBRARY SLATEC
%***TYPE SINGLE PRECISION (VNWRMS-S, DVNRMS-D)
%***AUTHOR (UNKNOWN)
%***DESCRIPTION
%
% VNWRMS computes a weighted root-mean-square vector norm for the
% integrator package DEBDF.
%
%***SEE ALSO DEBDF
%***ROUTINES CALLED (NONE)
%***REVISION HISTORY (YYMMDD)
% 800901 DATE WRITTEN
% 890531 Changed all specific intrinsics to generic. (WRB)
% 890831 Modified array declarations. (WRB)
% 891214 Prologue converted to Version 4.0 format. (BAB)
% 900328 Added TYPE section. (WRB)
%***end PROLOGUE VNWRMS
%
%
%LLL. OPTIMIZE
%-----------------------------------------------------------------------
% THIS FUNCTION ROUTINE COMPUTES THE WEIGHTED ROOT-MEAN-SQUARE NORM
% OF THE VECTOR OF LENGTH N CONTAINED IN THE ARRAY V, WITH WEIGHTS
% CONTAINED IN THE ARRAY W OF LENGTH N..
% VNWRMS = SQRT( (1/N) * SUM( V(I)/W(I) )**2 )
%-----------------------------------------------------------------------
if isempty(i), i=0; end;
if isempty(summlv), summlv=0; end;
v_shape=size(v);v=reshape(v,1,[]);
w_shape=size(w);w=reshape(w,1,[]);
%***FIRST EXECUTABLE STATEMENT VNWRMS
summlv = 0.0e0;
for i = 1 : n;
summlv = summlv +(v(i)./w(i)).^2;
end; i = fix(n+1);
vnwrmsresult = sqrt(summlv./n);
%----------------------- end OF FUNCTION VNWRMS ------------------------
v_shape=zeros(v_shape);v_shape(:)=v(1:numel(v_shape));v=v_shape;
w_shape=zeros(w_shape);w_shape(:)=w(1:numel(w_shape));w=w_shape;
csnil=dbstack(1); csnil=csnil(1).name(1)~='@';
if csnil&&~isempty(inputname(3)), assignin('caller','FUntemp',w); evalin('caller',[inputname(3),'=FUntemp;']); end
if csnil&&~isempty(inputname(2)), assignin('caller','FUntemp',v); evalin('caller',[inputname(2),'=FUntemp;']); end
if csnil&&~isempty(inputname(1)), assignin('caller','FUntemp',n); evalin('caller',[inputname(1),'=FUntemp;']); end
end
%DECK WNLIT
|
|