nm

11498 Reputation

20 Badges

13 years, 93 days

MaplePrimes Activity


These are answers submitted by nm

I tried converting an outupt to a string which removed all the backslashes in the file path. Maybe there is a dedicated command that I overlooked.

Here is a proc that removes the user name from libname. You can test more to see if it works for you

restart;

clean_my_libname:=proc(the_libname::list)
local item::string;
local n::integer,m::integer;
local new_libname::list:=[];

for item in the_libname do
   n:=StringTools:-Search("\\Users",item);
   m:=StringTools:-Search("\\maple\\toolbox",item);
   if n<>0 and m<>0 then
      cat(item[1..n+5],item[m..]);
      new_libname:=[ op(new_libname), %];
   else      
      new_libname:=[ op(new_libname), item];
   fi;
od;
op(new_libname);
end proc:

my_new_libname:= clean_my_libname([libname]);

"C:\Users\maple\toolbox\2024\Physics Updates\lib", "C:\Program Files\Maple 2024\lib"

libname

"C:\Users\Owner\maple\toolbox\2024\Physics Updates\lib", "C:\Program Files\Maple 2024\lib"

 


 

Download clean_libname.mw

on my PC, windows 10, Maple 2024.2 has maple.mla of size 268 MB.

You can sort its content by size of each m file inside the mla. This is result of first top 10 entries by size

The 4th column, according to help under LibraryTools:-ShowContents  is the size in bytes of the m file.

Here is worksheet which displays all entries in Maple.mla sort by size.

interface(version);

`Standard Worksheet Interface, Maple 2024.2, Windows 10, October 29 2024 Build ID 1872373`

restart;

library := FileTools:-JoinPath(["lib", "maple.mla"], base=mapledir):

the_content:=LibraryTools:-ShowContents(library):

#sort by large size to small size
the_content:=ArrayTools:-SortBy( convert(the_content,Matrix) ,'column', 4,'descending', 'inplace' ):
the_content[1..10];

Matrix(10, 4, {(1, 1) = "evalf/int/GaussLaguerreQuadratureTable.m", (1, 2) = [2024, 3, 1, 8, 35, 48], (1, 3) = 154783114, (1, 4) = 2376962, (2, 1) = "casesplit/K.m", (2, 2) = [2024, 3, 1, 8, 30, 34], (2, 3) = 57860403, (2, 4) = 159362, (3, 1) = "subtype.m", (3, 2) = [2024, 3, 1, 8, 52, 29], (3, 3) = 62029141, (3, 4) = 139356, (4, 1) = "RegularChains.m", (4, 2) = [2024, 3, 1, 8, 31, 30], (4, 3) = 173035257, (4, 4) = 100337, (5, 1) = "inttrans/mellin/bessel/table.m", (5, 2) = [2024, 3, 1, 8, 49, 53], (5, 3) = 60561441, (5, 4) = 88741, (6, 1) = "context/defaultconfig.m", (6, 2) = [2024, 3, 1, 8, 49, 23], (6, 3) = 25630911, (6, 4) = 77254, (7, 1) = "ifactor/PollardP1/tree.m", (7, 2) = [2024, 3, 1, 8, 26, 13], (7, 3) = 83287450, (7, 4) = 74717, (8, 1) = "inttrans/invmellin/bessel/table.m", (8, 2) = [2024, 3, 1, 8, 49, 47], (8, 3) = 138871406, (8, 4) = 68185, (9, 1) = "evalf/int/GaussLegendreQuadratureTable.m", (9, 2) = [2024, 3, 1, 8, 35, 48], (9, 3) = 139687979, (9, 4) = 60871, (10, 1) = "convert/Sum/from.m", (10, 2) = [2024, 3, 1, 8, 33, 51], (10, 3) = 80273108, (10, 4) = 57302})

the_table :=Array(1..0):
the_table ,= ["m file name","size in bytes (4th column)","cummulative size in bytes"]:
total_size := 0:
for N from 1 to  LinearAlgebra:-RowDimension(the_content) do    
    current_size:=the_content[N,4]:
    total_size:= total_size+current_size:
    the_table ,= [the_content[N,1],current_size,total_size]:
    if N>20 then #remove this check to see all, as table becomes too large to show
       break;
    fi;
od:
the_table:=convert(the_table,listlist):
DocumentTools:-Tabulate(the_table,width=40,weights = [2, 1, 1]);

"Tabulate1"

 


Download lib_size_nov_5_2024.mw

Updated to add 2 columns , exact and approx solutions. ps also changed x values list. Note at x=1 we have division by zero in exact solution.

restart;

exact_sol:=1/(1-x);
approx_sol:=1 + x + 37/60*x^5 + 2/3*x^4 + 1/3*x^3 + x^2 + 2351/7560*x^9 + 781/1680*x^8 + 101/210*x^7 + 53/120*x^6 + 1/7*x^10 + 1091/23100*x^11 + 11/15600*x^13 + 11/1200*x^12;

1/(1-x)

1+x+(37/60)*x^5+(2/3)*x^4+(1/3)*x^3+x^2+(2351/7560)*x^9+(781/1680)*x^8+(101/210)*x^7+(53/120)*x^6+(1/7)*x^10+(1091/23100)*x^11+(11/15600)*x^13+(11/1200)*x^12

the_table :=Array(1..0):
the_table ,= [x,"exact solution", "approximate solution","Abs Error","Relative Error"]:
data:=[seq(i,i=0..1,0.1)];
for item in data do
    current_exact_sol:=evalf(eval(exact_sol,x=item));
    current_approx_sol:=evalf(eval(approx_sol,x=item));
    current_error := abs(current_exact_sol-current_approx_sol);
    current_relative_error := current_error/current_exact_sol;
    the_table ,= [item,current_exact_sol,current_approx_sol,current_error ,current_relative_error]:
od:
the_table:=convert(the_table,listlist):
DocumentTools:-Tabulate(the_table,width=60):

[0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1.0]


Download error_table_nov_5_2024.mw

igcd(45,63)

     9

So it is (A)

 is there a way to generate solutions to an ODE by producing specific parameters?

May be I am not answering the correct question. Why not do something similar to you question How-I-Can-Give-Assumption-To-A-ODE-Equation  where you setup the values in list and iterate over them?

btw, I assumed m->1^{-} means limit as m->1 from left.   some of these values when substituted into the ode and m is replaced by 1, give same ode!. You can add more parameters as needed.

restart;

data:=[ [P=m^2,Q=-(1+m^2),R=1],
        [P=1,Q=-(1+m^2),R=m^2],
        [P=-m^2,Q=2*m^2-1,R=1-m^2],
        [P=1,Q=2*m^2-1,R=-m^2*(1-m^2)],
        [P=1/4,Q=(m^2-2)/2,R=m^2/4],
        [P=m^2/4,Q=(m^2-2)/2,R=m^2/4]
        ]:
the_result :=Array(1..0):
the_result ,= [P,Q,R,"current ode","solution"]:
ode:=diff(F(xi),xi)^2=P*F(xi)^4+Q*F(xi)^2+R:
for item in data do
    current_ode:=limit(eval(ode,item),m=1,'left'):
    sol:=[dsolve(current_ode)]:
    the_result ,= [rhs(item[1]),rhs(item[2]),rhs(item[3]),current_ode,sol]:        
od:
the_result:=convert(the_result,listlist):
DocumentTools:-Tabulate(the_result,weights=[10,20,20,45,45],width=60):


 

Download ode_answer_oct_26_2024.mw


 

interface(version);

`Standard Worksheet Interface, Maple 2024.1, Windows 10, June 25 2024 Build ID 1835466`

data:=[[A,B],[0,B],[A,0],[0,0]]:
the_result :=Array(1..0):
ode:=diff(G(xi),xi)=G(xi)^2+A*G(xi)+B:
the_result ,= ["A","B","solution"]:

for item in data do
    eval(ode,[A=item[1],B=item[2]]):
    sol:=dsolve(%):
    the_result ,= [item[1],item[2],sol]:
od:
the_result:=convert(the_result,listlist):
DocumentTools:-Tabulate(the_result,weights=[10,10,100],width=30):
 

Download dsolve_oct_25_2024.mw

update

This version evaluates U=a0+a1*G(xi) after solving for G(xi) using current cases. And then verifies the U solution against the current updated F_ode.

May be this is what the question asks for?

restart;

interface(version);

`Standard Worksheet Interface, Maple 2024.1, Windows 10, June 25 2024 Build ID 1835466`

data:=[[A=A,B=B],[A=0,B=B],[A=A,B=0],[A=0,B=0]]:
the_result :=Array(1..0):
G_ode:=diff(G(xi),xi)=G(xi)^2+A*G(xi)+B:
F_ode := (-delta*eta^2 + alpha*eta)*diff(diff(U(xi), xi), xi) - U(xi)*(2*eta*gamma*theta*(delta*eta - alpha)*U(xi)^2 + eta^2*delta*k^2 + (-alpha*k^2 - 2*delta*k)*eta + 2*k*alpha + delta) = 0:
the_cases := [alpha = delta*(A^2*eta^2 - 2*eta^2*k^2 - 4*B*eta^2 + 4*eta*k - 2)/(A^2*eta - 2*eta*k^2 - 4*B*eta + 4*k),
             eta = eta,
             a[0] = -A/(2*gamma*theta*RootOf(_Z^2*gamma*theta + 1)),
             a[1] = RootOf(_Z^2*gamma*theta + 1)
             ]:
a0_original_value:=select(has,the_cases,a[0])[]:
a1_original_value:=select(has,the_cases,a[1])[]:
the_result ,= ["A","B",a0_original_value,a1_original_value,G(xi),U(xi)=a[0] + a[1]*G(xi),"odetest result"]:

for item in data do
    current_G_ode:=eval(G_ode,item):
    sol_G:=dsolve(current_G_ode):
    current_case := eval(the_cases,item):
    current_F_ode:=eval(F_ode,current_case):
    my_U_sol:= eval(a[0] + a[1]*G(xi),[op(current_case),sol_G]);
    was_verified:=odetest(U(xi)=my_U_sol,current_F_ode);
    a0_usesd :=rhs(select(has,current_case,a[0])[]);
    a1_usesd :=rhs(select(has,current_case,a[1])[]);
    the_result ,= [rhs(item[1]),rhs(item[2]),a0_usesd,a1_usesd,sol_G,my_U_sol,was_verified]:
od:
the_result:=convert(the_result,listlist):
DocumentTools:-Tabulate(the_result,weights=[10,10,50,50,100,100,20],width=80):
 


Download dsolve_oct_25_2024_V2.mw

This is what I get in 2024.1.  Not sure if this is what you meant.

M:=sin(x)/cos(x);
simplify(M);

sin(x)/cos(x)

tan(x)

M:=1/sin(x);
simplify(M);

1/sin(x)

csc(x)

M:=1/cos(x);
simplify(M);

1/cos(x)

sec(x)

Q:=sqrt(beta/(B*cos(zeta*sqrt(-lambda))))

(beta/(B*cos(zeta*(-lambda)^(1/2))))^(1/2)

simplify(Q) assuming lambda>0

(beta*sech(zeta*lambda^(1/2))/B)^(1/2)

 

 

Download trig_simplification.mw

may be this is what you meant

old_values := [alpha = 0.33101604, theta = -2.54098361, mu = 4.89071038, k = 5.0, A[1] = 2.70491803, a = 3.63387978];

[alpha = .33101604, theta = -2.54098361, mu = 4.89071038, k = 5.0, A[1] = 2.70491803, a = 3.63387978]

new_values:=map(X->lhs(X)=MapleTA:-Builtin:-decimal(2,rhs(X)),old_values)

[alpha = .33, theta = -2.54, mu = 4.89, k = 5.00, A[1] = 2.70, a = 3.63]

#or

new_values:=map(X->lhs(X)=:-parse(sprintf("%.2f",rhs(X))),old_values)

[alpha = .33, theta = -2.54, mu = 4.89, k = 5.00, A[1] = 2.70, a = 3.63]

 

 

Download change_decimal.mw

Now use the new_values instead.

set the ranges then it works like Matlab

f:=x^(2*z)+y^(-2*y^(-z))+exp(-1/10*z^2)=1;
plots:-implicitplot3d(f,x=1.3..2,y=1.3..2,z=-2..-1.3,style=surface)

 

x^(2*z)+y^(-2*y^(-z))+exp(-(1/10)*z^2) = 1

 


As for the gridlines, this option does not seem to be supported for 3D plots in Maple. May be someone knows of a trick.

 

Download plot3d.mw

This fixes two issues you had. you need to remove the O() from the series solution, and need to add [] around ode and the IC. But Maple can't solve the final pde analytically.  V 2024.1
 

restart;

ode0 := diff(xi^2*diff(theta[E](xi), xi), xi)/xi^2 = -theta[E](xi)^n;

(2*xi*(diff(theta[E](xi), xi))+xi^2*(diff(diff(theta[E](xi), xi), xi)))/xi^2 = -theta[E](xi)^n

bc0 := theta[E](0) = 1, D(theta[E])(0) = 0;

theta[E](0) = 1, (D(theta[E]))(0) = 0

base := dsolve([bc0, ode0], theta[E](xi), series);
base := convert(base,polynom);

theta[E](xi) = series(1-(1/6)*xi^2+((1/120)*n)*xi^4+O(xi^6),xi,6)

theta[E](xi) = 1-(1/6)*xi^2+(1/120)*n*xi^4

pde1 := diff(xi^2*diff(psi(xi, mu), xi), xi)/xi^2 + diff((-mu^2 + 1)*diff(psi(xi, mu), mu), mu)/xi^2 = -psi(xi, mu)^n + v;

(2*xi*(diff(psi(xi, mu), xi))+xi^2*(diff(diff(psi(xi, mu), xi), xi)))/xi^2+(-2*mu*(diff(psi(xi, mu), mu))+(-mu^2+1)*(diff(diff(psi(xi, mu), mu), mu)))/xi^2 = -psi(xi, mu)^n+v

bc1 := psi(0, mu) = 1, D[1](psi)(0, mu) = 0, D[2](psi)(0, mu) = 0, limit(psi(xi, mu), v = 0) = rhs(base);

psi(0, mu) = 1, (D[1](psi))(0, mu) = 0, (D[2](psi))(0, mu) = 0, psi(xi, mu) = 1-(1/6)*xi^2+(1/120)*n*xi^4

psi(xi, mu)

psi(xi, mu)

pdsolve([pde1, bc1],psi(xi, mu))

pdsolve([pde1, bc1],psi(xi, mu),series)

pdsolve(pde1,psi(xi, mu))

 


 

Download Nonlinear_Elliptic_PDE_in_Spherical_Coordinate.mw

Change your alpha to start from say 0.05 instead from 0 then it works.

You can see from your formula for M that you are dividing by alpha (inside the integral). Hence you can not use alpha=0 in the slider.
 

params := {alpha = 1, gg = 0.1, k = 1, mu = 10, sigma = 5, w = 2};

{alpha = 1, gg = .1, k = 1, mu = 10, sigma = 5, w = 2}

M := sqrt(-(gamma*(gamma*k*mu - 2*k*sigma)*k/(gamma*sigma - 1) + k^2)/alpha)*sinh(2*(gamma*k*(2*gamma*k*w + 2*k^2 + sigma^2)/(gamma*sigma - 1) - 2*k*sigma)*t/(gamma*sigma - 1))*exp(((2*gamma*k*w + 2*k^2 + sigma^2)*t/(gamma*sigma - 1) + sigma*x)*I)/(cosh(2*(gamma*k*(2*gamma*k*w + 2*k^2 + sigma^2)/(gamma*sigma - 1) - 2*k*sigma)*t/(gamma*sigma - 1)) - 1);

(-(gamma*(gamma*k*mu-2*k*sigma)*k/(gamma*sigma-1)+k^2)/alpha)^(1/2)*sinh(2*(gamma*k*(2*gamma*k*w+2*k^2+sigma^2)/(gamma*sigma-1)-2*k*sigma)*t/(gamma*sigma-1))*exp(((2*gamma*k*w+2*k^2+sigma^2)*t/(gamma*sigma-1)+sigma*x)*I)/(cosh(2*(gamma*k*(2*gamma*k*w+2*k^2+sigma^2)/(gamma*sigma-1)-2*k*sigma)*t/(gamma*sigma-1))-1)

Explore(
     plot3d(abs(M), t = -5 .. 5, x = -10 .. 10,
        view = -10 .. 10, grid = [150, 150],
        color = [blue], style = surface, adaptmesh = false,
        size = [500, 500]),

     alpha = 0.05 .. 1.0,
     w = -5.0 .. 5.0,
     mu = -5.0 .. 5.0,
     sigma = -5.0 .. 5.0,
     k = -5.0 .. 5.0,

     placement = right);

 


 

Download change_alpha.mw

 

 

one way is to use allvalues

eq1:=y=1/2*(x-5)^2-6;
eq2:=y=3*x-2;

y = (1/2)*(x-5)^2-6

y = 3*x-2

sol:=solve([eq1,eq2],{x,y})

{x = RootOf(_Z^2-16*_Z+17), y = 3*RootOf(_Z^2-16*_Z+17)-2}

allvalues(sol)

{x = 8-47^(1/2), y = 22-3*47^(1/2)}, {x = 8+47^(1/2), y = 22+3*47^(1/2)}

 

 

Download allvalues.mw

 

 

restart;

mylist := [[sqrt(-5*x^2 - 5*x - 1) = -4*x - 1, {-1/3, -2/7}], [sqrt(-5*x^2 - 5*x - 1) = x + 1, {-1/2, -2/3}], [sqrt(-5*x^2 - 5*x - 1) = 4*x + 3, {-2/3, -5/7}], [sqrt(-5*x^2 - 5*x + 4) = -5*x + 3, {1/2, 1/3}], [sqrt(-5*x^2 - 4*x + 2) = -5*x + 2, {1/3, 1/5}], [sqrt(-5*x^2 - 4*x + 2) = -2*x + 1, {-1/3, 1/3}]]:

toX:=s->latex(s,output=string):
s:="\\begin{enumerate}[label=\\arabic*)]\n":
for item in mylist do
    s:=cat(s,"\\item $",toX(item[1])," $\\hfill Answer: $",toX(item[2]),"$\n"):
od:
s:=cat(s,"\\end{enumerate}\n"):
    

printf("%s",s)

\begin{enumerate}[label=\arabic*)]
\item $\sqrt{-5 x^{2}-5 x -1} = -4 x -1 $\hfill Answer: $\left\{-{\frac{2}{7}}, -{\frac{1}{3}}\right\}$
\item $\sqrt{-5 x^{2}-5 x -1} = x +1 $\hfill Answer: $\left\{-{\frac{2}{3}}, -{\frac{1}{2}}\right\}$
\item $\sqrt{-5 x^{2}-5 x -1} = 4 x +3 $\hfill Answer: $\left\{-{\frac{5}{7}}, -{\frac{2}{3}}\right\}$
\item $\sqrt{-5 x^{2}-5 x +4} = -5 x +3 $\hfill Answer: $\left\{{\frac{1}{2}}, {\frac{1}{3}}\right\}$
\item $\sqrt{-5 x^{2}-4 x +2} = -5 x +2 $\hfill Answer: $\left\{{\frac{1}{3}}, {\frac{1}{5}}\right\}$
\item $\sqrt{-5 x^{2}-4 x +2} = -2 x +1 $\hfill Answer: $\left\{-{\frac{1}{3}}, {\frac{1}{3}}\right\}$
\end{enumerate}

 


 

Download to_latex_sept_19_2024.mw

I do not think there is a way to tell dsolve to do this. But you can post-process the solution. Here is an example.

But pretty soon you will start having constants of integrations like c__100 and c__101 or may be c__5000 and so on depending on how many ODE's you plan to run in your loop. 
 

interface(version);

`Standard Worksheet Interface, Maple 2024.1, Windows 10, June 25 2024 Build ID 1835466`

restart;

fix_my_C:=proc(sol::`=`)::`=`;
   local C_used::set,my_C::set;
   C_used:= indets(sol,And(symbol, suffixed(c__, nonnegint))):
   my_C := map(X->X=`tools/genglobal`(c__),C_used):
   eval(sol,my_C);
end proc:
 

`tools/genglobal`[1](c__, 1, :-reset); #do once at start

ode:=diff(y(x),x$3)+y(x)=sin(x);
sol:=dsolve(ode);
sol:=fix_my_C(sol);

diff(diff(diff(y(x), x), x), x)+y(x) = sin(x)

y(x) = -(1/2)*cos(x)/((3^(1/2)-2)*(2+3^(1/2)))-(1/2)*sin(x)/((3^(1/2)-2)*(2+3^(1/2)))+c__1*exp(-x)+c__2*exp((1/2)*x)*cos((1/2)*3^(1/2)*x)+c__3*exp((1/2)*x)*sin((1/2)*3^(1/2)*x)

y(x) = -(1/2)*cos(x)/((3^(1/2)-2)*(2+3^(1/2)))-(1/2)*sin(x)/((3^(1/2)-2)*(2+3^(1/2)))+c__1*exp(-x)+c__2*exp((1/2)*x)*cos((1/2)*3^(1/2)*x)+c__3*exp((1/2)*x)*sin((1/2)*3^(1/2)*x)

ode:=diff(y(x),x$2)+y(x)=sin(x);
sol:=dsolve(ode);
sol:=fix_my_C(sol);

diff(diff(y(x), x), x)+y(x) = sin(x)

y(x) = sin(x)*c__2+cos(x)*c__1+(1/2)*sin(x)-(1/2)*cos(x)*x

y(x) = sin(x)*c__5+cos(x)*c__4+(1/2)*sin(x)-(1/2)*cos(x)*x

ode:=diff(y(x),x)+y(x)=sin(x);
sol:=dsolve(ode);
sol:=fix_my_C(sol);

diff(y(x), x)+y(x) = sin(x)

y(x) = -(1/2)*cos(x)+(1/2)*sin(x)+c__1*exp(-x)

y(x) = -(1/2)*cos(x)+(1/2)*sin(x)+c__6*exp(-x)

ode:=diff(y(x),x$5)+y(x)=0;
sol:=dsolve(ode);
sol:=fix_my_C(sol);

diff(diff(diff(diff(diff(y(x), x), x), x), x), x)+y(x) = 0

y(x) = c__1*exp(-x)-c__2*exp((-(1/4)*5^(1/2)+1/4)*x)*sin((1/4)*2^(1/2)*(5+5^(1/2))^(1/2)*x)-c__3*exp(((1/4)*5^(1/2)+1/4)*x)*sin((1/4)*2^(1/2)*(5-5^(1/2))^(1/2)*x)+c__4*exp((-(1/4)*5^(1/2)+1/4)*x)*cos((1/4)*2^(1/2)*(5+5^(1/2))^(1/2)*x)+c__5*exp(((1/4)*5^(1/2)+1/4)*x)*cos((1/4)*2^(1/2)*(5-5^(1/2))^(1/2)*x)

y(x) = c__7*exp(-x)-c__8*exp((-(1/4)*5^(1/2)+1/4)*x)*sin((1/4)*2^(1/2)*(5+5^(1/2))^(1/2)*x)-c__9*exp(((1/4)*5^(1/2)+1/4)*x)*sin((1/4)*2^(1/2)*(5-5^(1/2))^(1/2)*x)+c__10*exp((-(1/4)*5^(1/2)+1/4)*x)*cos((1/4)*2^(1/2)*(5+5^(1/2))^(1/2)*x)+c__11*exp(((1/4)*5^(1/2)+1/4)*x)*cos((1/4)*2^(1/2)*(5-5^(1/2))^(1/2)*x)

ode:=diff(y(x),x$2)+y(x)=sin(x)+1;
sol:=dsolve(ode);
sol:=fix_my_C(sol);

diff(diff(y(x), x), x)+y(x) = sin(x)+1

y(x) = sin(x)*c__2+cos(x)*c__1+(1/2)*sin(x)+1-(1/2)*cos(x)*x

y(x) = sin(x)*c__13+cos(x)*c__12+(1/2)*sin(x)+1-(1/2)*cos(x)*x

 


 

Download different_C_for_each_dsolve.mw

If you convert it to poly then it works. The command is convert(p,polynom)

p := asympt(x*1/(1 - a*x - b*x^2), x);
p:=convert(p,polynom);

-1/(b*x)+a/(b^2*x^2)-(1/b+a^2/b^2)/(b*x^3)-(-a/b^2-(a^2+b)*a/b^3)/(b*x^4)-((a^2+b)/b^3+a^2*(a^2+2*b)/b^4)/(b*x^5)+O(1/x^6)

-1/(b*x)+a/(b^2*x^2)-(1/b+a^2/b^2)/(b*x^3)-(-a/b^2-(a^2+b)*a/b^3)/(b*x^4)-((a^2+b)/b^3+a^2*(a^2+2*b)/b^4)/(b*x^5)

coeff(p,1/x)

-1/b

 

 

Download coeffs.mw

2 3 4 5 6 7 8 Last Page 4 of 20