summaryrefslogtreecommitdiff
path: root/app/schulis-mathematiksystem/1.0/src/mat.nullstellen
blob: 3900a28c44738adf936a4b5dcd8fcbeebd349cc2 (plain)
1
2
3
4
5
6
PACKETnullstellenDEFINESberechnenullstelle:LETesc="�",bell="�",unterstrich="_",abbruchzeichen="!",niltext="",del="�",maxfelder=100,menupunktende="m",weiterarbeit="w",graphdefinieren="e",naechste="q",protokoll="p",protokolldrucken="d",drucken="D",graphicstandardtasten="wvqm",standardtasten="?wvqm",standardunddrucktasten="?dwvqm",anzahlmoeglicherteilverfahren=3,nullstellenverfahrensname="Nullstellen",nullstellenverfahren1="Intervallhalbierungsverfahren - tabellarisch",nullstellenverfahren2="Newtonverfahren - tabellarisch",nullstellenverfahren3="Newtonverfahren - graphisch",titelzeile12="Nullstellen: Newtonverfahren",titelzeile3="Nullstellen: Intervallhalbierung",PARAMETER=ROWmaxfelderTEXT,kurzerstrich="____________________";TEXT VARausstieg;THESAURUS CONSTmoeglicheteilverfahren:=nullstellenverfahrensnamen;PROCberechnenullstelle(ABBILDUNG CONSTf):pruefedieverwendbarkeitderfunktion;zeigeaktuellearbeitsfunktion;initialisieredienoetigenvariablen;REPbestimmeanzuwendendeoperation;fuehreoperationausEND REP.pruefedieverwendbarkeitderfunktion:IFlaenge(abbildungsterme(f))<>1THENgibmeldung(anwendungstext(88));LEAVEberechnenullstelleEND IF.zeigeaktuellearbeitsfunktion:page;schreibearbeitsfunktion(f);strich(5).initialisieredienoetigenvariablen:WINDOW VARwausgabe:=window(2,7,77,16);TAG VAReingabemaske;PARAMETER VARraster;INT VARstartfeld:=2,ersterauszugebendersatz,ersteauszugebendespalte,varindex:=1,anzahlderiterationsschritte:=10,parameingabespalte,endederueberschrift;VECTOR VAReingabevektor:=vector(laenge(abbildungsvariablen(f)),0.0);ABBILDUNG VARfbild;BOOL VARvariablenvectorbestimmt:=LENGTHeingabevektor=1,varindexbestimmt:=ebene=1CORvariablenvectorbestimmt,firsttime:=TRUE;TEXT VARverfahrensname;setzedefaultgraph.bestimmeanzuwendendeoperation:INT VARzeile;schreibestatuszeile(nullstellenverfahrensname);REPverfahrensname:=one(24,7,56,15,moeglicheteilverfahren,anwendungstext(173),anwendungstext(185));IFverfahrensname<>niltextTHEN FORzeileFROM7UPTO20REPcursor(24,zeile);out(del)END REP;LEAVEbestimmeanzuwendendeoperationELIFlsexitkey=menupunktendeTHENverfahrensende(menupunktende);LEAVEberechnenullstelleEND IF END REP.fuehreoperationaus:TEXT VARdatname;FILE VARsf;IFverfahrensname=nullstellenverfahren1THENintervallhalbierungsverfahrenELSEbildedienewtonfolgeEND IF.bildedienewtonfolge:REAL VARstartwert:=0.0;anzahlderiterationsschritte:=10;schreibestatuszeile(titelzeile12);IFableitungsverbot(adresse(f))THENgibmeldung(anwendungstext(87));LEAVEbildedienewtonfolgeEND IF;REPbestimmeparameterfuernewtonfolge;bildenewtonvorschrift;IFverfahrensname=nullstellenverfahren2THENermittleergebnisse;zeigeergebnisse;raeumeaufELSEgraphischeveranschaulichungdesnewtonverfahrensEND IF UNTILausstieg<>weiterarbeitEND REP.bestimmeparameterfuernewtonfolge:initialisiereeingabemaskefuernewtonfolge;REPeditiereeingabemaske;werteausstiegausEND REP.initialisiereeingabemaskefuernewtonfolge:eingabemaske:=formular(6);startfeld:=2;raster(1):=niltext;IFvarindexbestimmtTHENraster(2):=NAMEauswahl(abbildungsvariablen(f),varindex);setfieldinfos(eingabemaske,2,TRUE,TRUE,FALSE);startfeld:=3ELSEraster(2):=NAMElistenanfang(abbildungsvariablen(f))END IF;raster(3):=text(startwert);raster(4):=text(anzahlderiterationsschritte).editiereeingabemaske:IF NOTvarindexbestimmtTHENraster(2)CATkurzerstrichEND IF;raster(3)CATkurzerstrich;raster(4)CATkurzerstrich;footnote(anwendungstext(184));show(eingabemaske);putget(eingabemaske,raster,startfeld,ausstieg);IFiserrorTHENclearerror;gibmeldung(errormessage);LEAVEfuehreoperationausEND IF.werteausstiegaus:SELECTpos(standardtasten,ausstieg)OF CASE1:IF NOTvarindexbestimmtTHENgibinfofensteraus(wausgabe,14)ELSEgibinfofensteraus(wausgabe,15)END IF CASE2:footnote(anwendungstext(114));IFalleeingabenkorrektTHEN IF NOTvariablenvectorbestimmtTHENparameingabespalte:=1;belegediefunktionsparameterEND IF;LEAVEbestimmeparameterfuernewtonfolgeEND IF CASE3:LEAVEfuehreoperationausCASE4,5:verfahrensende(ausstieg);LEAVEberechnenullstelleEND SELECT.alleeingabenkorrekt:
korrektervariablenbezeichnerCANDkorrekteranfangswertCANDkorrektefolgengliedanzahl.korrektervariablenbezeichner:TERM VARvaradresse:=listenanfang(abbildungsvariablen(f));IFebene=1CORlaenge(abbildungsvariablen(f))=1THENvarindex:=1;TRUE ELSEchangeall(raster(2),unterstrich,niltext);varadresse:=listenposition(abbildungsvariablen(f),raster(2));IFvaradresse<>nilTHENvarindex:=PLATZvaradresse;TRUE ELSEstartfeld:=2;gibmeldung(anwendungstext(147)+raster(2)+anwendungstext(148));FALSE END IF END IF.korrekteranfangswert:changeall(raster(3),unterstrich,niltext);REAL VARanfangswert:=realzahl(raster(3));IF NOTiserrorTHENreplace(eingabevektor,varindex,anfangswert);startwert:=anfangswert;TRUE ELSEclearerror;startfeld:=3;gibmeldung(anwendungstext(157));FALSE END IF.korrektefolgengliedanzahl:changeall(raster(4),unterstrich,niltext);anzahlderiterationsschritte:=int(raster(4));IFiserrorTHENgibmeldung(anwendungstext(187));clearerror;FALSE ELIFlastconversionokCANDanzahlderiterationsschritte>0CANDanzahlderiterationsschritte<4001THEN TRUE ELSEgibmeldung(anwendungstext(187));startfeld:=4;FALSE END IF.bildenewtonvorschrift:fbild:=newtonvorschrift(f,varindex);IFiserrorTHENgibmeldung(errormessage);clearerror;LEAVEbildedienewtonfolgeEND IF.ermittleergebnisse:datname:=scratchdateiname;sf:=sequentialfile(output,datname);iteration(sf,f,fbild,eingabevektor,varindex,anzahlderiterationsschritte).zeigeergebnisse:endederueberschrift:=3;IFlength(eingabevektor)>1CANDlength(eingabevektor)<=10THENendederueberschriftINCR(length(eingabevektor)-1)END IF;ersterauszugebendersatz:=endederueberschrift;ersteauszugebendespalte:=8;outframe(wausgabe);REPfootnote(anwendungstext(184));scroll(wausgabe,datname,8,endederueberschrift,gesamtstellen(ebene)+1,ersterauszugebendersatz,ersteauszugebendespalte,standardunddrucktasten,ausstieg);SELECTpos(standardunddrucktasten,ausstieg)OF CASE1:show(formular(9));warteCASE2:aufbereitetdrucken(datname,text(funktionsstring(f),druckspalten),8,endederueberschrift,gesamtstellen(ebene)+1);outframe(wausgabe)CASE3:page(wausgabe,TRUE);LEAVEzeigeergebnisseCASE4:page(wausgabe,TRUE);raeumeauf;LEAVEfuehreoperationausCASE5,6:raeumeauf;verfahrensende(ausstieg);LEAVEberechnenullstelleEND SELECT END REP.raeumeauf:forget(datname,quiet);loescheabbildung(fbild).graphischeveranschaulichungdesnewtonverfahrens:bereitegraphischeveranschaulichungvor;fuehregraphischeveranschaulichungdurch;beendegraphischeveranschaulichung.bereitegraphischeveranschaulichungvor:initkoordinatensystem;bauegraphbildschirmauf(f,titelzeile12);cursor(2,3);out(funktionszeile).funktionszeile:"Anfangswert "+raster[2]+" = "+raster[3]+"        "+anwendungstext(98)+raster[4].fuehregraphischeveranschaulichungdurch:initialisierevariablen;zeichnegraphenderarbeitsfunktion(f1,eingaben,varindex);REPberechneundzeichnedenfunktionswert;verarbeiteeingabezeichenPER.initialisierevariablen:INT VARaktuellesfolgenglied:=0;ABBILDUNG VARf1:=f,f2:=fbild;BOOL VARloeschflag1:=FALSE,loeschflag2:=FALSE,fehler:=FALSE;VECTOR VAReingaben:=eingabevektor;REAL VARfolgenwert:=eingabenSUBvarindex,funktionswert,linkerrand,rechterrand;IFkomplexefunktion(f1)THENloeschflag1:=TRUE;f1:=aufloesung(f1)END IF;IFkomplexefunktion(f2)THENloeschflag2:=TRUE;f2:=aufloesung(f2)END IF;berechnegraphintervall;IFfirsttimeTHENberechnekoordinatensystem(f1,linkerrand,rechterrand,eingabevektor,varindex);firsttime:=FALSE END IF.berechnegraphintervall:linkerrand:=startwert-5.0;rechterrand:=startwert+5.0;IFlinkerrand>0.0THENlinkerrand:=-linkerrandEND IF;IFrechterrand<0.0THENrechterrand:=-rechterrandEND IF.berechneundzeichnedenfunktionswert:funktionswert:=ergebnis(f1,eingaben)SUB1;IFiserrorTHENclearerror;fehler:=TRUE;ausstieg:=weiterarbeit;LEAVEfuehregraphischeveranschaulichungdurchEND IF;pen(1,1,1,aktuellerstift);matmove(folgenwert,0.0);matdraw(folgenwert,funktionswert);gibinfos.gibinfos:cursor(54,10);out(text(aktuellesfolgenglied,4));cursor(54,13);out(text(compress(wandle(folgenwert)),25));cursor(54,16);out(text(compress(wandle(funktionswert)),25)).
verarbeiteeingabezeichen:TEXT VARch;REPclearbuffer;inchar(ch);IFch=escTHENinchar(ausstieg);IFpos(graphicstandardtasten,ausstieg)<>0THEN LEAVEfuehregraphischeveranschaulichungdurchELIFausstieg=graphdefinierenTHENdefinierebereich;LEAVEverarbeiteeingabezeichenEND IF;out(bell)ELIFch="+"CANDaktuellesfolgenglied<anzahlderiterationsschritteTHENaktuellesfolgengliedINCR1;berechneundzeichnenaechstesfolgenglied;LEAVEverarbeiteeingabezeichenELIFch=protokollTHENzeigedasprotokollELIFch=druckenTHENdruckegraphELSEout(bell)END IF;END REP.definierebereich:loeschetexte;graphfenstereinstellen;loeschezeichnung;initkoordinatensystem;firsttime:=FALSE;definitionsmenu(TRUE,ausstieg);IFausstieg<>weiterarbeitTHEN LEAVEfuehregraphischeveranschaulichungdurchEND IF;aktuellesfolgenglied:=0;folgenwert:=startwert;replace(eingaben,varindex,startwert);IFautomatischerskalierungsmodusTHENberechnekoordinatensystem(f1,koordinatensystemxmin,koordinatensystemxmax,eingabevektor,varindex)END IF;zeichnegraphenderarbeitsfunktion(f1,eingabevektor,varindex).zeigedasprotokoll:gibprotokollaus(anwendungstext(211),protokolldrucken+graphicstandardtasten,ausstieg);IFausstieg=weiterarbeitTHENzeichnetexte;gibinfosELSE LEAVEfuehregraphischeveranschaulichungdurchEND IF.berechneundzeichnenaechstesfolgenglied:graphfenstereinstellen;move(folgenwert,funktionswert);folgenwert:=naechstesfolgenglied(f2,eingaben,varindex);IFiserrorTHENclearerror;fehler:=TRUE;LEAVEfuehregraphischeveranschaulichungdurchEND IF;pen(1,1,1,aktuellerstift);matdraw(folgenwert,0.0).beendegraphischeveranschaulichung:IFfehlerTHENgibgraphicmeldung(anwendungstext(175))END IF;IFloeschflag1THENloeschetemporaereabbildung(f1)END IF;IFloeschflag2THENloeschetemporaereabbildung(f2)END IF;endplot;plotend;beendegraphikarbeit;SELECTpos(graphicstandardtasten,ausstieg)OF CASE1:erneuerebildschirmCASE2:erneuerebildschirm;loeschetemporaereabbildung(fbild);LEAVEfuehreoperationausCASE3,4:verfahrensende(ausstieg);loeschetemporaereabbildung(fbild);LEAVEberechnenullstelleEND SELECT.erneuerebildschirm:schreibestatuszeile(titelzeile12);schreibearbeitsfunktion(f);strich(5).intervallhalbierungsverfahren:REAL VARlinkegrenze:=-5.0,rechtegrenze:=5.0;schreibestatuszeile(titelzeile3);REPbestimmeparameterfuerintervallhalbierung;datname:=scratchdateiname;sf:=sequentialfile(output,datname);intervallhalbierung(sf,f,eingabevektor,varindex,anzahlderiterationsschritte,linkegrenze,rechtegrenze);zeigeergebnissederintervallhalbierung;forget(datname,quiet)UNTILausstieg<>weiterarbeitEND REP.bestimmeparameterfuerintervallhalbierung:initialisiereeingabemaskefuerintervallhalbierung;REPeditiereeingabemaskefuerintervallhalbierung;werteausstiegbeiintervallhalbierungausEND REP.initialisiereeingabemaskefuerintervallhalbierung:eingabemaske:=formular(7);startfeld:=2;raster(1):=niltext;IFvarindexbestimmtTHENraster(2):=NAMEauswahl(abbildungsvariablen(f),varindex);setfieldinfos(eingabemaske,2,TRUE,TRUE,FALSE);startfeld:=3ELSEraster(2):=NAMElistenanfang(abbildungsvariablen(f))END IF.editiereeingabemaskefuerintervallhalbierung:REAL VARhilf1,hilf2;INT VARhilf3,i;IF NOTvarindexbestimmtTHENraster(2)CATkurzerstrichEND IF;raster(3):=text(linkegrenze);raster(4):=text(rechtegrenze);raster(5):=text(anzahlderiterationsschritte);FORiFROM3UPTO5REPraster(i)CATkurzerstrichEND REP;footnote(anwendungstext(184));show(eingabemaske);putget(eingabemaske,raster,startfeld,ausstieg);IFiserrorTHENgibmeldung(errormessage);clearerror;ausstieg:=naechsteEND IF.werteausstiegbeiintervallhalbierungaus:SELECTpos(standardtasten,ausstieg)OF CASE1:IFebene=2CANDlaenge(abbildungsvariablen(f))>1THENgibinfofensteraus(wausgabe,17)ELSEgibinfofensteraus(wausgabe,16)END IF CASE2:footnote(anwendungstext(114));IFallebisektionseingabenkorrektTHENlinkegrenze:=hilf1;rechtegrenze:=hilf2;anzahlderiterationsschritte:=hilf3;IF NOTvariablenvectorbestimmtTHENparameingabespalte:=40;belegediefunktionsparameterEND IF;LEAVEbestimmeparameterfuerintervallhalbierungEND IF CASE3:LEAVEfuehreoperationausCASE4,5:verfahrensende(ausstieg);
LEAVEberechnenullstelleEND SELECT.allebisektionseingabenkorrekt:korrektervariablenbezeichnerCANDkorrektelinkegrenzeCANDkorrekterechtegrenzeCANDkorrekteteilungsanzahl.korrektelinkegrenze:changeall(raster(3),unterstrich,niltext);hilf1:=realzahl(raster(3));IF NOTiserrorTHEN TRUE ELSEclearerror;startfeld:=3;gibmeldung(anwendungstext(157));FALSE END IF.korrekterechtegrenze:changeall(raster(4),unterstrich,niltext);hilf2:=realzahl(raster(4));IF NOTiserrorTHEN IFhilf1>=hilf2THENstartfeld:=4;gibmeldung(anwendungstext(160));FALSE ELSE TRUE END IF ELSEclearerror;startfeld:=4;gibmeldung(anwendungstext(157));FALSE END IF.korrekteteilungsanzahl:changeall(raster(5),unterstrich,niltext);hilf3:=int(raster(5));IFiserrorTHENgibmeldung(anwendungstext(187));clearerror;FALSE ELIFlastconversionokCANDhilf3>0CANDhilf3<4001THEN TRUE ELSEgibmeldung(anwendungstext(187));startfeld:=5;FALSE END IF.zeigeergebnissederintervallhalbierung:endederueberschrift:=3;IFlength(eingabevektor)>1CANDlength(eingabevektor)<=10THENendederueberschriftINCR(length(eingabevektor)-1)END IF;ersterauszugebendersatz:=endederueberschrift;ersteauszugebendespalte:=8;outframe(wausgabe);REPfootnote(anwendungstext(184));scroll(wausgabe,datname,8,endederueberschrift,gesamtstellen(ebene)+1,ersterauszugebendersatz,ersteauszugebendespalte,standardunddrucktasten,ausstieg);SELECTpos(standardunddrucktasten,ausstieg)OF CASE1:show(formular(9));warteCASE2:aufbereitetdrucken(datname,text(funktionsstring(f),druckspalten),8,endederueberschrift,gesamtstellen(ebene)+1);outframe(wausgabe)CASE3:page(wausgabe,TRUE);LEAVEzeigeergebnissederintervallhalbierungCASE4:page(wausgabe,TRUE);forget(datname,quiet);LEAVEfuehreoperationausCASE5,6:forget(datname,quiet);verfahrensende(ausstieg);LEAVEberechnenullstelleEND SELECT END REP.belegediefunktionsparameter:REPfootnote(anwendungstext(184));cursor(parameingabespalte,4);out("Parameter  :");cursor(parameingabespalte+13,4);belegeparameter(eingabevektor,varindex,abbildungsvariablen(f),standardtasten,ausstieg);SELECTpos(standardtasten,ausstieg)OF CASE1:gibinfofensteraus(wausgabe,8)CASE2:cursor(parameingabespalte,4);out(del);LEAVEbelegediefunktionsparameterCASE3:LEAVEfuehreoperationausCASE4,5:verfahrensende(ausstieg);LEAVEberechnenullstelleEND SELECT END REP END PROCberechnenullstelle;PROCzeichnegraphenderarbeitsfunktion(ABBILDUNG CONSTf,VECTOR CONSTeingaben,INT CONSTvarindex):zeichnekoordinatensystem;normalgraphzeichnen(f,eingaben,varindex);zeichnetexte;pen(1,1,1,neuerstift);newpicture(aktuellerstift)END PROCzeichnegraphenderarbeitsfunktion;PROCiteration(FILE VARf,ABBILDUNG CONSToriginalfunktion,iterationsfunktion,VECTOR CONSTeingaben,INT CONSTlaufvarindex,anzahlfolgenglieder):ABBILDUNG VARf1:=originalfunktion,f2:=iterationsfunktion;BOOL VARloeschflag1:=FALSE,loeschflag2:=FALSE;footnote(anwendungstext(117));cursor(36,24);IFkomplexefunktion(f1)THENloeschflag1:=TRUE;f1:=aufloesung(f1)END IF;IFkomplexefunktion(f2)THENloeschflag2:=TRUE;f2:=aufloesung(f2)END IF;schreibetabellenueberschriften;schreibetabellenzeilen;IFloeschflag1THENloeschetemporaereabbildung(f1)END IF;IFloeschflag2THENloeschetemporaereabbildung(f2)END IF.schreibetabellenueberschriften:ergaenzeparameter(f,originalfunktion,eingaben,laufvarindex);putline(f,"n     "+senkrecht+text(NAMEauswahl(abbildungsvariablen(originalfunktion),laufvarindex),gesamtstellen(ebene))+senkrecht+text("Fktswert",gesamtstellen(ebene)));putline(f,6*waagerecht+2*(kreuz+gesamtstellen(ebene)*waagerecht)).schreibetabellenzeilen:VECTOR VAReingabevektor:=eingaben;INT VARi;REAL VARfolgenglied:=eingabevektorSUBlaufvarindex,funktionswert;FORiFROM0UPTOanzahlfolgengliederREPcout(i);testetaste;write(f,text(i,6)+senkrecht);write(f,wandle(folgenglied)+senkrecht);funktionswert:=ergebnis(f1,eingabevektor)SUB1;testefehler;putline(f,wandle(funktionswert));folgenglied:=naechstesfolgenglied(f2,eingabevektor,laufvarindex);testefehlerEND REP.testetaste:IFincharety=abbruchzeichenTHEN LEAVEschreibetabellenzeilenEND IF.testefehler:IFiserrorTHENclearerror;
putline(f,gesamtstellen(ebene)*"-");putline(f,anwendungstext(175));LEAVEschreibetabellenzeilenEND IF END PROCiteration;REAL PROCnaechstesfolgenglied(ABBILDUNG CONSTbildungsvorschrift,VECTOR VAReingaben,INT CONSTindexfuereingabevektor):REAL VARneuerwert:=ergebnis(bildungsvorschrift,eingaben)SUB1;replace(eingaben,indexfuereingabevektor,neuerwert);neuerwertEND PROCnaechstesfolgenglied;PROCintervallhalbierung(FILE VARf,ABBILDUNG CONSTfunktion,VECTOR VAReingabevektor,INT CONSTvarindex,anzahliterationsschritte,REAL CONSTlinks,rechts):BOOL VARloeschflag:=FALSE;ABBILDUNG VARfkt:=funktion;TERM VARfktterm;INT VARi;erstellegegebenenfallsaufloesungderfunktion;footnote(anwendungstext(117));cursor(36,24);ergaenzeparameter(f,funktion,eingabevektor,varindex);schreibekopfzeileninausgabedatei;berechnemittlerenwert;IFloeschflagTHENloescheabbildung(fkt)END IF.erstellegegebenenfallsaufloesungderfunktion:IFkomplexefunktion(fkt)THENfkt:=aufloesung(fkt);loeschflag:=TRUE END IF;fktterm:=AUSDRUCKlistenanfang(abbildungsterme(fkt)).schreibekopfzeileninausgabedatei:LETanzahlueberschriften=6;ROWanzahlueberschriftenTEXT CONSTueberschrift:=ROWanzahlueberschriftenTEXT:(anwendungstext(253),anwendungstext(254),anwendungstext(255),anwendungstext(256),anwendungstext(257),anwendungstext(258));TEXT VARtitelzeile:="n     ";FORiFROM1UPTOanzahlueberschriftenREPtitelzeileCAT(senkrecht+text(ueberschrift(i),gesamtstellen(ebene)))END REP;maxlinelength(f,2000);putline(f,titelzeile);titelzeile:=6*waagerecht+anzahlueberschriften*(kreuz+(gesamtstellen(ebene)*waagerecht));putline(f,titelzeile).berechnemittlerenwert:REAL VARx1:=links,x2:=rechts,xm,y1,y2,ym;FORiFROM0UPTOanzahliterationsschritteREPcout(i);testetaste;xm:=0.5*(x1+x2);write(f,text(i,6));write(f,senkrecht+wandle(x1));write(f,senkrecht+wandle(xm));write(f,senkrecht+wandle(x2));IFwertdefiniert(f,fktterm,eingabevektor,varindex,x1,y1)CANDwertdefiniert(f,fktterm,eingabevektor,varindex,xm,ym)CANDwertdefiniert(f,fktterm,eingabevektor,varindex,x2,y2)THENvergleiche;line(f)ELSE LEAVEberechnemittlerenwertEND IF END REP.testetaste:IFincharety=abbruchzeichenTHEN LEAVEberechnemittlerenwertEND IF.vergleiche:IFym=0.0THEN LEAVEberechnemittlerenwertELIFym*y1<=0.0THENx2:=xmELSEx1:=xmEND IF.END PROCintervallhalbierung;BOOL PROCwertdefiniert(FILE VARf,TERM CONSTfktterm,VECTOR VAReingabevektor,INT CONSTlaufvarindex,REAL CONSTx,REAL VARy):replace(eingabevektor,laufvarindex,x);y:=result(fktterm,eingabevektor);IFiserrorTHENclearerror;write(f,senkrecht+gesamtstellen(ebene)*"-");line(f);write(f,anwendungstext(175));FALSE ELSEwrite(f,senkrecht+wandle(y));TRUE END IF END PROCwertdefiniert;THESAURUS PROCnullstellenverfahrensnamen:THESAURUS VARt:=emptythesaurus;INT VARi;ROWanzahlmoeglicherteilverfahrenTEXT CONSTvname:=ROWanzahlmoeglicherteilverfahrenTEXT:(nullstellenverfahren1,nullstellenverfahren2,nullstellenverfahren3);FORiFROM1UPTOanzahlmoeglicherteilverfahrenREPt:=t+vname(i)END REP;tEND PROCnullstellenverfahrensnamen;PROCergaenzeparameter(FILE VARsf,ABBILDUNG CONSTf,VECTOR CONSTeingabevektor,INT CONSTlaufvarindex):INT VARi,varlistenlaenge:=laenge(abbildungsvariablen(f));IFvarlistenlaenge>10THEN LEAVEergaenzeparameterEND IF;FORiFROM1UPTOvarlistenlaengeREP IFi<>laufvarindexTHENputline(sf,text(NAMEauswahl(abbildungsvariablen(f),i),8)+"="+wandle(eingabevektorSUBi))END IF END REP END PROCergaenzeparameter;END PACKETnullstellen;