ÿ‚d:�ÙIPLOT - SHAREWARE F(X) PLOT WITH INTEGRATION°n:�ÙCOPYRIGHT 1985,1986,1987 Prowess, Inc.ÜxÀ:É Ý:’,,Ð:È ,,:¿ ,:XX$çÖ(N, )‚† R(3),U(3),X(3),Y(3),XC(3),YC(3)2Œ¿ ,:Ê ,:‘ ÿ–(É)éÖ(),Í)éÿ–(»)d–‚ Lç Ì :Ê L,:‘ ÿ–(º):Ê L,>:‘ ÿ–(º):ƒ Lƒ Ê ,":‘ "RECTLINEAR PLOT"¸ªÊ ,:‘ "Copyright 1986,1987,1988 Prowess,Inc."â´¿ ,:Ê ,:‘ ÿ–(È)éÖ(),Í)éÿ–(¼) ¾¿ ,:Ê ,:‘ ÿ–(É)éÖ(N,Í)éÿ–(»)+ÈÊ ,K:¿ ,:‘ "V2.6":¿ ,:Ò‚ Lç Ì ]ÜÊ L,:‘ ÿ–(º):Ê L,P:‘ ÿ–(º)eæƒ L�ðÊ ,:‘ ÿ–(È)éÖ(N,Í)éÿ–(¼):¿ ,£ú‹ FLAGèæ Í TâÊ  ,:‘ "Do you want to read the instructions? (Y/N/Q)"Ê  ,>:K$çÞ:‹ K$ç"" Í <‹ K$ç"Y" ï K$ç"y" Í Ê  ,:‘ XX$:Ê ,K:‘ " ":‰ B w"‹ K$ç"N" ï K$ç"n" Í Ê  ,:‘ XX$:Ê ,K:‘ " ":‰ @“,‹ K$ç"Q" ï K$ç"q" Í ¶�6‰ ³@Ê  ,:‘ Ö(K, )ÊJ¯ XêY:PIçO–hÚI‚ÕT¿  ,%^Ê ,:‘ "Enter your equation in the form Y=f(X) and press 'return'":¿ ,…hÊ ,:‘ "EXAMPLE: Y = 2*X^2 - 20*X - 3 or Y = exp(-.3*X)*sin(4*X)":Ê  , :¿ ,:‘ "Y ="8r‹ FLAGç Í Ê ,:¿ ,:‘ "YOUR EQUATION WAS ":¿ ,:Ê ,:‘ "Y = ";EQ$:¿ ,:Ê ,:‘ "DIVISION BY ZERO OCCURED-REENTER EQUATION AND CHECK RANGE OF X":¿  ,:FLAGç:Ê ,Ø|‹ FLAGç Í Ê ,:¿ ,:‘ "YOUR EQUATION WAS ":¿ ,:Ê ,:‘ "Y = ";EQ$:¿ ,:Ê ,:‘ "PLEASE CHECK FOR SYNTAX ERROR AND REENTER ":¿  ,:FLAGç:Ê ,ƒ†‹ FLAGç Í Ê ,:¿ ,:‘ "YOUR EQUATION WAS ":¿ ,:Ê ,:‘ "Y = ";EQ$:¿ ,:Ê ,:‘ "AN ILLEGAL FUNCTION CALL WAS MADE-POSSIBLY AN IMMAGINARY NUMBER WAS CREATED"×�‹ FLAGç Í Ê ,:‘ " - REENTER THE EQUATION. CHECK YOUR RANGE SPECIFICATION."ðš¿ ,:FLAGç:Ê ,?¤:�Ù---------------------inputs user's equation string---------------------�®B$ç"1910 Y=" :�Ùline # at which user eq. will be placed---------½¸Ê  ,:° … EQ$:‹ ÿ’(EQ$)ç Í Å:� :‰ hÍÂC$ ç B$éEQ$Ì:�Ù----------writes the equation string to a file called funct.bas---------6Öº "O",#,"FUNCT.BAS"Fà ‘ #,C$Oê» #Ÿô:�Ù-------merges funct.bas with this pgm. and continues execution----------ÆþþŒ ½ "FUNCT.BAS",0,ALL:• § ‰ Š:�Ù----------------------clear upper & lower fields------------------------->‚ LLç Ì :Ê LL,:‘ Ö(L, ):ƒ LLh‚ LLç Ì :Ê LL,:‘ Ö(K, ):ƒ LL:޹&:�Ù-------------------------------------------------------------------------Ä0¿  ,Î:� D:�Ù--user defines range of x over which to plot-------------VNÊ ,:‘ "Enter RANGE of X over which to plot. (Xmin,Xmax)":¿  ,•XÊ ,:‘ "NOTE: XMIN must be smaller than XMAX !!!":¿  ,ïbÊ  ,:‘ "The X-AXIS will be scaled + and - whichever (Xmin or Xmax) has the largest"lÊ  ,:‘ "absolute value."hvÊ ,:‘ "Example: If you wish to plot the function from X = -10 to X = 0, you would"À€Ê ,:‘ "enter -10,0. The X axis would run from -10 to +10 and the function would"ŠÊ ,:‘ "be plotted from X = -10 to X = 0, as you requested."”Ê ,4:… "",XMIN,XMAXTž‹ XMINæçXMAX Í Å:Ê ,4:‘ " ":‰ ”¡¨INC ç (XMAXêXMIN)ìÇ :�Ùsets up plotting increment of x®²À:¿ ,þ¼:�Ù ------------determines largest values of x and y for scaling ----------Æ� BÐÊ  ,:‘ "FINDING MAX VALUES OF X AND Y FOR SCALING"^ÚXçXMIN:Ê ,:• § ‰ Šhä� v‚îYBIGçÿ†(Y):XBIGçÿ†(X)‘ø‚ Kç Ì Ȥ X ç X é INC°  � vÓ ‹ ÿ†(Y) æ YBIG Í YBIGçÿ†(Y)Û ƒ K *‹ ÿ†(XMIN) æ ÿ†(XMAX) Í XBIGçÿ†(XMIN) :¡ XBIGçÿ†(XMAX)g 4:�Ù------------------------draws plotting field-----------------------------m >Åy HÈ ,:ÀÀ R° (‰,ÍÌ„)ê(í,�),,B :�Ùdraws graph field---------------Þ \‚ Içö(lƒ Ì š™‡ Ï ö(lƒ)!f° (;é(Iì�U),ÍÌ„)ê(;é(Iì�U),�),,, ªª :�Ù+ vert grid linesu!p° (;ê(Iì�U),ÍÌ„)ê(;ê(Iì�U),�),,, ªª :�Ù - vert grid lines¿!z° (‰,ff&‡éI)ê(í,ff&‡éI),,, ªª :�Ù+ horiz grid lines "„° (‰,ff&‡êI)ê(í,ff&‡êI),,, ªª :�Ù- horiz grid lines"Žƒ I_"˜° (;,ÍÌ„)ê(;,�), :�Ùdraws vertical axis -----------------­"¢° (‰,ff&‡)ê(í,ff&‡), :�Ùdraws horizontal axis ---------------ý"¬:�Ù -------------------prints axis labels, etc. ---------------------------#¶Ê ,(#À‘ "Y"#ÊÊ  ,@(#Ô‘ "X"3#ÞÊ ,@G#è‹ YBIGèç Í üj#ò‘ × "+#######.####";YBIG:‰ ƒ#ü‘ × "+#.#####";YBIG:�#Ê ,A¤#‹ YBIG#èç Í $Ç#‘ × "#######.####";êYBIG:‰ .ß#$‘ × "#.#####";êYBIGñ#.Ê ,A:‘ " "ý#8Ê , $B‹ XBIGèç Í V4$L‘ × "#######.####";êXBIG:‰ `L$V‘ × "#.#####";êXBIG^$`Ê , :‘ " "j$jÊ ,8~$t‹ XBIGèç Í ˆ¡$~‘ × "+#######.####";XBIG:‰ ’¹$ˆ‘ × "+#.#####";XBIGÅ$’Ê ,(Ï$œ‘ "0"Û$¦Ê  ,å$°‘ "0"5%º:�Ù -----------------------plots points------------------------------------_%ÄXçXMIN:W$çÖ(P, ):Ê ,:‘ "PLOTTING"i%Î� v·%ØÆ ((;é(Xë±)ìXBIG),(ff&‡ê(Yëš™‡ìYBIG))) :�Ùsets cursor to 1st pt.&â‚ Kç Ì È :�Ùscales and plots user function&ì XçXéINC&ö � vU& ° ê((;é(Xë±)ìXBIG),(ff&‡ê(Yëš™‡)ìYBIG)),]& ƒ Kv&Ê ,:‘ " "�&Ê ,™&(º "I",,"FUNCT.BAS"¦&2 … #,T$Ç&<Ê ,:‘ "GRAPH OF ";ÿƒ(T$,)$'FÊ ,:‘ W$:Ê ,:‘ "PRESS 'A' TO FIND AREA UNDER CURVE, OTHERWISE, PRESS 'C' ":Ê ,NC'PÊ ,N:A$çÞ:‹ A$ç"" Í PS'ZÊ ,:‘ W$í'd‹ A$ç"A" ï A$ç"a" Í � ¼:Ê ,A:‘ "PRESS ANY KEY":Ê ,A:‘ "TO CONTINUE":‚ Iç Ì ¸ :ƒ I:Ê ,A:‘ " ":Ê ,A:‘ " " :¡ ‚ (nÊ ,P:W$çÞ:‹ W$ç"" Í n(x‰ –2(‚‹ A$ç"C" ï A$ç"c" Í –>(ŒÅ:‰ FO(–» :È ,,,œ( À :�Ù--------------- provides choice of continuing or not -------------¶(ª‘ :‘ :‘ :‘ :‘ :¿  ,ý(´‘ " DISPLAY A TABLE OF CALCULATED X & Y VALUES ? .....1"D)¾‘ " CHANGE RANGE OF X FOR PRESENT FUNCTION ...........2"‹)È‘ " PLOT A NEW FUNCTION...............................3"Ò)Ò‘ " EXIT .............................................4"Ø)Ü‘*æ‘ " MAKE SELECTION "@*ðÊ  ,*:SS$çÞ:‹ SS$ç"" ï ÿ”(SS$)è ï ÿ”(SS$)æ Í ð`*ú• ÿ”(SS$) ‰ ,,x,Àk*Q ç  z*XçXMINêINC€*ÀÐ*":�Ù--------------------------sets up page header---------------------------+,¿  ,:‘ " POINT # X Y "8+6Ê ,<:¿ ,:‘ "PRESS ANY KEY TO"X+@Ê ,<:‘ "CONTINUE OR 'Q'"w+JÊ ,<:‘ "FOR NEXT MENU."Ž+T¿ ,:Jç:Kç:Lç�+^‚ Iç Ì ©+hXçXéINC,r� v:‹ FLAGç Í Ê I:‘ " ":‰ š,|Ê I, :‘ L5,†Ê I,:‘ × "#######.####";XU,�Ê I,&:‘ × "#######.####";Y_,šLçLés,¤‹ LçÈ Í FLAGç{,®ƒ I†,¸FLAGç¥,ÂÊ ,P:A$çÞ:‹ A$ç"" Í ÂÅ,Ì‹ A$ç"Q" ï A$ç"q" Í À:‰ ôÖ,Ö‹ LèÈ ‰ ^õ,àÊ ,P:A$çÞ:‹ A$ç"" Í àû,êÀK-ô:�Ù-------------------provides choice of continuing or not-----------------\-þ¿  ,:Ê , -‘ "ÿ PLOT SAME FUNCTION AGAIN ................1"ä-‘ " CHANGE RANGE OF X FOR PRESENT FUNCTION ..2"(.‘ " INPUT A NEW FUNCTION ....................3"n.&‘ " EXIT ....................................4":‘¤.0‘ " MAKE SELECTION "Ý.:Ê  ,/:GG$çÞ:‹ GG$ç"" ï ÿ”(GG$)è ï ÿ”(GG$)æ Í :ý.D• ÿ”(GG$) ‰ 4,,x,À/NÀ:‹ IçÈ Í ê/XQ ç Q é  +/bYçÿ‰(X)z/l:�Ù-----------------------------user function-----------------------------‰/vYç ëÿ‡(X)�/€Žß/Š:�Ù-----------------------error trap routine-syntax,/0,--------------------0”‹ Õç î Ôçv Í À:FLAGç:À:Å:¨ Œ60ž‹ Õç î (Ôçv ï ÔçØ) Í À:Å:FLAGç:¨ Œ]0¨‹ Õç î Ôçv Í À:FLAGç:À:Å:¨ Œs0²• § ‰ :À:‰ Œ½0¼Z$çÖ(O, ) :�Ù----integration subroutine----------------------------Ö0ÆÊ ,:‘ "Z$":Ê ,1Ð… "To find AREA between X1 and X2, enter in the form: X1,X2 ";X1,X2N1ÚÊ ,:‘ Z$:Ê ,:‘ "INTEGRATING":Ê ,PW1äXçX1a1î� v1øÆ (;é(Xë±ìXBIG),ff&‡)±1° ê(;é(Xë±ìXBIG),(ff&‡ê(Yëš™‡ìYBIG))),º1 XçX2Ä1� vâ1 Æ (;é(Xë±ìXBIG),ff&‡)2*° ê(;é(Xë±ìXBIG),(ff&‡ê(Yëš™‡ìYBIG))),/24AINC ç (X2êX1)ìû:DAçF2>‚ JçX1 Ì X2 Ï AINCU2H XçJéAINCa2R � v�2\ Æ (;é(Xë±ìXBIG),ff&‡)µ2f ° ê(;é(Xë±ìXBIG),(ff&‡ê(Yëš™‡ìYBIG))),È2p XçJé(AINCì)Ô2z � ví2„ DAçDAé(AINCëÿ†(Y))õ2Žƒ J<3˜Ê ,:‘ Z$:Ê ,:‘ "APPROX AREA BETWEEN ";X1;" AND ";X2;" = "u3¢Ê ,-:‘ × "#######.####";DA:Ê ,<:‘ " SQ. UNITS"{3¬ŽÌ3¶:�Ù-------------------------------quit menu---------------------------------à3ÀÈ ,,:À:¿ ,4ÊÊ ,:‘ "RESTART THIS PROGRAM --------------1"I4ÔÊ  ,:‘ "RETURN TO PLOT MENU ---------------2"~4ÞÊ  ,:‘ "EXIT ------------------------------3"�4èÊ ,:‘ "Make selection"¼4òÊ ,2:Q$çÞ:‹ Q$ç"" Í òÊ4üQTçÿ”(Q$)æ4 ‹ QTè ï QTæ Í Å:‰ ò÷4 ‹ QTç Í x5 ‹ QTç Í þŒ "PLOTM"+5$ ‹ QTç Í É •:¿ ,:À:þƒ75. Å:‰ ò‡58 :�Ù---------------------------------help-----------------------------------‘5B � ç5L Ê ,:‘ "* This program plots functions of the form Y = f(X) over any range of X"6V Ê ,:‘ "that you specify."^6` Ê ,:‘ "* If your equation uses letters other than 'Y' and 'X', you will have to"œ6j Ê  ,:‘ "change to the Y = f(X) format before entering."ó6t Ê  ,:‘ "* BASIC language syntax must be used when entering your equation. Check"G7~ Ê  ,:‘ "your BASICA (or equiv.) manual if you are not familiar with handling"m7ˆ Ê ,:‘ "BASIC math statements."Ã7’ Ê ,:‘ "* Although this program contains statements to trap 'division by zero'"8œ Ê ,:‘ "that might occur, BASICA does not allow trapping this error. Some other"o8¦ Ê ,:‘ "BASICA equivalents DO allow 'division by zero' trapping. If you get a"Ä8° Ê ,:‘ "'division by zero' error message, you will have to rerun the program."í8º Ê ,:‘ "Press any key to continue" 9Ä Ê ,:K$çÞ:‹ K$ç"" Í Ä 9Î � j9Ø Ê ,:‘ "* To minimize the chance of inadvertently creating a 'divide by zero'"À9â Ê ,:‘ "situation, the program divides the plotting range into 199 parts. Thus,":ì Ê ,:‘ "if you specify that the equation be plotted from X = -10 to +20, the"i:ö Ê ,:‘ "program will first plot the value of Y for X = -10. The next plot point"À: Ê  ,:‘ "will be the value of Y for X = -10 + (30/199). The 30/199 is added to X"; Ê  ,:‘ "for each iteration. Unless you enter zero as one of the range numbers, the"b; Ê  ,:‘ "likelyhood of accidently dividing by zero is very small."·; Ê ,:‘ "* After your curve is plotted, you may calculate the approximate area"<( Ê ,:‘ "between the curve and the X-axis by selecting the 'A' option. Take the "W<2 Ê ,:‘ "'C' (continue) option if you don't want to find the area."³<< Ê ,:‘ "* After plotting, you may review the X and Y values for each plotting point."Ù