sashachca

задание 2

Jun 16th, 2018
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 2.66 KB | None | 0 0
  1. function task2
  2.  
  3.   %check(0.9), series(0.9, 0.01) % проверка построенной формулы при x = 0.9 с точностью 0.01 (пункт 4)
  4.  
  5.   N = 16; % число точек оси OX
  6.   h = 1/N;
  7.   X = h:h:1; % X - это массив из 16 элементов от 0.0625 до 1 с одинаковым отступом h
  8.  
  9.   n = 2;
  10.   while n <= 8
  11.     y_prev = s(n, 0); % начальное значение y
  12.     for x = X
  13.       y = s(n, x); % y - текущая точка оси OY
  14.       line([x-h, x], [y_prev, y]); % строим график постепенно: по текущей точке и предыдущей точке
  15.      
  16.       y_prev = y; % y_prev - это теперь предыдущая точка по оси OY; x-h - это предыдущая точка по оси OX
  17.     endfor
  18.    
  19.     n *= 2; % графики нужно построить при 2, 4 и 8 (пункт 6)
  20.   endwhile
  21.    
  22.   X = [0, X]; % добавляем элемент 0 в начало массива X (т.к. изначально массив X был без него, а начинался сразу с элемента, равного h)
  23.   line(X, series(X, 0.01), 'Color', 'r', 'LineStyle', '--'); % предельный график строим српазу по массивам всех точек
  24.  
  25. endfunction
  26.  
  27.  
  28. function sum = series(x, err) % подсчет суммы ряда с погрешностью err (пункт 3)
  29.   a = 1;
  30.  
  31.   sign = mult = 1;
  32.   sum = x = x.*x; % .* - это по элементное умножение на тот случай, если на вход будет не просто x, а массив X
  33.   i = 2;
  34.  
  35.   while abs(a) > err
  36.     sign *= (-1);
  37.     mult *= (2*i - 3)/(2*i + 2);
  38.     x .*= x;
  39.     a = sign*mult.*x; % вычисляем i-й член степенного ряда
  40.    
  41.     sum += a; % суммируем
  42.    
  43.     i += 1;
  44.   endwhile
  45.  
  46. endfunction
  47.  
  48.  
  49. function Sn = s(n, x) % подсчет значения n-ой частичной суммы (пункт 5)
  50.   sign = mult = 1;
  51.   Sn = x = x*x; % учитываем, что член перед суммой у нас равен x^2
  52.  
  53.   for i = 2:n % ниже составляем данную формулу: сначала учитываем знак, потом коэффициент, потом значение x в степени
  54.     sign *= (-1);
  55.     mult *= (2*i - 3)/(2*i + 2);
  56.        x *= x;
  57.     Sn += sign*mult*x;
  58.   endfor
  59.  
  60. endfunction
  61.  
  62.  
  63. function check(x) % проверка контрольной функцией (пункт 4)
  64.   check = 0;
  65.  
  66.   check = 8/3*(sqrt((1+x)^3) - 1) - 4*x
  67.  
  68. endfunction
Advertisement
Add Comment
Please, Sign In to add comment