D(69>:>#0 104000/E SYMBOLISCHE DIFFERENTATION ALGEBRAISCHER AUSDRUECKEd (C) 1982 MARTIN ALBRECHTy 65xx MICRO MAG:: zugelassene Operatoren:$ monadisch: Funktionsoperator, V'orzeichen. dyadisch : =,+,-,*,/,^8-B Vorrang : ( ), Vorzeichen, FunktionGL ^,*/,=+-nV Mehrfachzuweisungen sind erlaubt` "*" Zeichen duerfen nicht weggelassen werdenj Exponentialzahlen sind nicht erlaubtt&~ zugelassene Namen; Namen duerfen nicht mit Funktionsnamen ueberein-b stimmen, diese jedoch enthalten. Signifikante Stellen <= 255 DATENTABELLEN UEBERGANGSMATRIX: & # = + - * / ^ ( )% ; 2,2,2,2,2,2,2,2,2,1,4 : ' 2,2,5,5,5,5,5,2,2,5,5 : &? 1,5,1,5,5,5,5,5,2,5,5 : #a 2,2,2,2,2,2,2,2,2,1,5 : = 2,2,1,5,5,2,2,2,2,5,5 : +  2,2,1,5,5,2,2,2,2,5,5 : - 2,2,1,5,5,5,5,2,2,5,5 : * 2,2,1,5,5$,5,5,2,2,5,5 : / ( 2,2,1,5,5,5,5,5,2,5,5 : ^-2 2,2,1,2,2,2,2,2,2,3,1 : (3<DF BEGRENZER:bP ',&,#,=,+,-,*,/,^,(,),;Z "&"= VORZEICHEN, "#"=FUNKTION ALLG.d "'"=ANFANGSZEICHEN, ";"=SCHLUSSZEICHENnx FUNKTIONSTABELLE: # AUFBAU: (FUNKTION,ABLEITUNG),(...' SIN,COS(!),COS,-SIN(!),EXP,EXP(!)G SQR,1/(2*SQR(!)),LN,1/(!)o TG,1/(COS(!)^2),CTG,-1/(SIN(!)^2) ARCTG,1/(1+(!)^2),ARCCTG,-1/(1+(!)^2) 1000 FZ9 : ANZAHL DER FUNKTIONEND" DATENSTRUKTUREN: UM(10,11) : UEBERGANGSMATRIX< FL$(FZ) : FUNKTIONSLISTEd FA$(FZ) : DIFF. FUNKTIONEN FS(15) : FUNKTIONSSTACK O$(12) : OPERATORENLISTE DS$(30) : BEGRENZERSTACKR! OS$(30) : OPERANDENSTACK$" AO$(30) : DIFF. OPERANDEN*,H6 ERZEUGUNG DER TABELLEN:N@fJ UEBERGANGSMATRIX:T X1 10 : Y1 11^ UM(X,Y) : Y,Xhr OPERATORENLISTE:| X1 12 : O$(X) :   LISTE DER FKT UND IHRER ABLEITUNGEN% X1 FZ: FL$(X),FA$(X): +P INITIALISIERUNG DER PARAMETER:{ Q0 : STAPELZEIGER OPERANDEN P1 : STAPELZEIGER BEGRENZER SZ0 : " FUNKTIONSSTACK DS$(1)"'": ANFANGSBEGRENZER LE$"'" : "1 IZ0 : EINGABEZEIGER7V FORMEL ZUR UEBERSETZUNG:g"Formel";F$"ableiten nach";DX$ (F$,1)";" F$F$";"&0 BEGINN HAUPTPROGRAMM:D SCANNERsN DER SCANNER LIEST DEN EINGABESTRING F$,X UND ERKENNT OPERANDEN UND BEGRENZER.Vb OPERANDEN UND IHRE ABLEITUNG WERDENl DIREKT AUF DEN JEWEILIGEN STACK GESCHO-v BEN. DAS ERKENNEN EINES BEGRENZERS{ FUEHRT ZUM VERLASSEN DES SCANNERS I$"" IZIZ1: CS$(F$,IZ,1)  CV0 X1 124 CS$O$(X) CVX:L CV0 2010d I$I$CS$: 1930o 1930 I$"" 2130 IZIZ1 CV0 X1 FZ I$FL$(X) CVX  CV0 _2090  CS$"#": SZSZ1: FS(SZ)CV: CV3: 2130?* QQ1: OS$(Q)I$: AO$(Q)"0"Y4 I$DX$ AO$(Q)"1"f> LE$I$qH 1920R CS$ "-" 2170\ T$LE$: 4470f V 2170p CV2: CS$"&"z LE$CS$^ DER SCANNER HAT EINEN BEGRENZER GEFUNDEN. UEBERGANGSMATRIX(BEGR. AUF DEM STACK, NEUER BEGR.). LEGT DAS WEITERE VORZEICHEN FEST (FAELLE 1 .. 5). X1 12 DS$(P)O$(X) DVX RSUM(DV,CV1)9 RS 2300,2370,2420,2460,2560' --- RS=1 ; FEHLER IN DER FORMEL0" "? "Fehler:"H F$W IZ) "^"]$ c. 8 --- RS=2 ; RECHTER OPERAND NICHT OKB PP1L DS$(P)CS$V 1920` j --- RS=3 ; KLAMMERPAAR UEBERFLUESSIGt PP1~ 1920 & --- RS=4 ; ABLEITUNG BEENDET2 QQ1y "Ableitung von ";(F$, (F$)1);" nach ";DX$;" :" AO$(1) --- RS=5 ; UEBERSETZUNG UND ABLEITUNG ERZEUGE DIE UEBERSETZUNG FUNKTION:! DS$(P)"#" 26106! G$FL$(FS(SZ))"("OS$(Q)")"A! 2670G! Y!( VORZEICHEN:r!2 DS$(P)"&" 2660!< UT$OS$(Q): 2820: G$UT$!F 2670!P !Z ALLE UEBRIGEN OPERATOREN"d L$OS$(Q1)!: DL$DS$(P): R$OS$(Q): 4020: G$RT$"n AG$""$"x ?" STELLE OPERATOR FESTN" X1 10h" DS$(P)O$(X) JPXn" t" " ZUR ABLEITUNG DER JEWEILIGEN OPERATOREN IN DER REIHENFOLGE : VORZEICHEN, FUNKTION, "=,+,-,*,/,^!# JP 0,2800,2920,3040,3100,3100, 3200,3200,3420'# K# --- ABLEITUNG DES VORZEICHENSb# (-U)' WIRD -(U')# UT$AO$(Q): 2820: AO$(Q)UT$# OS$(Q)G$: 3710# UT$"0" # 3810: LE2 # UT$"("UT$")" $ (UT$,1)"-" 2860"$" UT$(UT$,2): 7$, UT$"-"UT$: =$6 %@ --- ABLEITUNG DER FUNKTIONEN DIE AEUSSERE ABLEITUNG WIRD DER TABELLE FA$ ENTNOMMEN UND DER FUNKTIONSOPERAND EINGESEP$TZT. DIE INNERE ABLEITUNG WIRD DARAUFHIN ANGEFUEGT.3%h ZW$FA$(FS(SZ)): Z$""F%r X1 (ZW$)[%| UT$(ZW$,X,1)v% UT$"!" UT$OS$(Q)% Z$Z$UT$% % L$Z$: DL$"*": R$AO$(Q): 4020% OS$(Q)G$: AO%$(Q)RT$: SZSZ1% 3710% !& --- ABLEITUNG DES '=' OPERATORS9& (U=V)' WIRD U'=V'Z& AG$AO$(Q1)DS$(P)AO$(Q)m& AO$(Q1)AG$x& 3690~& & --- ABLEITUNG DER '+' & '-' OPERATOREN& (U+V)' WIRD U'+V' BZW. U'-V'' L$_&AO$(Q1): DL$DS$(P): R$AO$(Q): 4020-'& AO$(Q1)RT$: 36903'0 `': --- ABLEITUNG DER '*' & '/' OPERATOREN'D ABLEITUNG NACH PRODUKTREGEL FUER '*':'N (U*V)' WIRD U'*V+U*V''X (U/V)' WIRD (U'*V-U*V')/V^2'b IM '/'' FALL WIRD NACH DER PRODUKTREGEL$(l ABGELEITET,WOBEI DAS '+' DURCH EIN '-'N(v ERSETZT WIRD UND DER NENNER V^2 ER-a({ GAENZT WIRD.n( Z$"+"( DS$(P)"/" Z$"-"( L$AO$(Q1): DL$"*": R$OS$(Q): 4020: ZW$R8(T$) L$OS$(Q1): DL$"*": R$AO$(Q): 4020R) L$ZW$: DL$Z$: R$RT$: 4020j) DS$(P)"*" 3300{) UT$OS$(Q)) 3810) LE3 UT$"("UT$")") L$RT$: DL$"/": R$UT$"^2": 4x)020) AO$(Q1)RT$) 3690) * ** --- ABLEITUNG DES '^' OPERATORSN+ UNTERTEILUNG IN 3 FAELLE (ABL. NACH X) 1) (X^Y)' WIRD Y*X^(Y-1) 2) (Y^X)' =EXP(X*LN(Y))' (Y^X)' WIRD ALSO EXP(X*LN(*Y))*X'*LN(Y) 3) (X^X)' =EXP(X*LN(X))' (X^X)' => EXP(X*LN(X))*(X'*LN(X)+X*LN(X)') :w+\ AO$(Q1)"0" AO$(Q)"0" 3440+f AO$(Q1)"0": 3690+p AO$(Q)"0" 3520+z FALL 1 : X^Y+ L$OS$(Q): DL$"+ -": R$"1": 4020(, L$OS$(Q1): DL$"^": R$RT$: 4020], L$OS$(Q): DL$"*": R$RT$: 4020, L$RT$: DL$"*": R$AO$(Q1): 4020, AO$(Q1)RT$: 3690, FAELLE 2&3 : Y^X & X^X, Z$"LN, ("OS$(Q1)")"- L$OS$(Q): DL$"*": R$Z$: 40204- AG$"EXP("RT$")"O- AO$(Q1)"0" 3610b- FALL 2 : Y^X- L$Z$: DL$"*": R$AO$(Q): 4020- L$AG$: DL$"*": R$RT$: 4020- AO$(- Q1)RT$: 3690- FALL 3 : X^X;. L$AO$(Q): DL$"*": R$Z$: 4020: Z$RT$p.$ L$"1": DL$"/": R$OS$(Q1): 4020.. L$RT$: DL$"*": R$AO$(Q1): 4020.8 L$OS$(Q): DL$"*": R$RT$: 4a. 020/B L$Z$: DL$"+": R$RT$: 4020D/L L$AG$: DL$"*": R$RT$: 4020W/V AO$(Q1)RT$]/`o/j OS$(Q1)G$y/tQQ1/~PP1/ 2230 1 UNTERPROGRAMM ZUR KLAS/ SIFIZIERUNG EINES STRINGS IN 3 KLASSEN IN ABHAENGIGKEIT DER VORHANDENEN OPERATOREN KLASSE 1 : "+" UND "-" OPERATOR KLASSE 2 : "*" UND "/" OPERATOR KLASSE 3 : ZAHLEN,VARIABLEN,AUSDRUECKE0 SOWIE DIE OPERATOREN "=","^" & VORZEICHEN 1 LE3: LA$"'";1 (UT$)1 LA$"A"^1 KZ0: R10: R20: R30h1 H0{1 X1 (UT$)1  K$(UT$,X,1)1 KZKZ(K$")")(K$"(")1 T$LA$: V0: K$"-" 1 44702( K$"+" (K$"-" V) R1R1(KZ0)A22 K$"*" K$"/" R2R2(KZ0)`2< LA$K$: K$"^" H1f2Fz2P R20 LE22Z R10 LE12d4n W2 UNTERPROGRAMM ZUR KLAMMERUNG VON AUS- DRUECKEN. ZWEI OPERANDEN WERDEN NACH IHRER KLASSE GEKLAMMERT UND DURCH EINEN OPERATOR VERKUEPFT. SIND BEIDE OPERANDEN ZAHLEN, SO WIRD DAS ERGEBNIS FUE!3R DIE OPERATOREN +,-,*,/,^ BERECHNET.+4 UT$L$: 3810: L1LE: H1HJ4 UT$DL$: 3810: L2LEo4 UT$R$: 3810: L3LE: H3H4 DL$"=" 42004 L13 L33 (H1H3) 40904 V1(L$): V2(R$)4 (V10 L$"04") (V20 R$"0") 4350 5 L21 4190$5 (R$,1)"-" 414095 DL$"+" 4130Z5 DL$"-" R$"+"(R$,2)g5" DL$""{5, RT$L$DL$R$56 L$"0" RT$DL$R$5@ R$"0" RT$L$5J (RT$,1)"+" w5 RT$(RT$,2)5T6^ L22 4300B6h RT$L$: L1L2 RT$"("RT$")"T6r RT$RT$DL$6| (L3L2) (DL$"/" L33) UT$"("UT$")"6 RT$RT$UT$6 L22 6 L$"1" RT$R$66 L$"1" DL$"/" RT$"1/"UT$7 R$"1" RT$L$37 L$"0" R$"0" RT$"0"97D7 4200Z7 DL$"^" 4340s7 R$"0" RT$"1"7 R$"1" RT$L$77 DL$"+" RTV1V27 DL$"-" RTV1V27 DL$"*" *7 RTV1V27 DL$"/" RTV1V28& DL$"^" RTV1V2(80 RT$(RT)E8: RT0 RT$(RT$,2)K8DQ8NW8X~8b UNTERPROGRAMM ZUR UNTERSCHEIDUNG8l DES VORZEICHENS VOM '-' OPERATORS.8v A(T$): V0: T$"" 8 V1: A8`n35 A41 V0.9 (A91)(A64)(A123)(A96)(A58) (A47) V049~