フィルターのクリア

Euler's method for 2nd order ODE

3 ビュー (過去 30 日間)
oday hazaimah
oday hazaimah 2019 年 7 月 2 日
コメント済み: Geoff Hayes 2019 年 7 月 5 日
I am trying to run a code for solving 2nd order ODE but I have no idea where is my mistake in the following code:
function f=f(t0,x0,y0,N)
h=0.01;
N=5;
t0=0;
x0=0;
y0=0;
H=zeros(1,N+1);
T=zeros(1,N+1);
X=zeros(1,N+1);
Y=zeros(1,N+1);
H(1)=h; T(1)=t0; X(1)=x0; Y(1)=y0;
for j=1:N
T(j+1)=T(j)+H(j);
X(j+1)=X(j)+H(j)*Y(j);
Y(j+1)=Y(j)+H(j)*ahat(T(j),X(j),Y(j));
H(j+1)=H(j)*(1-H(j));
end
plot [T X]
plot [T Y]
  15 件のコメント
oday hazaimah
oday hazaimah 2019 年 7 月 4 日
Geoff,
Usually after we run the code we see the results come out in the command window so I am expecting to see columns with the error to compare between the valuse and then see the graphes of the functions X,Y,T
Geoff Hayes
Geoff Hayes 2019 年 7 月 5 日
oday - since the code is not explicitly writing anything to the console and because all lines are terminated with a semi-colon, then you will not see any output. As for the error...which array/variable does that correspond to?

サインインしてコメントする。

回答 (1 件)

Vaibhav Tomar
Vaibhav Tomar 2019 年 7 月 4 日
Can you please specify the values of T, Y and X. Without that it's difficult to say why the code is throwing errors. I'd suggest to look for an example for second order ODE algorithm.
You can try this alternate code:
% x1=y
%x2=dy
%then
%dx1=dy=x2
%dx2=d2y=-w^2*y=-w^2*x1
%save this function as yourfcn
function dx=yourfcn(t,x)
w=1
dx(1)=x(2)
dx(2)=-w^2*x(1)
%Then call the ode45 function
[t,x]=ode45(@yourfcn,[0,pi],[0 0])
%Then deduce y
y=x(:,1)
  1 件のコメント
oday hazaimah
oday hazaimah 2019 年 7 月 4 日
what values? aren't these the initial values that we already used above in the code and then the for loop will continue afterwards ?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by