maple, błąd w printf i co dalej?

0
> restart;
> Digits := 16;
                                     16
> f := proc (x, y) options operator, arrow; -g end proc;
(x, y) -> -g
> a := 0.; b := 10.; g = -9.81; y0 = 0;
                                     0.
                                     10.
                                  g = -9.81
                                   y0 = 0
> N := 100;
                                     100
> h := (b-a)/N;
                             0.1000000000000000
> X[0] := a; Y[0] := y0;
                                     0.
                                     y0
> printf("\   n      x       y\n");
 printf("--------------------\n");
 printf("%3d %18.12f %18.12f\n", 0, X[0], Y[0]);
 for n from 0 to N-1 do 
X[n+1] := a+(n+1)*h; 
Y[n+1] := Y[n]+h*f(X[n], Y[n]); 
printf("%3d %18.12f %18.12f\n", n+1, X[n+1], Y[n+1]):
od:
  n      x       y
--------------------
  0 

Error, (in fprintf) number expected for floating point format
  1     0.100000000000 

Error, (in fprintf) number expected for floating point format
 

Co robioę nie tak, skoro występują mi błędy w printf?
Chciałabym aby wyniki mi się pokazywały w formie tabeli, pokazuja mi sie tylko dwie pierwsze wartości.
Czy to wina maple 13? może inna wersja jest lepsza

0

anie powinno być średniki na końcu a nie dwukropki i słówko end?
for n from 0 to N-1 do
X[n+1] := a+(n+1)h;
Y[n+1] := Y[n]+h
f(X[n], Y[n]);
printf("%3d %18.12f %18.12f\n", n+1, X[n+1], Y[n+1]);
end
od**;**

0

niestety nie.. wywala jeszcze więcej błędów
:(
poddaje się....

0

Twój błąd to to, że deklarujesz małe x,y a uzywasz duże X,Y. Ten program działa bo sprawdziłem.

f := proc (x, y) options operator, arrow; -g end proc;

a := 0; b := 10; g := -9.81; p = 0;

N := 100;

h := (b-a)/N;
x[0] := 0; y[0] := 0;

for n from 0 to N-1 do
x[n+1] := (n+1)h;
y[n+1] := y[n]+h
f(x[n], y[n]);
printf("%3d %18.12f %18.12f\n", n, x[n], y[n]);
do;

1 użytkowników online, w tym zalogowanych: 0, gości: 1