Advertisement
makispaiktis

Texnikes_Ergasia1_Thema3_Zitoumeno2

Nov 17th, 2020 (edited)
1,063
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.01 KB | None | 0 0
  1. clear all
  2. clc
  3.  
  4. % Θα φτιάξω έναν πίνακα με τις εξής 3 τιμές του l
  5. l(1) = 0.0001;
  6. l(2) = 0.001;
  7. l(3) = 0.01;
  8. akro1 = 2;
  9. akro2 = 5;
  10. for index = 1:length(l)
  11.     plotAkrwn(l(index), index, akro1, akro2);
  12. end
  13.  
  14.  
  15.  
  16. % ********************************************
  17. % ************** Main Function ***************
  18. % ********************************************
  19. function akra = plotAkrwn(l, index, akro1, akro2)
  20.     l
  21.     n = findN(l, akro1, akro2)
  22.     syms x
  23.     f = (x-2)^2-sin(x+3);
  24.     a = [];         b = [];             % Οι λίστες με τα άκρα ak, bk
  25.     x1 = [];            x2 = [];
  26.     calculations = 0;
  27.     bima2 = -1000;      bima3 = -1000;
  28.    
  29.     for k = 1:1:n-2
  30.         a(k) = akro1;
  31.         b(k) = akro2;
  32.         x1(k) = a(k) + F(n-k-1)/F(n-k+1) * (b(k)-a(k));
  33.         x2(k) = a(k) + F(n-k)/F(n-k+1) * (b(k)-a(k));
  34.        
  35.         if k == 1
  36.             value1 = subs(f, x1(k));
  37.             value2 = subs(f, x2(k));
  38.             calculations = calculations + 2;
  39.             if value1 > value2
  40.                 bima2 = 1;
  41.                 bima3 = 0;
  42.             else
  43.                 bima3 = 1;
  44.                 bima2 = 0;
  45.             end
  46.            
  47.         elseif k > 1
  48.             if bima2 == 1
  49.                 % Σημαίνει ότι akro1,neo = x1,prin, .....
  50.                 a(k) = x1(k-1);
  51.                 b(k) = b(k-1);
  52.                 x1(k) = x2(k-1);
  53.                 x2(k) = a(k) + F(n-k)/F(n-k+1) * (b(k)-a(k));
  54.                 calculations = calculations + 1;
  55.                 value1 = subs(f, x1(k));
  56.                 value2 = subs(f, x2(k));
  57.                 if value1 > value2
  58.                     bima2 = 1;
  59.                     bima3 = 0;
  60.                 else
  61.                     bima3 = 1;
  62.                     bima2 = 0;
  63.                 end
  64.             elseif bima3 == 1
  65.                 a(k) = a(k-1);
  66.                 b(k) = x2(k-1);
  67.                 x1(k) = a(k) + F(n-k-1)/F(n-k+1) * (b(k)-a(k));
  68.                 x2(k) = x1(k-1);
  69.                 calculations = calculations + 1;
  70.                 value1 = subs(f, x1(k));
  71.                 value2 = subs(f, x2(k));
  72.                 if value1 > value2
  73.                     bima2 = 1;
  74.                     bima3 = 0;
  75.                 else
  76.                     bima3 = 1;
  77.                     bima2 = 0;
  78.                 end
  79.             end
  80.         end
  81.         % k
  82.         % a(k)
  83.         % b(k)
  84.         % x1(k)
  85.         % x2(k)
  86.        
  87.     end         % End of for-loop (k=1,2,3,....,n-2)
  88.     a
  89.     b
  90.     % x1
  91.     % x2
  92.     % calculations
  93.    
  94.     % ************************************************
  95.     % ***********************************************
  96.     % Πλοτάρισμα
  97.     if index == 1
  98.         plot([1:1:k], a, 'ro');
  99.         hold on
  100.         plot([1:1:k], b, 'bo');
  101.         hold on
  102.     elseif index == 2
  103.         plot([1:1:k], a, 'r^');
  104.         hold on
  105.         plot([1:1:k], b, 'b^');
  106.         hold on
  107.     else
  108.         plot([1:1:k], a, 'rx');
  109.         hold on
  110.         plot([1:1:k], b, 'bx');
  111.         hold on
  112.     end
  113.     title("f1: Edges a,b for l={1,10,100}/10000");
  114.     xlabel('Steps k');
  115.     ylabel('Edges ak and bk');
  116.     display('***********************************************');
  117.     display(' ');
  118. end
  119.  
  120.  
  121.  
  122.  
  123. % ********************************************
  124. % **************** Function 1 ****************
  125. % ********************************************
  126. function answer = F(n)
  127.     if n == 0
  128.         answer = 1;
  129.     elseif n == 1
  130.         answer = 1;
  131.     elseif n == 2
  132.         answer = 2;
  133.     else
  134.         Fibo(1) = 1;
  135.         Fibo(2) = 2;
  136.         for i = 3:1:n
  137.             Fibo(i) = Fibo(i-1) + Fibo(i-2);
  138.         end
  139.         answer = Fibo(n);
  140.     end    
  141. end
  142.  
  143.  
  144. % ********************************************
  145. % **************** Function 2 ****************
  146. % ********************************************
  147. function result = findN(l, akro1, akro2)
  148.     orio = (akro2 - akro1) / l;
  149.     n = 2;
  150.     while F(n) <= orio
  151.         n = n+1;
  152.     end
  153.     result = n;
  154. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement