D:\jknuba_2025_spring\jNM_5a.wxmx

kill(all);

 set variants 1,2,3

ro:1000;g:9.81;

fb(h):=2*sqrt(R**2-(R-h)**2);

integrate(ro*g*(R-h)*fb(h),h);

P(R,h):=6540.0*(R^2-(R-h)^2)^(3/2);

integrate(ro*g*(R-h)*fb(h)*h,h);

mP(R,h):=19620.0*((h*(2*R*h-h^2)^(3/2))/4+(R*(2*R*h-h^2)^(3/2))/12-(R^2*h*sqrt(2*R*h-h^2))/8+(R^3*sqrt(2*R*h-h^2))/8+(R^4*asin((2*R-2*h)/(2*abs(R))))/8);

P(1,0.391);

mP(1,0.391);

Start

kill(all);

ro:1000;g:9.81;R:1;

fb(h):=2*sqrt(R**2-(R-h)**2);

P:integrate(ro*g*(R-h)*fb(h),h,0,R);

integrate(ro*g*(R-h)*fb(h),h);

R:2;integrate(ro*g*(R-h)*fb(h),h);R:3;integrate(ro*g*(R-h)*fb(h),h);R:1;

fP(h):=6540.0*(1-(1-h)^2)^(3/2);

plot2d(fP(h),[h,0,R]);

Px:P/2;

fP1(h):=6540.0*(1-(1-h)^2)^(3/2)-Px;

tex(6540.0·(1-(1-h)^2)^(3/2)-Px);

plot2d(fP1(h),[h,0,R]);

----- set start coordinates xi1, xi2, yi1, yi2 ------

xi1:R;xi2:0;yi1:fP1(xi1);yi2:fP1(xi2);

Line of chord "y=kx"

fLchord(h):=((yi1-yi2)/(xi1-xi2))*h-Px;

eq:fLchord(x)=0;

solve(eq,x);

plot2d([fLchord(h),fP1(h)],[h,0,R]);

test -----------

w:(%pi*R**2)/2;

h_c:0.4244*R;

p:ro*g*h_c;

P_test:p*w,numer;

чисельні методи    ----   numerical methods   

ізоляції кореня    -----   root isolation

hi:0;dh:R/100,numer;

hi:hi+dh,numer;

Bi:fb(hi),numer;

wi:Bi*dh;

pi:ro*g*(R-hi);

Pi:pi*wi;

цикл    ----   cycle   FOR   (help F1)

for a:-3 thru 26 step 7 do display(a)$

for a:-3 thru 26 step 7 do display(a)$

hi:0;dh:R/10,numer;

for a:1 thru 9 step 1 do (hi:hi+dh,Bi:fb(hi),wi:Bi*dh,pi:ro*g*(R-hi),Pi:pi*wi,display(Pi))$

Sum Pi

hi:0;dh:R/100,numer;Ps:0;

for a:1 thru 99 step 1 do (hi:hi+dh,Bi:fb(hi),wi:Bi*dh,pi:ro*g*(R-hi),Pi:pi*wi,Ps:Ps+Pi,display(hi,Ps))$

hi:0;dh:R/1000,numer;Ps:0;

for a:1 thru 999 step 1 do (hi:hi+dh,Bi:fb(hi),wi:Bi*dh,pi:ro*g*(R-hi),Pi:pi*wi,Ps:Ps+Pi)$

Ps;

-----    HELP command  "while"

-------               for i: 1 while i <= 10 do s: s+i;

s:0;

for i: 1 while i <= 10 do s: s+i;

s;

# Second variant with command "while"

hi:0;dh:R/1000,numer;Ps:0;

for i: 1 while Ps <= Px do (hi:hi+dh,Bi:fb(hi),wi:Bi*dh,pi:ro*g*(R-hi),Pi:pi*wi,Ps:Ps+Pi,i:i+1);

hi;hi+dh;Ps;

# Method of chord Px:P/2;(Px(h);

integrate(ro*g*(R-h)*fb(h),h);

fP(h):=6540.0*(1-(1-h)^2)^(3/2)-Px;fP(0);fP(1);

plot2d(fP(h),[h,0,R]);

Cycle 1

x1:R;x2:0;y1:fP(x1);y2:fP(x2);DY:y1-y2;DX:x1-x2;

x:x1-((DX*y1)/DY);

y:fP(x);

if y > 0 then (y1:y,x1:x,DY:y1-y2,DX:x1-x2) else (y2:y,x2:x,DY:y1-y2,DX:x1-x2);y1;x1;y2;x2;DY;DX;

eq1:(DY/DX)=(y);

cycle 2

x:x1-((DX*y1)/DY);

y:fP(x);

if y > 0 then (y1:y,x1:x,DY:y1-y2,DX:x1-x2) else (y2:y,x2:x,DY:y1-y2,DX:x1-x2);y1;x1;y2;x2;DY;DX;

test_rel:y2/(3270/100),numer;

cycle 3

x:x1-((DX*y1)/DY);

y:fP(x);

if y > 0 then (y1:y,x1:x,DY:y1-y2,DX:x1-x2) else (y2:y,x2:x,DY:y1-y2,DX:x1-x2);y1;x1;y2;x2;DY;DX;

x;

cycle 4

x:x1-((DX*y1)/DY);

y:fP(x);

if y > 0 then (y1:y,x1:x,DY:y1-y2,DX:x1-x2) else (y2:y,x2:x,DY:y1-y2,DX:x1-x2);y1;x1;y2;x2;DY;DX;

cycle 5

x:x1-((DX*y1)/DY)$

y:fP(x)$

if y > 0 then (y1:y,x1:x,DY:y1-y2,DX:x1-x2) else (y2:y,x2:x,DY:y1-y2,DX:x1-x2)$

x;

# dichotomies ---------

Дихотомія — це розбиття цілого (чи множини) на дві частини (підмножини). Іншими словами, ця пара частин
має бути: 

    сукупно вичерпною: будь-який елемент має належати до однієї або іншої частини, та
    взаємовиключною: жоден елемент не може належати одночасно до обох частин.

kill(all);

ro:1000;g:9.81;R:1;

fP(h):=6540.0*(1-(1-h)^2)^(3/2);

Px:fP(1)/2;

fP1(h):=6540.0*(1-(1-h)^2)^(3/2)-Px;

x1:0;x2:R;

-----    cycle 1     -----

dx:(x2-x1)/2+x1;

Pi:fP1(dx),numer;

xy:[[dx,0],[dx,Pi]];xy1:[[dx/2,0],[dx/2,Pi]];

plot2d([fP1(h)],[h,0,1]);

plot2d ([discrete,xy]);

if Pi > 0 then (x2:dx) else (x1:dx);x2;x1;

test_rel:Pi/(Px/100);

-----    cycle 2     -----

dx:(x2-x1)/2+x1;

Pi:fP1(dx),numer;

if Pi > 0 then (x2:dx) else (x1:dx) ;x2;x1;

test_rel:Pi/(Px/100);

-----    cycle 3     -----

dx:(x2-x1)/2+x1;

Pi:fP1(dx),numer;

if Pi > 0 then (x2:dx) else (x1:dx) ;x2;x1;

test_rel:Pi/(Px/100);

-----    cycle 4     -----

dx:(x2-x1)/2+x1;

Pi:fP1(dx),numer;

if Pi > 0 then (x2:dx) else (x1:dx) ;x2;x1;

test_rel:Pi/(Px/100);

-----    cycle 5     -----

dx:(x2-x1)/2+x1;Pi:fP1(dx),numer;

if Pi > 0 then (x2:dx) else (x1:dx) ;x2;x1;

test_rel:Pi/(Px/100);

-----    cycle 6     -----

dx:(x2-x1)/2+x1;Pi:fP1(dx),numer;

if Pi > 0 then (x2:dx) else (x1:dx) ;x2;x1;

test

test_rel:Pi/(Px/100);