Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.67 KB | None | 0 0
  1. function y=func(x)
  2.     y = exp(x) - log(x) - 20;
  3. endfunction
  4.  
  5. function phi=f1(x)
  6.     phi = log(log(x) + 20);
  7. endfunction
  8.  
  9. function dphi=f2(x)
  10.     dphi = 1 ./ (x .* (log(x) + 20));
  11. endfunction
  12.  
  13. function [ans, an, bn]=hdm(a, b)
  14.     flag = 1;
  15.     while (flag)
  16.         c = (a + b) ./ 2;
  17.         if (0 == func(c)) then
  18.             ans = c;
  19.             f = 0;
  20.             an=a;
  21.             bn=b;
  22.         else
  23.             if (func(a) .* func(c) < 0) then
  24.                 b = c;
  25.             else
  26.                 a = c;
  27.             end
  28.             if (abs(b - a) < 0.01) then
  29.                 ans = (a + b) ./ 2;
  30.                 flag = 0;
  31.                 an=a;
  32.                 bn=b;
  33.             end
  34.         end
  35.     end
  36. endfunction
  37.  
  38. x = 3.0:0.1:3.2;
  39. y = func(x);
  40. plot(x, y);
  41.  
  42. //локалізація кореня методом половинного ділення
  43. [ans,an,bn]=hdm(3.0,3.2);
  44.  
  45. //локалізація лівої межі
  46. a=an;
  47.  
  48. //локалізація правої межі
  49. b=bn;
  50.  
  51. //локалізація кореня
  52. xp=ans;
  53.  
  54. x = [a: 0.001: b];
  55. q = max(abs(f2(x)));
  56. r = ((1 - q) ./ q) .* 0.0000001;
  57. i = 1;
  58. f = 1;
  59.  
  60. while ((i < 50) & (1 == f))
  61.     i = i + 1;
  62.     xn = f1(xp);
  63.     if (abs(xn - xp) < r) then
  64.         ans2 = xn;
  65.         f = 0;
  66.     else
  67.         xp = xn;
  68.     end
  69. end
  70.  
  71. //уточнення кореня методом ітерацій
  72. x0=ans2;
  73. printf("Відповідь - %f\n", x0);
  74.  
  75. //точність обчислень
  76. eps=r;
  77.  
  78. //знаходження кореня за допомогою вбудованої функції
  79. printf("Вбудованою функцією - %f", fsolve(1.0, func));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement