How to include a negative number in initial conditions for Eulers method code?

2 次查看(过去 30 天)
clear
close all
h=0.1; % step size
x=-1:h:2; % x interval define here
y=zeros(size(x));
y(-1)=8; % intial condition
n=numel(y);
for i = 1:n-1
dydx=((2.*x.*y.^2+4)/(2.*(3-y.*x.^2)))
y(i+1) = y(i)+dydx*h;
end
plot(x,y,'ro');
hold on
f1=exp(x);
plot(x,f1,'b');
grid on;
I'm writing some code for Eulers method and my initial condition is y(-1)=8. However when I run this it comes up with the error message saying array indicies must be positive integers or logical values. Any advice on how i can include my intial condition without these error messages?
  3 个评论
Torsten
Torsten 2023-12-13
编辑:Torsten 2023-12-13
y(i) means the value of the function y at x(i).
It does not mean the value of the function y at x = i.
Since
x=-1:h:2; % x interval define here
you thought you could use y(-1) for y (x=-1).
But you must use y(1) for y @ x(1) = -1.

请先登录,再进行评论。

回答(1 个)

Les Beckham
Les Beckham 2023-12-13
It is always better to post example code as text rather than a screenshot. Nevertheless...
Since the first element of x is -1 and you want to specify the value of y when x is -1, just define the first element of y, y(1), with your initial condition
y(1) = 8;
  2 个评论
Alex
Alex 2023-12-13
I've tried this but it still doesn't produce the answer im after. Is there anything else incorrect with the code?
Torsten
Torsten 2023-12-13
dydx=((2.*x(i).*y(i).^2+4)/(2.*(3-y(i).*x(i).^2)))
instead of
dydx=((2.*x.*y.^2+4)/(2.*(3-y.*x.^2)))
And your denominator becomes 0 in the course of the integration - thus your solution has a singularity.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by