Maple-Programm < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:29 Di 14.06.2005 | Autor: | straussy |
Ich schreibe in Maple ein Programm zur Kurvendiskussion (Nullstellenberechnung, Extrema, usw). Mein Problem: ich kann in einer Prozedur lediglich einen Graphen ausgeben, möchte aber möglichst alle Extrema, Nullstellen und Wendepunkte in einem eigenen Graphen plotten.
Mein Programm:
> a:= proc(f::procedure)
> local abl1,abl2,abl3,listeabl1,i,limes,listeabl2,g,listenullst,undef;
> abl1:= simplify(D(f)(x));
> abl2:=simplify((D@@2)(f)(x));
> abl3:=simplify((D@@3)(f)(x));
> undef:=[fsolve(denom(simplify(f(x))),x)];
> listenullst:=[fsolve(f(x),x)];
> listeabl1:=[fsolve(abl1(x),x)];
> listeabl2:=[fsolve(abl2(x),x)];
> printf("1. Ableitung: [mm] %q\n",abl1);
[/mm]
> printf("2. Ableitung: [mm] %q\n",abl2);
[/mm]
> printf("3. Ableitung: [mm] %q\n",abl3);
[/mm]
> printf("Nullstellen: ");
> return{graph};
> for i from 1 to nops(listenullst) do
> printf("%g,",op(i,listenullst));
> end do;
> [mm] printf("\n");
[/mm]
> if not(nops(undef)=0) then
> printf("unstetig in: ");
> for i from 1 to nops(undef) do
> printf("%g,",op(i,undef));
> end do;
> end if;
> [mm] printf("\n");
[/mm]
> for i from 1 to nops(listeabl1) do
>
> if (((D@@2)(f)(op(i,listeabl1)))>0) then (printf("Minimalstelle: x= %g, f(x)=% [mm] g\n",op(i,listeabl1),f(op(i,listeabl1))));
[/mm]
> elif (((D@@2)(f)(op(i,listeabl1)))<0) then (printf("Maximalstelle: x= [mm] %g,f(x)=%g\n",op(i,listeabl1),f(op(i,listeabl1))));
[/mm]
> else (printf("Sattelpunkt: [mm] %g\n",op(i,listeabl1)));
[/mm]
> end if;
>
> end do;
> for i from 1 to nops(listeabl2) do
> if ((D@@3)(f)(op(i,listeabl2))<>0) then (printf("Wendestelle: x= %g, f(x)= %g" ,op(i,listeabl2),f(op(i,listeabl2))));
> plot(f(x),x=op(i,listealb2)-3..op(i,listealb2)+3);
> end if;
> end do;
> limes:=limit(f(x),x=infinity);
> printf("Für X gegen Unendlich strebt die Funktion gegen: [mm] %q\n",limes);
[/mm]
> limes:=limit(f(x),x=-infinity);
> printf("Für X gegen minus Unendlich strebt die Funktion gegen: %q [mm] \n",limes);
[/mm]
> for i from 1 to nops(undef) do
> printf("Der rechtseitige Grenzwert an der Stelle x= %g ist: [mm] %g\n", [/mm] op(i,undef), limit(f(x),x=op(i,undef),right));
> printf("Der linksseitige Grenzwert an der Stelle x= %g ist: [mm] %g\n", [/mm] op(i,undef), limit(f(x),x=op(i,undef),left));
>
> end do;
> graph(f);
> end proc:
>graph:=proc(f::procedure)
>display(plot(f(x),x));
>plot(f(x), x=-3..3);
>end proc;
Ich bin natürlich für Verbesserungsvorschläge dankbar.
Danke schon mal. Straussy
Das Programm ist unten nochmals angehängt (Maple 9.5).
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Dateianhänge: Anhang Nr. 1 (Typ: mw) [nicht öffentlich]
|
|
|
|
Hallo Straussy,
> Ich schreibe in Maple ein Programm zur Kurvendiskussion
> (Nullstellenberechnung, Extrema, usw). Mein Problem: ich
> kann in einer Prozedur lediglich einen Graphen ausgeben,
> möchte aber möglichst alle Extrema, Nullstellen und
> Wendepunkte in einem eigenen Graphen plotten.
Das versteh' ich nicht.
Zu einer Kurvendiskussion gehört doch i.a. ein Graph mit seinen Nullstellen, Extrem- und Wendepunkte etc.
Wie willst du die in mehreren Graphen zeichnen? (mathematisch gesehen?)
>
> Mein Programm:
> > a:= proc(f::procedure)
> > local
>[...]
> > end proc:
> >graph:=proc(f::procedure)
> >display(plot(f(x),x));
> >plot(f(x), x=-3..3);
> >end proc;
>
> Ich bin natürlich für Verbesserungsvorschläge dankbar.
>
> Danke schon mal. Straussy
>
> Das Programm ist unten nochmals angehängt (Maple 9.5).
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
|
|
|
|