Advertisement
cybereq

zad1

Oct 25th, 2023
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.70 KB | None | 0 0
  1. %%
  2. clc;
  3. clear all;
  4. i=100;
  5. a=-1;
  6. b=2;
  7. x=linspace(a,b,i);
  8. e=10^(-3);
  9. for j=1:i
  10.     xm=(a+b)/2;
  11.     fxm = funkcja(xm);
  12.     L=b-a;
  13.     x1=a+L/4;
  14.     fx1=funkcja(x1);
  15.     x2=b-L/4;
  16.     fx2=funkcja(x2);
  17.    if fx1 < fxm
  18.        b=xm;
  19.        xm=x1;
  20.    elseif fx2 < fxm
  21.        a=xm;
  22.        xm=x2;
  23.    else
  24.        a=x1;
  25.        b=x2;
  26.    end
  27.    if abs(b-a)<e;
  28.        break
  29.    end
  30. end
  31. figure(1);
  32. plot(x,funkcja(x));hold on;
  33. plot(a,funkcja(a),'X');
  34.  
  35. %%
  36. i=100;
  37. a=-1;
  38. b=2;
  39. x=linspace(a,b,i);
  40. e=10^(-3);
  41. q=(3-sqrt(5))/2;
  42. for j=1:i
  43.     fa=funkcja(a);
  44.     fb=funkcja(b);
  45.     if fa<fb
  46.         b=a+q*(b-a);
  47.         fb=funkcja(b);
  48.     elseif fa>fb
  49.         a=a+(1-q)*(b-a);
  50.         fa=funkcja(a);
  51.     else
  52.         a=a+(1-q)*(b-a);
  53.         b=a+q*(b-a);
  54.         fa=funkcja(a);
  55.         fb=funkcja(b);
  56.     end
  57.     if abs(b-a)<e
  58.         j=i;
  59.        break
  60.     end
  61. end
  62.  
  63. figure(2);
  64. plot(x,funkcja(x));hold on;
  65. plot(a,funkcja(a),'X');
  66.        
  67. %%
  68. i=100;
  69. a=-1;
  70. b=2;
  71. x=linspace(a,b,i);
  72. e=10^(-3);
  73. F(1)=0; F(2)=1;
  74. L=b-a;
  75. f=(1+2*e)*(L/e);
  76. for j=3:i
  77.     F(j)=F(j-1)+F(j-2);
  78.     if F(j)>f
  79.         break;
  80.     end
  81. end
  82. for n=3:i
  83.     fa=funkcja(a);
  84.     fb=funkcja(b);
  85.     r=1-((F(j-n+1))/(F(j-n+2)));
  86.     if fa<fb
  87.         b=a+(1-r)*(b-a);
  88.         fb=funkcja(b);
  89.     elseif fa>fb
  90.         a=a+r*(b-a);
  91.         fa=funkcja(a);
  92.     else
  93.         a=a+r*(b-a);
  94.         b=a+(1-r)*(b-a);
  95.         fa=funkcja(a);
  96.         fb=funkcja(b);
  97.     end
  98.     if j==n;
  99.         break
  100.     else
  101.         i=i+1;
  102.        break
  103.     end
  104. end
  105.  
  106. figure(3);
  107. plot(x,funkcja(x));hold on;
  108. plot(a,funkcja(a),'X');
  109.  
  110.        
  111. function [funkcja] = funkcja(x)
  112. funkcja=-(1./((x-0.3).^2+0.01))-(1./(((x-0.9).^2)+0.04))+6;
  113. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement