Проблема с переменной, не меняющей значение в MATLAB - PullRequest
0 голосов
/ 04 июня 2011

Итак, у меня есть одна проблема с моим кодом: одна переменная не работает так, как должна. Вот коды, которые я использую:

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 не изменяет значение в коде?

1 Ответ

1 голос
/ 05 июня 2011

После запуска вашей программы я обнаружил, что I всегда равняется -1/h после цикла for, что делает I = I * h/3; всегда дать вам тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...