fox49

5 Reputation

One Badge

11 years, 314 days

MaplePrimes Activity


These are replies submitted by fox49

^ ^ 

i have an other one...

but i cannot past it since it locked maple on the calculation...

^ ^ 

i have an other one...

but i cannot past it since it locked maple on the calculation...

@Markiyan Hirnyk 

I don't know if this will work. It's supposed to bulid up the matrix

> restart; with(LinearAlgebra); with(Matlab);


> X0 := 0; X1 := .25; X2 := .75; X3 := 1;
print(??); # input placeholder
> Phi1 := proc (x) options operator, arrow; A1*cos(xi*x)+B1*sin(xi*x)+C1*cosh(xi*x)+D1*sinh(xi*x) end proc; `Φ1x` := unapply(diff(Phi1(x, xi), x), x); `Φ1xx` := unapply(diff(`Φ1x`(x, xi), x), x); `Φ1xxx` := unapply(diff(`Φ1xx`(x, xi), x), x);
print(??); # input placeholder
> Phi2 := proc (x) options operator, arrow; A2*cos(mu*xi*x)+B2*sin(mu*xi*x)+C2*cosh(mu*xi*x)+D2*sinh(mu*xi*x) end proc; `Φ2x` := unapply(diff(Phi2(x, xi), x), x); `Φ2xx` := unapply(diff(`Φ2x`(x, xi), x), x); `Φ2xxx` := unapply(diff(`Φ2xx`(x, xi), x), x);
print(??); # input placeholder
> Phi3 := proc (x) options operator, arrow; A3*cos(xi*x)+B3*sin(xi*x)+C3*cosh(xi*x)+D3*sinh(xi*x) end proc; `Φ3x` := unapply(diff(Phi3(x, xi), x), x); `Φ3xx` := unapply(diff(`Φ3x`(x, xi), x), x); `Φ3xxx` := unapply(diff(`Φ3xx`(x, xi), x), x);
print(??); # input placeholder
> sys := [Phi1(0) = 0, `Φ1x`(0) = 0, Phi1(Xm)-Phi2(Xm) = 0, `Φ1x`(Xm)-`Φ2x`(Xm) = 0, `Φ1xx`(Xm)-Dp*`Φ2xx`(Xm) = 0, `Φ1xxx`(Xm)-Dp*`Φ2xxx`(Xm) = 0, Phi3(Xp)-Phi2(Xp) = 0, `Φ3x`(Xp)-`Φ2x`(Xp) = 0, `Φ3xx`(Xp)-Dp*`Φ2xx`(Xp) = 0, `Φ3xxx`(Xp)-Dp*`Φ2xxx`(Xp) = 0, `Φ3xx`(1) = 0, `Φ3xxx`(1) = 0]; var := [A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3]; M := GenerateMatrix(sys, var, augmented = true); M := SubMatrix(M, [1 .. 12], [1 .. 12]); CL[m] := unapply(M, xi); convert(CL[m](3), matrix); CL[m](3);


@Markiyan Hirnyk 

still discovering the interface of the forum with an old firefox...


I don't know why it show only 1/3 of le matrix Matrice_Cl_Poutre.mwMatrice_Cl_Poutre.mw

restart; with(LinearAlgebra); with(Matlab)
   

X0 := 0:

Phi1 := proc (x) options operator, arrow; A1*cos(xi*x)+B1*sin(xi*x)+C1*cosh(xi*x)+D1*sinh(xi*x) end proc:

Phi2 := proc (x) options operator, arrow; A2*cos(mu*xi*x)+B2*sin(mu*xi*x)+C2*cosh(mu*xi*x)+D2*sinh(mu*xi*x) end proc:

Phi3 := proc (x) options operator, arrow; A3*cos(xi*x)+B3*sin(xi*x)+C3*cosh(xi*x)+D3*sinh(xi*x) end proc:

sys := [Phi1(0) = 0, `Φ1x`(0) = 0, Phi1(Xm)-Phi2(Xm) = 0, `Φ1x`(Xm)-`Φ2x`(Xm) = 0, `Φ1xx`(Xm)-Dp*`Φ2xx`(Xm) = 0, `Φ1xxx`(Xm)-Dp*`Φ2xxx`(Xm) = 0, Phi3(Xp)-Phi2(Xp) = 0, `Φ3x`(Xp)-`Φ2x`(Xp) = 0, `Φ3xx`(Xp)-Dp*`Φ2xx`(Xp) = 0, `Φ3xxx`(Xp)-Dp*`Φ2xxx`(Xp) = 0, `Φ3xx`(1) = 0, `Φ3xxx`(1) = 0]:

RTABLE(294569504, anything, Matrix, rectangular, Fortran_order, [], 2, 1 .. 12, 1 .. 12)

(1)

Deter := Determinant(CL[m](xi), method = multivar):

0.

(2)

fsolve(evalf(dM(x)) = 0, x = .1 .. 10)

Warning,  computation interrupted

 

evalf(dM(-53.72648285)); Pente := proc (x) options operator, arrow; diff(dM(x), x) end proc; Pente(1)

Error, (in Pente) invalid input: diff received 1, which is not valid for its 2nd argument

 

fd := fopen("temp_file", WRITE):

Matrix(12, 12, {(1, 1) = 1, (1, 2) = 0, (1, 3) = 1, (1, 4) = 0, (1, 5) = 0, (1, 6) = 0, (1, 7) = 0, (1, 8) = 0, (1, 9) = 0, (1, 10) = 0, (1, 11) = 0, (1, 12) = 0, (2, 1) = 0, (2, 2) = xi, (2, 3) = 0, (2, 4) = xi, (2, 5) = 0, (2, 6) = 0, (2, 7) = 0, (2, 8) = 0, (2, 9) = 0, (2, 10) = 0, (2, 11) = 0, (2, 12) = 0, (3, 1) = cos(xi*Xm), (3, 2) = sin(xi*Xm), (3, 3) = cosh(xi*Xm), (3, 4) = sinh(xi*Xm), (3, 5) = -cos(mu*xi*Xm), (3, 6) = -sin(mu*xi*Xm), (3, 7) = -cosh(mu*xi*Xm), (3, 8) = -sinh(mu*xi*Xm), (3, 9) = 0, (3, 10) = 0, (3, 11) = 0, (3, 12) = 0, (4, 1) = -sin(xi*Xm)*xi, (4, 2) = cos(xi*Xm)*xi, (4, 3) = sinh(xi*Xm)*xi, (4, 4) = cosh(xi*Xm)*xi, (4, 5) = sin(mu*xi*Xm)*mu*xi, (4, 6) = -cos(mu*xi*Xm)*mu*xi, (4, 7) = -sinh(mu*xi*Xm)*mu*xi, (4, 8) = -cosh(mu*xi*Xm)*mu*xi, (4, 9) = 0, (4, 10) = 0, (4, 11) = 0, (4, 12) = 0, (5, 1) = -cos(xi*Xm)*xi^2, (5, 2) = -sin(xi*Xm)*xi^2, (5, 3) = cosh(xi*Xm)*xi^2, (5, 4) = sinh(xi*Xm)*xi^2, (5, 5) = Dp*cos(mu*xi*Xm)*mu^2*xi^2, (5, 6) = Dp*sin(mu*xi*Xm)*mu^2*xi^2, (5, 7) = -Dp*cosh(mu*xi*Xm)*mu^2*xi^2, (5, 8) = -Dp*sinh(mu*xi*Xm)*mu^2*xi^2, (5, 9) = 0, (5, 10) = 0, (5, 11) = 0, (5, 12) = 0, (6, 1) = sin(xi*Xm)*xi^3, (6, 2) = -cos(xi*Xm)*xi^3, (6, 3) = sinh(xi*Xm)*xi^3, (6, 4) = cosh(xi*Xm)*xi^3, (6, 5) = -Dp*sin(mu*xi*Xm)*mu^3*xi^3, (6, 6) = Dp*cos(mu*xi*Xm)*mu^3*xi^3, (6, 7) = -Dp*sinh(mu*xi*Xm)*mu^3*xi^3, (6, 8) = -Dp*cosh(mu*xi*Xm)*mu^3*xi^3, (6, 9) = 0, (6, 10) = 0, (6, 11) = 0, (6, 12) = 0, (7, 1) = 0, (7, 2) = 0, (7, 3) = 0, (7, 4) = 0, (7, 5) = -cos(mu*xi*Xp), (7, 6) = -sin(mu*xi*Xp), (7, 7) = -cosh(mu*xi*Xp), (7, 8) = -sinh(mu*xi*Xp), (7, 9) = cos(xi*Xp), (7, 10) = sin(xi*Xp), (7, 11) = cosh(xi*Xp), (7, 12) = sinh(xi*Xp), (8, 1) = 0, (8, 2) = 0, (8, 3) = 0, (8, 4) = 0, (8, 5) = sin(mu*xi*Xp)*mu*xi, (8, 6) = -cos(mu*xi*Xp)*mu*xi, (8, 7) = -sinh(mu*xi*Xp)*mu*xi, (8, 8) = -cosh(mu*xi*Xp)*mu*xi, (8, 9) = -sin(xi*Xp)*xi, (8, 10) = cos(xi*Xp)*xi, (8, 11) = sinh(xi*Xp)*xi, (8, 12) = cosh(xi*Xp)*xi, (9, 1) = 0, (9, 2) = 0, (9, 3) = 0, (9, 4) = 0, (9, 5) = Dp*cos(mu*xi*Xp)*mu^2*xi^2, (9, 6) = Dp*sin(mu*xi*Xp)*mu^2*xi^2, (9, 7) = -Dp*cosh(mu*xi*Xp)*mu^2*xi^2, (9, 8) = -Dp*sinh(mu*xi*Xp)*mu^2*xi^2, (9, 9) = -cos(xi*Xp)*xi^2, (9, 10) = -sin(xi*Xp)*xi^2, (9, 11) = cosh(xi*Xp)*xi^2, (9, 12) = sinh(xi*Xp)*xi^2, (10, 1) = 0, (10, 2) = 0, (10, 3) = 0, (10, 4) = 0, (10, 5) = -Dp*sin(mu*xi*Xp)*mu^3*xi^3, (10, 6) = Dp*cos(mu*xi*Xp)*mu^3*xi^3, (10, 7) = -Dp*sinh(mu*xi*Xp)*mu^3*xi^3, (10, 8) = -Dp*cosh(mu*xi*Xp)*mu^3*xi^3, (10, 9) = sin(xi*Xp)*xi^3, (10, 10) = -cos(xi*Xp)*xi^3, (10, 11) = sinh(xi*Xp)*xi^3, (10, 12) = cosh(xi*Xp)*xi^3, (11, 1) = 0, (11, 2) = 0, (11, 3) = 0, (11, 4) = 0, (11, 5) = 0, (11, 6) = 0, (11, 7) = 0, (11, 8) = 0, (11, 9) = -cos(xi)*xi^2, (11, 10) = -sin(xi)*xi^2, (11, 11) = cosh(xi)*xi^2, (11, 12) = sinh(xi)*xi^2, (12, 1) = 0, (12, 2) = 0, (12, 3) = 0, (12, 4) = 0, (12, 5) = 0, (12, 6) = 0, (12, 7) = 0, (12, 8) = 0, (12, 9) = sin(xi)*xi^3, (12, 10) = -cos(xi)*xi^3, (12, 11) = sinh(xi)*xi^3, (12, 12) = cosh(xi)*xi^3})

(3)

 

CalculDeXi := proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart)
     local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL;
     
     
     MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]);
     dM := proc (xi) options operator, arrow; Determinant(MattriceSystem(xi,Dpin, muin, Xmin, Xpin), method = multivar) end proc;
     x := Xstart;
     pasL := evalf(abs(evalf(dM(x)))/2) ;
     pas := .1;
     slope := evalf((evalf(dM(x+abs(pas)))-evalf(dM(x)))/abs(pas));
     pas := evalf(sqrt(pasL*pasL/(slope^2+1)));
     Dete := dM(x);
     coef := 0.5 ;
     
     
     while prec < evalf(abs(dM(x))) do
          pasL = evalf(abs(dM(x)))/2 ;
          slope := evalf((evalf(dM(x+abs(pas)))-evalf(dM(x)))/abs(pas));
          pas := evalf(sqrt(pasL*pasL/(slope^2+1)));
          
          
          if slope>0 then
               if evalf(dM(x))>0 then
                    pas := -abs(pas);
               else
                    pas := +abs(pas);
               end if;
          else
               if evalf(dM(x))<0 then
                    pas := -abs(pas);
               else
                    pas := +abs(pas);
               end if;
          end if;
          
          x := x+pas ;
          print("===============");
          print(pas);
          print(slope);  
          print(evalf(dM(x)));
     end do;
     return x ;
end proc;




CalculDeXi(M, 0.1e-17, 4.05986905982905988, 0.771725e-1, .25, .75,3);

proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart) local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL; MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]); dM := proc (xi) options operator, arrow; LinearAlgebra:-Determinant(MattriceSystem(xi, Dpin, muin, Xmin, Xpin), method = multivar) end proc; x := Xstart; pasL := evalf((1/2)*abs(evalf(dM(x)))); pas := .1; slope := evalf((evalf(dM(x+abs(pas)))-evalf(dM(x)))/abs(pas)); pas := evalf(sqrt(pasL*pasL/(slope^2+1))); Dete := dM(x); coef := .5; while prec < evalf(abs(dM(x))) do pasL = (1/2)*evalf(abs(dM(x))); slope := evalf((evalf(dM(x+abs(pas)))-evalf(dM(x)))/abs(pas)); pas := evalf(sqrt(pasL*pasL/(slope^2+1))); if 0 < slope then if 0 < evalf(dM(x)) then pas := -abs(pas) else pas := abs(pas) end if else if evalf(dM(x)) < 0 then pas := -abs(pas) else pas := abs(pas) end if end if; x := x+pas; print("==============="); print(pas); print(slope); print(evalf(dM(x))) end do; return x end proc

 

"==============="

 

-0.5397834011e-1

 

-1834768.813

 

-128787.2755

 

"==============="

 

-0.7715438636e-1

 

-1283631.167

 

-68166.75059

 

"==============="

 

-.1260496964

 

-785704.1935

 

-22660.99620

 

"==============="

 

-.2743319309

 

-361014.3911

 

-1364.167283

 

"==============="

 

-1.275740353

 

-77631.60799

 

0.4871585959e-2

 

"==============="

 

92.61765851

 

-1069.318025

 

-0.

 

93.81040380

(4)

NULL

CalculDeXiDerive := proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart, Xsup, Xinf)
     local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL;
     
     MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]);
     dM := proc (xi) options operator, arrow; Determinant(MattriceSystem(xi,Dpin, muin, Xmin, Xpin), method = multivar) end proc;
     slope := proc (xi) options operator, arrow; evalf((evalf(dM(x+0.1e-17))-evalf(dM(x)))/0.1e-17) end proc;  
     x := Xstart;
     pasL := evalf(abs(evalf(dM(x)))/2) ;
     pas := .1;
     pas := evalf(sqrt(pasL*pasL/(slope(x+pas)^2+1)));
     coef := 0.1e-17 ;   
     print(pas);
     print(pasL);
     print(x);       
     
     while prec < evalf(abs(dM(x))) do
          pasL = evalf(abs(dM(x)))*coef ;
          pas := evalf(sqrt(pasL*pasL/(slope(x+pas)^2+1)));

          print("===============");
          print(pas);
          print(pasL);
          print(slope(x+pas));
          print(x);
          if slope(x)>0 then
               if evalf(dM(x))>0 then
                    pas := -abs(pas);
               else
                    pas := +abs(pas);
               end if;
          else
               if evalf(dM(x))<0 then
                    pas := -abs(pas);
               else
                    pas := +abs(pas);
               end if;
          end if;
          
          x := x+pas ;
          if x> Xsup or x<Xinf then
               print(dM(x));
               return x ;
          end if;
          
     end do;
     print(dM(x));
     return x ;
end proc;

CalculDeXiDerive(M, 0.1e-17, 4.05986905982905988, 0.771725e-1, .25, .75,7, 10, 0);

proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart, Xsup, Xinf) local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL; MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]); dM := proc (xi) options operator, arrow; LinearAlgebra:-Determinant(MattriceSystem(xi, Dpin, muin, Xmin, Xpin), method = multivar) end proc; slope := proc (xi) options operator, arrow; evalf((evalf(dM(x+0.1e-17))-evalf(dM(x)))/0.1e-17) end proc; x := Xstart; pasL := evalf((1/2)*abs(evalf(dM(x)))); pas := .1; pas := evalf(sqrt(pasL*pasL/(slope(x+pas)^2+1))); coef := 0.1e-17; print(pas); print(pasL); print(x); while prec < evalf(abs(dM(x))) do pasL = evalf(abs(dM(x)))*coef; pas := evalf(sqrt(pasL*pasL/(slope(x+pas)^2+1))); print("==============="); print(pas); print(pasL); print(slope(x+pas)); print(x); if 0 < slope(x) then if 0 < evalf(dM(x)) then pas := -abs(pas) else pas := abs(pas) end if else if evalf(dM(x)) < 0 then pas := -abs(pas) else pas := abs(pas) end if end if; x := x+pas; if Xsup < x or x < Xinf then print(dM(x)); return x end if end do; print(dM(x)); return x end proc

 

0.2572385750e-13

 

0.7812850000e13

 

7

 

"==============="

 

0.2572385750e-13

 

0.7812850000e13

 

0.3037200000e27

 

7

 

"==============="

 

0.7812850000e13

 

0.7812850000e13

 

0.

 

7.

 

0

 

-0.7812850000e13

(5)


``


CalculDeXiLog := proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart, Xsup, Xinf) local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL; MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]); dM := proc (xi) options operator, arrow; log(abs(Determinant(MattriceSystem(xi, Dpin, muin, Xmin, Xpin), method = multivar))) end proc; x := Xstart; pas := .1; while prec < Dete do Dete = evalf(dM(x)); if Dete < DetePrev then DetePrev = Dete; x := x+pas else pas := -(1/2)*pas; x := x+pas end if end do; print(dM(x)); return x end proc; CalculDeXiDerive(M, -17, 4.05986905982905988, 0.771725e-1, .25, .75, 7, 10, 0)

proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart, Xsup, Xinf) local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL; MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]); dM := proc (xi) options operator, arrow; log(abs(LinearAlgebra:-Determinant(MattriceSystem(xi, Dpin, muin, Xmin, Xpin), method = multivar))) end proc; slope := proc (xi) options operator, arrow; evalf((evalf(dM(x+0.1e-17))-evalf(dM(x)))/0.1e-17) end proc; x := Xstart; pas := .1; while prec < Dete do Dete = evalf(dM(x)); if Dete < DetePrev then DetePrev = Dete; x := x+pas else pas := -(1/2)*pas; x := x+pas end if end do; print(dM(x)); return x end proc

 

Error, (in unapply) variables must be unique and of type name

 

real(log(-1));

real(I*Pi)

(6)

      NULL
Dp := 4.05986905982905988:

RTABLE(295452920, anything, Matrix, rectangular, Fortran_order, [], 2, 1 .. 12, 1 .. 12)

(7)

dM := proc (xi) options operator, arrow; Determinant(CL[m](xi), method = multivar) end proc:

8.601

(8)

M := GenerateMatrix(sys, var, augmented = true); M := SubMatrix(M, [1 .. 12], [1 .. 12]); A := Matrix([[1, 2, 3], [1, 2, 3], [0, 0, 0]]); CL[m](xi); evalf(dM(1))

Error, (in unapply) variables must be unique and of type name

 

 

15.87370033*cosh(2)^2+23.10620264*cos(2)*cosh(2)+68.51480545*sin(2)*cosh(2)+15.87369963*sin(2)^2+15.87369963*cos(2)^2-15.87370033*sinh(2)^2-64.91400993*sin(2)*sinh(2)-2.539503031*cos(2)*sinh(2)

(9)

V := NullSpace(M)[1]; type(V, vector); V2 := convert(V, Vector); type(V2, vector)

false

(10)

type(M, matrix); M2 := convert(M, Matrix); type(M2, matrix); Vect := Multiply(M2, V2); type(Vect, vector); Vect := convert(Vect, vector)

array( 1 .. 12, [( 1 ) = (HFloat(-2.6147840917582765e-6)), ( 2 ) = (HFloat(-3.286977940109015e-7)), ( 3 ) = (HFloat(1.6947983780615794e-7)), ( 4 ) = (HFloat(-1.457608916899389e-7)), ( 5 ) = (HFloat(-1.0331546028419236e-8)), ( 6 ) = (HFloat(3.901194894906368e-9)), ( 7 ) = (HFloat(-1.676192482591432e-7)), ( 8 ) = (HFloat(2.3004031390883029e-7)), ( 9 ) = (HFloat(-1.2811142369173467e-8)), ( 10 ) = (HFloat(-3.637978807091713e-9)), ( 11 ) = (HFloat(4.336470738053322e-8)), ( 12 ) = (HFloat(-4.6566128730773926e-9))  ] )

(11)

plot(evalf(log(abs(dM(x)))), x = 2.1 .. 2.3, legend = "det(M)", labels = ["&xi;", "det(M)"], title = "Determinant de M en fonction de &xi;", color = red, style = line);

 

NULL

 

NULLNULL

 

NULL


  anyway, the function i created does'nt wok, i think i will go for logarithm

Download Matrice_Cl_Poutre.mw

@fox49 

Strange i can not edit my own message.

I think i will try an other way with logarithm.

@fox49 

Strange i can not edit my own message.

I think i will try an other way with logarithm.

@Markiyan Hirnyk 

 

may be :

dM := proc (xi) options operator, arrow; Determinant(MattriceSystem(xi,Dpin, muin, Xmin, Xpin), method = multivar) end proc;

do not provide the analiticaly calculated of dM but an aproximated one... 

it have strange reactions.

 

@Markiyan Hirnyk 

 

may be :

dM := proc (xi) options operator, arrow; Determinant(MattriceSystem(xi,Dpin, muin, Xmin, Xpin), method = multivar) end proc;

do not provide the analiticaly calculated of dM but an aproximated one... 

it have strange reactions.

 

Indeed with al the comment missing... i'm realy forgetfull today.

M : is a boundary condition matrix (a 12*12 non Cramer system)

prec : is the precision i want to reach.

Dpin, muin, Xmin, Xpin : are physical parameters linked to the problem

Xstart : is the x where it start to search (not implemented yet for multiple roots)

Xsup : is the maximum x i want to see

Xinf : is the minimum x i want to see.

And as far as i can see, the code works to give a working root but fail to find it in [Xinf, Xsup] despite the fact that 8.601 is a working root.

i forget to add that i'm using a code that gives me precise root but too bigs ones :

CalculDeXiDerive := proc (M, prec, Dpin, muin, Xmin, Xpin, Xstart, Xsup, Xinf)
     local x, pas, Dete, dM, MattriceSystem, coef, slope, pasL;
     
     MattriceSystem := unapply(M, [xi, Dp, mu, Xm, Xp]);
     dM := proc (xi) options operator, arrow; Determinant(MattriceSystem(xi,Dpin, muin, Xmin, Xpin), method = multivar) end proc;
     slope := proc (xi) options operator, arrow; evalf((evalf(dM(x+0.1e-17))-evalf(dM(x)))/0.1e-17) end proc;  
     x := Xstart;
     pasL := evalf(abs(evalf(dM(x)))/2) ;
     pas := .1;
     pas := evalf(sqrt(pasL*pasL/(slope(x)^2+1)));
     Dete := dM(x);
     coef := 0.5 ;
     
     
     while prec < evalf(abs(dM(x))) do
          pasL = evalf(abs(dM(x)))/2 ;
          pas := evalf(sqrt(pasL*pasL/(slope(x)^2+1)));
          
          
          if slope(x)>0 then
               if evalf(dM(x))>0 then
                    pas := -abs(pas);
               else
                    pas := +abs(pas);
               end if;
          else
               if evalf(dM(x))<0 then
                    pas := -abs(pas);
               else
                    pas := +abs(pas);
               end if;
          end if;
          
          x := x+pas ;
          if x> Xsup or x<Xinf then
               return x ;
          end if;
          
     end do;
     return x ;
end proc;

CalculDeXiDerive(M, 0.1e-17, 4.05986905982905988, 0.771725e-1, .25, .75,2.3, 10, 0);

Page 1 of 1