Advertisement
Guest User

Untitled

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