Итак, у меня есть одна проблема с моим кодом: одна переменная не работает так, как должна. Вот коды, которые я использую:
format long
f = inline('-x.^2');
for i = 0:10
[I(i+1) h(i+1) tid(i+1)] = trapets(f,0,1,2^i);
end
for i = 0:10
trunk(i+1) = I(i+1) - log(2);
end
hold on
grid on
plot(log(h),log(trunk),'r+')
t = -7:0;
c = polyfit(log(h),log(trunk),1);
yy = polyval(c,t);
plot(t,yy)
grid off
hold off
koefficienter = real(c)
, а также это:
function [ I,h,tid ] = trapets(f,a,b,n )
h=(b-a)/n;
tic;
I=(f(a)+f(b));
for k=2:2:n-2
I = I+2*f(a+k*h);
end
for k = 1:2:n-1
I = I + 4*f(a+k*h);
end
I = I * h/3;
tid = toc;
end
Итак, проблема в том, что переменная I
не меняет значение. Он получает 11 значений, когда я запускаю первый код (я не запускаю последний код, который я написал, он используется только первым), но все значения одинаковы. Я не знаю, если проблема в том, что переменная n
, которую я использую во втором коде, никогда не изменяет значение, хотя я пытаюсь сделать это с помощью части "2 ^ i" в "trapets (f , 0,1,2 ^ я)». Если дело в том, что n
никогда не изменяет значение, есть ли решение для этого?
И если проблема не в переменной n
, почему переменная I
не изменяет значение в коде?