«Тупая» версия метода Эйлера с использованием Matlab - PullRequest
0 голосов
/ 03 июня 2011

Я пытался написать «тупую» версию метода Эйлера , используя Matlab , но я всегда ничего не придумывал.Мой код был мусором: - (

Смотрите этот псевдокод для этого метода:

‘set integration range
xi = 0
xf = 0
‘initialize variables
x = xi
y = 1
‘set step size and determine
‘number of calculation steps
dx = 0.5
nc = (xf – xi) / dx
‘ output initial condition
PRINT x, y
‘Loop to implement Euler’s method
‘and display results
DOFOR I = 1, nc
dydx = -(2X**3) + (12X**2) - (20X) + 8.5
y = y + dydx . dx
x = x + dx
PRINT x, y
END DO

Я почти уверен, что этот псевдокод - это то, что мне нужно реализовать, но мне не удалось его преобразоватьв код Matlab. Любая помощь, пожалуйста?

1 Ответ

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

Я не уверен, где вы терпите неудачу, это действительно помогло бы узнать, как вы терпите неудачу или в чем осложнение.В противном случае это просто похоже на выполнение домашней работы.

Вот моя попытка кода MATLAB.(Примечание: у меня нет MATLAB на этом компьютере и я не тестировал его)

i = 0;
stepsize = .1; % Define as what you want it to be
y = 1; % Initial value condition given 
t = 0; % Initial time value
yout = [zeros(1,20)]; % Assuming you want 20 outputs, can change
fvec = [zeros(1,20)];

for i = 1:20 % Time range, can change to correspond to what you want
fvec(i) = 2 - exp(-4*t) - 2*yout(i); % Just loops calculating based on Euler's method
yout(i+1) = yout(i) + stepsize*fvec(i)
t = t+stepsize % Time has passed, increment the time.
end

Я не совсем уверен в этом коде, но он должен дать вам пример того, как это сделать.Пожалуйста, прокомментируйте, если что-то не так.

...