Advertisement
gasaichan

newton.m

Mar 13th, 2018
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.50 KB | None | 0 0
  1. function[] = newton(f, a, b)
  2.     if isa(f, 'function_handle')
  3.         fprintf('Введенная функция соответствует необходимому формату. Ищем корень\n')
  4.     else
  5.         fprintf('Введенная функция не соответствует формату function_handle\n')
  6.         return
  7.     end
  8.     if b < a
  9.         fprintf('Введенное число b больше, чем a. Меняем местами\n')
  10.         c = b;
  11.         b = a;
  12.         a = c;
  13.         fprintf('Текущее значение a: %f, текущее значение b: %d\n', a, b)
  14.     end
  15.    
  16.    
  17.     fplot(f, [0.1 4])
  18.     grid on, hold on
  19.     xlabel('x')
  20.     ylabel('y')
  21.    
  22.     %epsilon = 0.01;
  23.    
  24.     syms x;
  25.    
  26. %     if (f(a) * subs(diff(f(x), 1), a)) > 0
  27. %         fprintf('Выбираем в качестве точки для первого приближения точку a\n')
  28. %         approx = a;
  29. %     else
  30. %     if (f(b) * subs(diff(f(x), 1), b)) > 0
  31. %         fprintf('Выбираем в качестве точки для первого приближения точку b\n')
  32. %         approx = b;
  33. %     end
  34. %     end
  35. %    
  36.  
  37.     approx = (a + b)/2;
  38.  
  39.    
  40.     differential = diff(f(x));
  41.    
  42.    for i = 1:1:5
  43.        %fprintf('Текущая точка: %f\n', approx)
  44.        approx = approx - f(approx) / subs(differential, approx);
  45.    end
  46.         fprintf('Найденный корень: %f\n', approx)
  47.    
  48. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement