Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function task1
- n = a = b = m = h = x0 = 0; N = 1;
- X = Y = [];
- %n = 5; a = 0; b = 1; N = 10; % хотя лучше взять N = 15
- n = input('Введите число слагаемых: ');
- a = input('Введите левый конец отрезка: ');
- b = input('Введите правый конец отрезка: ');
- N = input('Введите число точек отрезка: ');
- h = 1/N; % т.к число точек на отрезке [0, 1] будет равно 5 или 10 при шаге 0.2 или 0.1 соответственно
- % v = 0.05; % более мелкий шаг по вертикали для графика
- % high = 0.2 + v;
- % low = -0.1 - v;
- % yticks = [low:v:high];
- % set(gca,'ytick', yticks);
- sumY = Y(end+1) = expression(n, a);
- X = (a+h):h:b;
- for x = X
- Y(end+1) = expression(n, x);
- if sign(Y(end)) ~= sign(Y(end-1))
- x0 = x - h/(abs(Y(end-1)/Y(end)) + 1); % находим значение в точке x0 из отношения, полученного из подобия треугольников (пункт 4)
- line(x0, 0, 'Color','g','Marker','square','MarkerSize', 16); % изображаем зеленые квадраты вокруг таких x0
- endif
- sumY += Y(end);
- endfor
- X = [a, X];
- grid on
- line(X, Y); % график самой функции (пункт 2)
- line([a, b], sumY/N, 'Color','r','LineWidth', 1); % горизонтальная линия на уровне ср.арифметического (пункт 3)
- endfunction
- function value = expression(n, x) % m-функция (пункт 1)
- sum = value = 0;
- for k = 1:n
- sum += summand(n, x, k);
- %disp(summand(n, x, k)); % вывод k-го слагаемого
- endfor
- value = 10/3*sqrt(exp(x))*sum + 4;
- endfunction
- function s = summand(n, x, k) % вспомогательная функция для подсчета k-го слагаемого
- s = 0;
- s = (log(abs(x+k)))^2*cos((k^2+x)/n);
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment