Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Octave / task_9

.m
Скачиваний:
4
Добавлен:
18.08.2022
Размер:
1.6 Кб
Скачать
x = [0:0.1:3];
y = cos(x) .^ 2;
pkg load symbolic
syms z
m = diff("cos(z)^2", z)
dy = -2 .* sin(x) .* cos(x);
dy_l = [];
dy_r = [];
dy_c = [];
dx = 0.1;
for i = 1:1:length(y)
if i > 1
dy_l(end+1) = (y(i) - y(i-1)) / dx;
else
dy_l(end+1) = nan;
endif
endfor
for i = 1:1:length(y)
if i < length(y) - 1
dy_r(end+1) = (y(i+1) - y(i)) / dx;
else
dy_r(end+1) = nan;
endif
endfor
for i = 1:1:length(y)
if i > 1 && i < length(y) - 1
dy_c(end+1) = (y(i+1) - y(i-1)) / (2 * dx);
else
dy_c(end+1) = nan;
endif
endfor

figure;
hold on
plot(x, dy, 'm');
plot(x, dy_l, 'r');
plot(x, dy_r, 'g');
plot(x, dy_c, 'b');
xlabel('X')
ylabel('Y')
grid on
legend('точная производная',
'аппроксимация с помощью левых разностей',
'аппроксимация с помощью правых разностей',
'аппроксимация с помощью центральных разностей');


x2 = [0:0.2:3];
y2 = cos(x2) .^ 2;
dy_c2 = [];
dx2 = 0.2;
for i = 1:1:length(y2)
if i > 1 && i < length(y2) - 1
dy_c2(end+1) = (y2(i+1) - y2(i-1)) / (2 * dx2);
else
dy_c2(end+1) = nan;
endif
endfor

ydop = @(x)(cos(x)^2);
f = @(x,h)((ydop(x+h) - ydop(x-h)) / (2*h));
k = 2;
p = 2;
dy_cR = [];
for i = 1:1:length(x)
dy_cR(end+1) = f(x(i),dx2) + (f(x(i),dx2) - f(x(i),2*dx2)) / (k^p - 1);
endfor

figure;
hold on
plot(x, abs(dy_c - dy), 'r');
plot(x, abs(dy_cR - dy), 'g');
xlabel('X')
ylabel('Y')
grid on
legend('погрешность формулы центральных разностей',
'погрешность формулы Рунге-Ромберга');












Соседние файлы в папке Octave