
y=x^nのグラフ - しばっち
2023/09/03 (Sun) 08:58:12
y=x^nのグラフ
OPTION ARITHMETIC COMPLEX
RANDOMIZE
SET WINDOW -5,5,-5,5
DRAW GRID
LET A=RND*10
LET B=RND*10-5
PRINT A;B
LET N=COMPLEX(A,B)
FOR X=-5 TO 5 STEP 1/64
IF X<0 THEN
LET Y=SGN(X)*ABS(X)^N
ELSEIF X=0 THEN
LET Y=0
ELSE
LET Y=X^N ! y=x^(a+bi) i^2=-1
END IF
IF X>-5 THEN
SET LINE COLOR "BLACK"
PLOT LINES:X0,RE(Y0);X,RE(Y)
SET LINE COLOR "RED"
PLOT LINES:X0,IM(Y0);X,IM(Y)
SET LINE COLOR "BLUE"
PLOT LINES:X0,ABS(Y0);X,ABS(Y)
SET LINE COLOR "GREEN"
PLOT LINES:X0,Y0*CONJ(Y0);X,Y*CONJ(Y)
END IF
LET X0=X
LET Y0=Y
NEXT X
END
--------------------------------------------------------------------------------------------
X=COS(θ)^N Y=SIN(θ)^M のグラフ
RANDOMIZE
OPTION BASE 0
OPTION ANGLE DEGREES
OPTION ARITHMETIC COMPLEX
SET WINDOW -1,1,-1,1
DIM X(360),Y(360)
LET A1=RND*10
LET B1=RND*20-10
LET A2=RND*10
LET B2=RND*20-10
PRINT A1;B1
PRINT A2;B2
LET N=COMPLEX(A1,B1)
LET M=COMPLEX(A2,B2)
FOR I=0 TO 360
LET C=COS(I)
LET S=SIN(I)
IF C=0 THEN
LET X(I)=0
ELSE
LET X(I)=SGN(C)*ABS(C)^N ! x=cos(θ)^(a+bi)
END IF
IF S=0 THEN
LET Y(I)=0
ELSE
LET Y(I)=SGN(S)*ABS(S)^M ! y=sin(θ)^(c+di)
END IF
NEXT I
DRAW GRID(.1,.1)
FOR I=0 TO 359
LET C=COS(I)
LET S=SIN(I)
SET LINE COLOR "BLACK"
PLOT LINES:RE(X(I)),RE(Y(I));RE(X(I+1)),RE(Y(I+1))
SET LINE COLOR "RED"
PLOT LINES:IM(X(I)),IM(Y(I));IM(X(I+1)) ,IM(Y(I+1))
SET LINE COLOR "BLUE"
PLOT LINES:SGN(C)*ABS(X(I)),SGN(S)*ABS(Y(I));SGN(C)*ABS(X(I+1)),SGN(S)*ABS(Y(I+1))
SET LINE COLOR "GREEN"
PLOT LINES:SGN(C)*X(I)*CONJ(X(I)),SGN(S)*Y(I)*CONJ(Y(I));SGN(C)*X(I+1)*CONJ(X(I+1)),SGN(S)*Y(I+1)*CONJ(Y(I+1))
NEXT I
END
Re: y=x^nのグラフ - しばっち
2023/09/17 (Sun) 08:58:36
y=x^nのグラフ
https://ja.wikipedia.org/wiki/四元数
RANDOMIZE
PUBLIC NUMERIC MAXLEVEL
LET MAXLEVEL=20
DIM A(4,4),B(4,4),C(4,4)
LET XS=-5
LET XE=5
LET YS=-5
LET YE=5
CALL CSET(B,RND*10,RND*10-5,RND*10-5,RND*10-5)
CALL CPRINT(B)
SET WINDOW XS,XE,YS,YE
DRAW GRID
FOR X=XS TO XE STEP (XE-XS)/128
CALL CSET(A,ABS(X),0,0,0)
CALL CPOWER(A,B,C)
IF X>XS THEN
SET LINE COLOR "BLACK"
PLOT LINES:X0,Y0;X,C(1,1)
SET LINE COLOR "RED"
PLOT LINES:X0,Y1;X,C(1,2)
SET LINE COLOR "BLUE"
PLOT LINES:X0,Y2;X,C(1,3)
SET LINE COLOR "GREEN"
PLOT LINES:X0,Y3;X,C(1,4)
END IF
LET Y0=C(1,1)
LET Y1=C(1,2)
LET Y2=C(1,3)
LET Y3=C(1,4)
LET X0=X
NEXT X
END
EXTERNAL SUB CSET(X(,),A,B,C,D)
LET X(1,1)=A
LET X(1,2)=B
LET X(1,3)=C
LET X(1,4)=D
LET X(2,1)=-B
LET X(2,2)=A
LET X(2,3)=-D
LET X(2,4)=C
LET X(3,1)=-C
LET X(3,2)=D
LET X(3,3)=A
LET X(3,4)=-B
LET X(4,1)=-D
LET X(4,2)=-C
LET X(4,3)=B
LET X(4,4)=A
END SUB
EXTERNAL SUB CADD(A(,),B(,)) ! A=A+B
MAT A=A+B
END SUB
EXTERNAL SUB CSUB(A(,),B(,)) ! A=A-B
MAT A=A-B
END SUB
EXTERNAL SUB CMUL(A(,),B(,)) ! A=A*B
MAT A=A*B
END SUB
EXTERNAL SUB CDIV(A(,),B(,)) ! A=A/B
DIM BB(4,4)
MAT BB=INV(B)
CALL CMUL(A,BB)
END SUB
EXTERNAL SUB CPRINT(A(,))
PRINT A(1,1);
IF A(1,2)<0 THEN PRINT "-"; ELSE PRINT "+";
PRINT ABS(A(1,2));"i";
IF A(1,3)<0 THEN PRINT "-"; ELSE PRINT "+";
PRINT ABS(A(1,3));"j";
IF A(1,4)<0 THEN PRINT "-"; ELSE PRINT "+";
PRINT ABS(A(1,4));"k"
END SUB
EXTERNAL SUB HORNER(X(,),Y(,),COEF())
DIM C(4,4)
CALL CSET(Y,COEF(MAXLEVEL),0,0,0) ! Y=COEF(N)
FOR I=MAXLEVEL-1 TO 0 STEP -1
CALL CMUL(Y,X) ! Y=Y*X
CALL CSET(C,COEF(I),0,0,0)
CALL CADD(Y,C) ! Y=Y*X+COEF(I)
NEXT I
END SUB
EXTERNAL SUB CEXP(X(,),Y(,)) ! Y=EXP(X)
DIM V(0 TO MAXLEVEL)
CALL EXPON(V)
CALL HORNER(X,Y,V)
END SUB
EXTERNAL SUB CLOG(X(,),Y(,)) ! Y=LOG(X)
DIM V(0 TO MAXLEVEL),XA(4,4),XB(4,4),T(4,4)
CALL LN(V)
MAT XA=X
MAT XB=X
CALL CSET(T,1,0,0,0)
CALL CSUB(XA,T)
CALL CADD(XB,T)
CALL CDIV(XA,XB) !'(X-1)/(X+1)
CALL HORNER(XA,Y,V)
MAT Y=2*Y
END SUB
EXTERNAL SUB CPOWER(X(,),Y(,),Z(,)) ! Z=X^Y
DIM XX(4,4),YY(4,4)
MAT YY=Y
CALL CLOG(X,XX)
CALL CMUL(YY,XX)
CALL CEXP(YY,Z)
END SUB
EXTERNAL SUB EXPON(COEF())
!'EXP(X)
LET COEF(0)=1
LET T=1
FOR I=1 TO MAXLEVEL
LET T=T/I
LET COEF(I)=T
NEXT I
END SUB
EXTERNAL SUB LN(COEF())
!'LOG((X-1)/(X+1))
FOR I=1 TO MAXLEVEL
IF MOD(I,2)=1 THEN LET COEF(I)=1/I
NEXT I
END SUB
------------------------------------------------------------------------------------------
x=cos(θ)^n y=sin(θ)^m のグラフ
OPTION ANGLE DEGREES
RANDOMIZE
PUBLIC NUMERIC MAXLEVEL
LET MAXLEVEL=20
SET WINDOW -1,1,-1,1
DRAW GRID(.1,.1)
DIM N(4,4),M(4,4),C(4,4),S(4,4),X(4,4),Y(4,4)
CALL CSET(N,RND*10,RND*20-10,RND*20-10,RND*20-10)
CALL CSET(M,RND*10,RND*20-10,RND*20-10,RND*20-10)
CALL CPRINT(N)
CALL CPRINT(M)
FOR I=0 TO 359
LET CC=COS(I)
CALL CSET(X,ABS(CC),0,0,0) ! X=COS(I)
CALL CPOWER(X,N,C) ! C=COS(I)^N
LET SS=SIN(I)
CALL CSET(Y,ABS(SS),0,0,0) ! Y=SIN(I)
CALL CPOWER(Y,M,S) ! S=SIN(I)^M
IF I>0 THEN
SET LINE COLOR "BLACK"
PLOT LINES:C1,S1;SGN(CC)*ABS(C(1,1)),SGN(SS)*ABS(S(1,1))
SET LINE COLOR "RED"
PLOT LINES:C2,S2;SGN(CC)*ABS(C(1,2)),SGN(SS)*ABS(S(1,2))
SET LINE COLOR "BLUE"
PLOT LINES:C3,S3;SGN(CC)*ABS(C(1,3)),SGN(SS)*ABS(S(1,3))
SET LINE COLOR "GREEN"
PLOT LINES:C4,S4;SGN(CC)*ABS(C(1,4)),SGN(SS)*ABS(S(1,4))
END IF
LET C1=ABS(C(1,1))*SGN(CC)
LET S1=ABS(S(1,1))*SGN(SS)
LET C2=ABS(C(1,2))*SGN(CC)
LET S2=ABS(S(1,2))*SGN(SS)
LET C3=ABS(C(1,3))*SGN(CC)
LET S3=ABS(S(1,3))*SGN(SS)
LET C4=ABS(C(1,4))*SGN(CC)
LET S4=ABS(S(1,4))*SGN(SS)
NEXT I
END
以下略(上記からコピペしてください)