使用Matlab的Euler方法的“哑”版本

时间:2011-06-03 12:58:22

标签: matlab numerical-methods

我尝试使用Matlab 编写Euler方法的'哑'版本,但我总是想出什么。我的代码是垃圾: - (

请参阅此伪代码以了解此方法:

‘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 个答案:

答案 0 :(得分:1)

我不确定你失败的地方,知道你的失败或者是什么并发症真的很有帮助。否则这只是做你的功课。

这是我对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

我不完全确定这段代码,但它应该给你一个如何解决这个问题的例子。如果出现问题,请评论。