X^2+Y^2-3*X*Y+1=0のグラフ

 投稿者:しばっち  投稿日:2020年 4月 5日(日)14時27分39秒
  X^2+Y^2-3*X*Y+1=0のグラフ
https://hp.vector.co.jp/authors/VA008683/F_GRAPH.htm


導関数 dy/dx=(2*x-3*y)/(3*x-2*y)を求め、dx/dt=3*x-2*y dy/dt=2*x-3*yとして
2元連立常微分方程式をルンゲクッタ法で解く
https://www.wolframalpha.com/input/?i=x%5E2%2By%5E2-3*x*y%2B1%3D0%2Cdy%2Fdx&lang=ja

陰関数 F(x,y)=0のグラフはdy/dx=f(x,y)の解曲線とすれば描画できる。

LET XS=-5
LET XE=5
LET YS=-5
LET YE=5
SET WINDOW XS,XE,YS,YE
DRAW GRID
LET N=100 !'分割数
LET H=(XE-XS)/N
FOR L=1 TO 2
   READ XX,YY
   DATA 1,1
   DATA -1,-1
   FOR I=1 TO 2
      LET T=0
      LET X=XX !'初期値
      LET Y=YY
      WHEN EXCEPTION IN
         FOR J=1 TO N
            LET K1=F1(T,X,Y)
            LET L1=F2(T,X,Y)

            LET K2=F1(T+H/2,X+H/2*K1,Y+H/2*L1)
            LET L2=F2(T+H/2,X+H/2*K1,Y+H/2*L1)

            LET K3=F1(T+H/2,X+H/2*K2,Y+H/2*L2)
            LET L3=F2(T+H/2,X+H/2*K2,Y+H/2*L2)

            LET K4=F1(T+H,X+H*K3,Y+H*L3)
            LET L4=F2(T+H,X+H*K3,Y+H*L3)

            LET X0=X+H*(K1+2*K2+2*K3+K4)/6
            LET Y0=Y+H*(L1+2*L2+2*L3+L4)/6
            LET T0=T+H
            PLOT LINES:X,Y;X0,Y0
            LET X=X0
            LET Y=Y0
            LET T=T0
         NEXT J
      USE
         PLOT LINES
      END WHEN
      LET H=-H
   NEXT  I
NEXT L
END

EXTERNAL  FUNCTION F1(T,X,Y) !'dx/dt=f1(t,x,y)
LET F1=3*X-2*Y
END FUNCTION

EXTERNAL  FUNCTION F2(T,X,Y) !'dy/dt=f2(t,x,y)
LET F2=2*X-3*Y
END FUNCTION
--------------------------------------------------------------------------------
1/(X-Y)-X+3*Y=0のグラフ
dy/dx=((x-y)^2+1)/(3*(x-y)^2+1)
https://www.wolframalpha.com/input/?i=1%2F%28x-y%29-x%2B3*y%3D0%2Cdy%2Fdx&lang=ja

LET XS=-5
LET XE=5
LET YS=-5
LET YE=5
SET WINDOW XS,XE,YS,YE
DRAW GRID
LET N=100 !'分割数
LET H=(XE-XS)/N
FOR L=1 TO 2
   READ XX,YY
   DATA 1,0
   DATA -1,0
   FOR I=1 TO 2
      LET T=0
      LET X=XX !'初期値
      LET Y=YY
      WHEN EXCEPTION IN
         FOR J=1 TO N
            LET K1=F1(T,X,Y)
            LET L1=F2(T,X,Y)

            LET K2=F1(T+H/2,X+H/2*K1,Y+H/2*L1)
            LET L2=F2(T+H/2,X+H/2*K1,Y+H/2*L1)

            LET K3=F1(T+H/2,X+H/2*K2,Y+H/2*L2)
            LET L3=F2(T+H/2,X+H/2*K2,Y+H/2*L2)

            LET K4=F1(T+H,X+H*K3,Y+H*L3)
            LET L4=F2(T+H,X+H*K3,Y+H*L3)

            LET X0=X+H*(K1+2*K2+2*K3+K4)/6
            LET Y0=Y+H*(L1+2*L2+2*L3+L4)/6
            LET T0=T+H
            PLOT LINES:X,Y;X0,Y0
            LET X=X0
            LET Y=Y0
            LET T=T0
         NEXT J
      USE
         PLOT LINES
      END WHEN
      LET H=-H
   NEXT  I
NEXT L
END

EXTERNAL  FUNCTION F1(T,X,Y) !'dx/dt=f1(t,x,y)
LET F1=3*(X-Y)^2+1
END FUNCTION

EXTERNAL  FUNCTION F2(T,X,Y) !'dy/dt=f2(t,x,y)
LET F2=(X-Y)^2+1
END FUNCTION
 

Re: X^2+Y^2-3*X*Y+1=0のグラフ

 投稿者:しばっち  投稿日:2020年 4月 8日(水)20時36分41秒
  > No.4817[元記事へ]

陰関数 F(x,y)=0 の導関数 dy/dx=f(x,y) は数値微分でも代用できるようです。

LET XS=-5
LET XE=5
LET YS=-5
LET YE=5
SET WINDOW XS,XE,YS,YE
DRAW GRID
LET N=100 !'分割数
LET H=(XE-XS)/N
FOR L=1 TO 2
   READ XX,YY
   DATA 1,1
   DATA -1,-1
   FOR I=1 TO 2
      LET T=0
      LET X=XX !'初期値
      LET Y=YY
      WHEN EXCEPTION IN
         FOR J=1 TO N
            LET K1=F1(T,X,Y)
            LET L1=F2(T,X,Y)

            LET K2=F1(T+H/2,X+H/2*K1,Y+H/2*L1)
            LET L2=F2(T+H/2,X+H/2*K1,Y+H/2*L1)

            LET K3=F1(T+H/2,X+H/2*K2,Y+H/2*L2)
            LET L3=F2(T+H/2,X+H/2*K2,Y+H/2*L2)

            LET K4=F1(T+H,X+H*K3,Y+H*L3)
            LET L4=F2(T+H,X+H*K3,Y+H*L3)

            LET X0=X+H*(K1+2*K2+2*K3+K4)/6
            LET Y0=Y+H*(L1+2*L2+2*L3+L4)/6
            LET T0=T+H
            PLOT LINES:X,Y;X0,Y0
            LET X=X0
            LET Y=Y0
            LET T=T0
            IF X>XE OR X<XS OR Y<YS OR Y>YE THEN EXIT FOR
         NEXT J
      USE
         PLOT LINES
      END WHEN
      LET H=-H
   NEXT  I
NEXT L
END

EXTERNAL  FUNCTION F1(T,X,Y) !'dx/dt=f1(t,x,y)
LET F1=FY(X,Y)
END FUNCTION

EXTERNAL  FUNCTION F2(T,X,Y) !'dy/dt=f2(t,x,y)
LET F2=-FX(X,Y)
END FUNCTION

EXTERNAL  FUNCTION F(X,Y) !'陰関数 F(x,y)=0
LET F=X^2+Y^2-3*X*Y+1
END FUNCTION

EXTERNAL  FUNCTION FX(X,Y) !' ∂/∂x F(x,y)
LET H=1/256
LET FX=(F(X-2*H,Y)-8*F(X-H,Y)+8*F(X+H,Y)-F(X+2*H,Y))/(12*H)
END FUNCTION

EXTERNAL  FUNCTION FY(X,Y) !' ∂/∂y F(x,y)
LET H=1/256
LET FY=(F(X,Y-2*H)-8*F(X,Y-H)+8*F(X,Y+H)-F(X,Y+2*H))/(12*H)
END FUNCTION
 

Re: X^2+Y^2-3*X*Y+1=0のグラフ

 投稿者:しばっち  投稿日:2020年 4月12日(日)14時46分5秒
  > No.4818[元記事へ]

下記のようにしても陰関数のグラフが描画できます。


LET LEFT=-5
LET RIGHT=5
LET BOTTOM=-5
LET TOP=5
SET POINT STYLE 1
SET WINDOW LEFT,RIGHT,BOTTOM,TOP
ASK PIXEL SIZE XSIZE,YSIZE
DRAW GRID
FOR YY=0 TO YSIZE-1
   FOR XX=0 TO YSIZE-1
      LET X=WORLDX(XX)
      LET Y=WORLDY(YY)
      WHEN EXCEPTION IN
         LET L=ABS(F(X,Y))
         IF L<1 AND L/SQR(FX(X,Y)^2+FY(X,Y)^2)<.01 THEN PLOT POINTS: X,Y
      USE
      END WHEN
   NEXT  XX
NEXT  YY
END

EXTERNAL  FUNCTION F(X,Y) !'陰関数 F(X,Y)=0
LET F=X*X+Y*Y-3*X*Y+1
!'LET F=1/(X-Y)-X+3*Y
!'LET F=SIN(X)+SIN(2*Y)+SIN(3*X)+SIN(4*Y)+SIN(5*X)
!'LET F=(FF(Y)^2-FF(X)^4+FF(X)^6)*(FF(X)^2-FF(Y)^4+FF(Y)^6)
!'LET F=(FF(X)^2+FF(Y)^2-3)*(1.5*FF(X)^4-FF(X)^6-1.5*FF(Y)^4)
!'LET F=(FF(X)^2+FF(Y)^2)^3-4*FF(X)^2*FF(Y)^2
END FUNCTION

EXTERNAL  FUNCTION FF(X)
LET FF=X-2.6*INT((X+1.3)/2.6)
END FUNCTION

EXTERNAL  FUNCTION FX(X,Y) !' ∂/∂x F(x,y)
LET H=1/256
!'LET FX=(-F(X-H,Y)+F(X+H,Y))/(2*H)
LET FX=(F(X-2*H,Y)-8*F(X-H,Y)+8*F(X+H,Y)-F(X+2*H,Y))/(12*H)
!'LET FX=(-F(X-3*H,Y)+9*F(X-2*H,Y)-45*F(X-H,Y)+45*F(X+H,Y)-9*F(X+2*H,Y)+F(X+3*H,Y))/(60*H)
!'LET FX=(3*F(X-4*H,Y)-32*F(X-3*H,Y)+168*F(X-2*H,Y)-672*F(X-H,Y)+672*F(X+H,Y)-168*F(X+2*H,Y)+32*F(X+3*H,Y)-3*F(X+4*H,Y))/(840*H)
END FUNCTION

EXTERNAL  FUNCTION FY(X,Y) !' ∂/∂y F(x,y)
LET H=1/256
!'LET FY=(-F(X,Y-H)+F(X,Y+H))/(2*H)
LET FY=(F(X,Y-2*H)-8*F(X,Y-H)+8*F(X,Y+H)-F(X,Y+2*H))/(12*H)
!'LET FY=(-F(X,Y-3*H)+9*F(X,Y-2*H)-45*F(X,Y-H)+45*F(X,Y+H)-9*F(X,Y+2*H)+F(X,Y+3*H))/(60*H)
!'LET FY=(3*F(X,Y-4*H)-32*F(X,Y-3*H)+168*F(X,Y-2*H)-672*F(X,Y-H)+672*F(X,Y+H)-168*F(X,Y+2*H)+32*F(X,Y+3*H)-3*F(X,Y+4*H))/(840*H)
END FUNCTION
 

戻る