Help with Euler's Method in Matlab

  1. 1. The problem statement, all variables and given/known data
    Well, I'm having problems with this script, I'm taking my first course on differential equations, and I am trying to write a script that approximates the values of the solution of a differential equation, and compares them to the exact solution using a table of values, it must also calculate the error, the problem is that I cannot make the table to appear using a column for each variable, instead, the values are spread horizontally and everything is pretty messed up, Its the first time I use Matlab and I might have a lot more mistakes, can anyone help me?


    2. Relevant equations
    the equations are pretty simple, they are in the bottom of the script I wrote


    3. The attempt at a solution
    this is what I wrote

    function [t P] = Euler(t0,P0,L,N) % Nombrando la función y estableciendo los datos necesarios

    Close all;
    h=L./N; % estableciendo tamaño de paso
    t=[]; P=[]; % t y P son vectores vacíos
    t(1)=t0+h;
    P(1)=P0+h.*f(t0, P0); % Estableciendo los primeros componentes de t y P

    for n=1:N-1
    t(n+1)=t(n)+h;
    P(n+1)=P(n)+(h.*(f(t(n), P(n))));
    end

    Paprox=P;
    Pexacta= SolucionExacta(t);
    error=abs(Pexacta-Paprox);

    % Para imprimir la tabla

    fprintf(' t Paproximada Pexacta error \n');
    fprintf('---------------------------------------------------------------------------------\n');
    fprintf( '%10.5f %10.5f %10.5f %10.5f', t ,Paprox, Pexacta, error);

    % Para graficar

    plot(t,P);
    hold on
    plot(t,Pexacta);
    figure;
    plot(t, error);

    end
    function ret=f(t,P)%para insertar la ecuación diferencial que deseamos resolver por aproximación

    ret=(0.0225.*P-(0.0003.*(P.^2)));
    end

    function f=SolucionExacta(t) % Para establecer la solución aproximada y hacer comparación

    f=(0.5625.*exp(0.0225.*t))./(0.015+(0.0075.*exp(0.0225.*t)));

    end
     
  2. jcsd
  3. The issue is you're printing arrays. You need to write your print statement in a loop, looping your values.
     
  4. As viscousflow said you'll need a for loop to print the array. Might help to add a 'next line' command into your code \n

    Here:

    fprintf( '%10.5f %10.5f %10.5f %10.5f \n', t ,Paprox, Pexacta, error);
     
  5. It worked!, thanks a lot
     
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook
Similar discussions for: Help with Euler's Method in Matlab
Loading...