Advertisement
Guest User

Untitled

a guest
Apr 18th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.03 KB | None | 0 0
  1. function [valp vecp] = PutereInv(d, s, h, y, maxIter, tol)
  2.  
  3.   a = s;
  4.  
  5.   n = length(d);
  6.  
  7.   for k = 1:maxIter
  8.  
  9.   maxiter = 0;
  10.  
  11.   ++maxiter
  12.   daux = d .- h;
  13.   saux = zeros(1, length(s));
  14.  
  15.    saux(1) = s(1)/daux(1);
  16.    y(1) = y(1)/daux(1);
  17.  
  18.    
  19.    for i = 2:n-1
  20.     t = daux(i) - a(i-1)*s(i-1);
  21.     saux(i) = saux(i)/t;
  22.     y(i) = (y(i) - y(i-1)*a(i-1))/t;
  23.    endfor
  24.    
  25.    y(n) = (y(n) - y(n-1)*a(n-1))/t;
  26.    
  27.    z(n) = y(n);
  28.    
  29.    for i = n-1:-1:1
  30.     z(i) = y(i) - saux(i)*z(i+1);
  31.    endfor
  32.    
  33.    vecp = z/norm(z);
  34.    
  35.    valp = 0;
  36.    for i = 1:n
  37.     valp += (vecp(i)^2)*d(i);
  38.    endfor
  39.    
  40.    for i = 1:n-1
  41.     valp += 2*(vecp(i)*vecp(i+1)*saux(i));
  42.    endfor
  43.    
  44.    temp = zeros(n, 1);
  45.    
  46.    temp(1) = d(1)*vecp(1) + s(1)*vecp(2);
  47.    temp(n) = s(n-1)*vecp(n-1) + d(n)*vecp(n);
  48.    
  49.    for i = 2:n-1
  50.     temp(i) = s(i-1)*vecp(i-1) + vecp(i)*d(i) + s(i)*vecp(i+1);
  51.    endfor
  52.    
  53.    if(norm(temp - valp*vecp) < tol)
  54.     break;
  55.    endif
  56.    
  57.    h = valp;
  58.  
  59.   endfor
  60.  
  61. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement