Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function task2
- %check(0.9), series(0.9, 0.01) % проверка построенной формулы при x = 0.9 с точностью 0.01 (пункт 4)
- N = 16; % число точек оси OX
- h = 1/N;
- X = h:h:1; % X - это массив из 16 элементов от 0.0625 до 1 с одинаковым отступом h
- n = 2;
- while n <= 8
- y_prev = s(n, 0); % начальное значение y
- for x = X
- y = s(n, x); % y - текущая точка оси OY
- line([x-h, x], [y_prev, y]); % строим график постепенно: по текущей точке и предыдущей точке
- y_prev = y; % y_prev - это теперь предыдущая точка по оси OY; x-h - это предыдущая точка по оси OX
- endfor
- n *= 2; % графики нужно построить при 2, 4 и 8 (пункт 6)
- endwhile
- X = [0, X]; % добавляем элемент 0 в начало массива X (т.к. изначально массив X был без него, а начинался сразу с элемента, равного h)
- line(X, series(X, 0.01), 'Color', 'r', 'LineStyle', '--'); % предельный график строим српазу по массивам всех точек
- endfunction
- function sum = series(x, err) % подсчет суммы ряда с погрешностью err (пункт 3)
- a = 1;
- sign = mult = 1;
- sum = x = x.*x; % .* - это по элементное умножение на тот случай, если на вход будет не просто x, а массив X
- i = 2;
- while abs(a) > err
- sign *= (-1);
- mult *= (2*i - 3)/(2*i + 2);
- x .*= x;
- a = sign*mult.*x; % вычисляем i-й член степенного ряда
- sum += a; % суммируем
- i += 1;
- endwhile
- endfunction
- function Sn = s(n, x) % подсчет значения n-ой частичной суммы (пункт 5)
- sign = mult = 1;
- Sn = x = x*x; % учитываем, что член перед суммой у нас равен x^2
- for i = 2:n % ниже составляем данную формулу: сначала учитываем знак, потом коэффициент, потом значение x в степени
- sign *= (-1);
- mult *= (2*i - 3)/(2*i + 2);
- x *= x;
- Sn += sign*mult*x;
- endfor
- endfunction
- function check(x) % проверка контрольной функцией (пункт 4)
- check = 0;
- check = 8/3*(sqrt((1+x)^3) - 1) - 4*x
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment