Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

solving of equations by the Euler method in Prolog

I wrote this mini pseudo code that solves the equation using the Euler method:

    // y'= x^2 - 5y
    int n = 10; // count of steps
    double h = 0.5; // step
    double x = 0;
    double y = 1;
    
    for (int i = 0; i < n; i++) {
            y += h * (x * x - 5 * y);
            x += h;
        }
        write << y; //result

Now I am trying to write this in Prolog language

loop2(N,H,X,Y) :-
    N > 0,
    write(Y), nl,
    Y is Y + H * (X * X - 5 * Y),
    X is X + H,
    S is N - 1,
    loop2(S, H, X, Y).

Here I solved the example on a piece of paper and should get 62.5
enter image description here

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

But in Prolog my Output =

?- loop2(10, 0.5, 0, 1).
1
false.

>Solution :

X is X + H becomes 0 is 0 + 0.5 and it is not, so case closed as far as Prolog is concerned, it has found your logical code is false, and reports that to you. You did tell it to writeln(Y) before that, so you still see 1 while it was trying.

You need to use new variable names for the results of calculations like you have used S is N - 1, e.g. Xnext is X + H.


The way you have shaped the countdown, S will eventually become 0 and then N > 0 will be false and the whole thing will fail then. You can probably get away with using this to write the values before it eventually fails, but a more normal way to end recursion is to have

loop2(0,_,_,_).
loop2(N,H,X,Y) :-
    ...

which says that when the call to loop2 happens, the top one is found first, if the first position is 0, then it succeeds. That ends the recursion and the whole thing succeeds.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading