Advertisement
mikoflint

Untitled

Nov 23rd, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. function xrez = kubnaMetoda( f, fprim, j, k, greska)
  2. %UNTITLED Summary of this function goes here
  3. % Detailed explanation goes here
  4.  
  5.  
  6. syms a b c d
  7.  
  8. x0 = j;
  9. x1 = k;
  10.  
  11. eqn1 = a + b*x0 + c*(x0^2) + d*(x0^3) == feval(f, x0);
  12. eqn2 = a + b*x1 + c*(x1^2) + d*(x1^3) == feval(f, x1);
  13. eqn3 = b + c*x0 + d*(x0^2) == feval(fprim, x0);
  14. eqn4 = b + c*x1 + d*(x1^2) == feval(fprim, x1);
  15.  
  16. [a, b, c, d] = solve(eqn1, eqn2, eqn3, eqn4);
  17.  
  18. g = @(x) a + b*x + c*(x^2) + d*(x^3);
  19. gprim = @(x) b + c*x + d*(x^2);
  20.  
  21. xzvezd1 = (-c + sqrt(4*b*d-c^2))/(2*b);
  22. xzvezd2 = (-c - sqrt(4*b*d-c^2))/(2*b);
  23.  
  24. %ako bude pravio problem
  25. %stavi xzvezd1 = double(xzvezd1) mada ne bi trebao da bude problem sa
  26. %racionalnim brojevima
  27. %xzvezd1 = 1;
  28. %xzvezd2 = 1.5;
  29.  
  30. if((xzvezd1 > 2) || (xzvezd1 < 0))
  31. x = xzvezd2;
  32. elseif((xzvezd2 > 2) || (xzvezd2 < 0))
  33. x = xzvezd1;
  34. else
  35. if(feval(f, xzvezd1) > feval(f, xzvezd2))
  36. x = xzvezd2;
  37. else
  38. x = xzvezd1;
  39. end
  40. end
  41.  
  42. if(feval(fprim, x) > 0)
  43. x1 = x;
  44. elseif(feval(xprim, x) < 0)
  45. x0 = x;
  46. else
  47. %ne znam, valjda je to onda to
  48. end
  49.  
  50. while (abs(feval(f, x) - feval(g, x)) > greska)
  51.  
  52. eqn1 = a + b*x0 + c*(x0^2) + d*(x0^3) == feval(f, x0);
  53. eqn2 = a + b*x1 + c*(x1^2) + d*(x1^3) == feval(f, x1);
  54. eqn3 = b + c*x0 + d*(x0^2) == feval(fprim, x0);
  55. eqn4 = b + c*x1 + d*(x1^2) == feval(fprim, x1);
  56.  
  57. syms a b c d
  58.  
  59. [a, b, c, d] = solve(eqn1, eqn2, eqn3, eqn4);
  60.  
  61. g = @(x) a + b*x + c*(x^2) + d*(x^3);
  62. gprim = @(x) b + c*x + d*(x^2);
  63.  
  64.  
  65. xzvezd1 = (-c + sqrt(4*b*d-c^2))/(2*b);
  66. xzvezd2 = (-c - sqrt(4*b*d-c^2))/(2*b);
  67.  
  68. %isto resenje ako bude problem kao i gore
  69.  
  70. if((xzvezd1 > 2) || (xzvezd1 < 0))
  71. x = xzvezd2;
  72. elseif((xzvezd2 > 2) || (xzvezd2 < 0))
  73. x = xzvezd1;
  74. else
  75. if(feval(f, xzvezd1) > feval(f, xzvezd2))
  76. x = xzvezd2;
  77. else
  78. x = xzvezd1;
  79. end
  80. end
  81.  
  82. if(feval(fprim, x) > 0)
  83. x1 = x;
  84. elseif(feval(xprim, x) < 0)
  85. x0 = x;
  86. else
  87. %ne znam, valjda je to onda to
  88. end
  89.  
  90. end
  91.  
  92. xrez = x;
  93.  
  94. end
  95.  
  96. kubnaMetoda(@(x) 2*x^4-3*x, @(x) 8*x^3-3, 0.5, 2, 10^-5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement