Mathcad Programmierung < MathCad < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | Programmieren sie mithilfe der 1.Ableitung ein Hilfsfunktion in Mathcad, mit der ein Maximum zu finden ist. Nutze als Beispiel f(x)= [mm] x^3+6x^2 [/mm] |
Ich schaffe es einfach nicht die Funktion zu programmieren.
Ich weiß zwar, dass ich für einen Hochpunkt, die 1. Ableitung = 0 und die 2. Ableitung < 0 sein muss, aber ich hab einfach keinen Plan.
Per Hand würde ich ja die 1. Ableitung von F(x) erstellen, dann Gleich null setzten und nach x auflösen.
die ein oder mehreren Ergebnisse dann in die 2. Ableitung einsetzten und ausrechnen. Kommt dabei ein Wert kleiner als Null heraus, hab ich einen Hochpunkt.
den x-Wert dann in die Originalfunktion f(x) einsetzten und y berechnen. Dann hat man den Punkt.
Aber wie bekommt ich das nun in Mathcad als Programmcode hin, der universell auf (fast) alle Funkionen einsetzbar ist und mir sofort alle Hochpunkte liefert.
P.S. Ich habe bisher noch gar kein Programm in Mathcad geschrieben, kann dafür aber C#
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
Hier habe ich nen Vorschlag, den musst du nur noch in deine Syntax übersetzen (ausprobiert habe ich den Algorithmus allerdings nicht, benutze Scilab, basierend auf matlab)
function [f]=ExP(a_min,Sw,b_max,n, g (function)) //Intervallgrenzen, Schrittweite, Funktion (muss wahrsch jedesmal neu implementiert werden)
a=0; b=0; l=0; f=0; d=derivate(g);
for i=a_min:Sw:(b_max-Sw), do // Verfahren nach Regula falsi
if d(i)<0 and d(i+Sw)>0 then a=i; b=i+Sw; end;
if d(i)>0 and d(i+Sw)<0 then b=i; a=i+Sw; end;
if a<>0 and b<>0 then (
for j=1:n do, l=a-(g(a)*(b-a)/(g(b)-g(a))
if d(l)<=0 then a=l; else b=l; end; // dass man die Nullstelle auch findet habe ich mal ausgeschlossen
end;
if d( (a+b)/2 -Sw) <0 then f( (i-a_min)/Sw )= (a+b)/2 ) end; end;
// Indizes sind ja Integer
end;
( return(f) ) //bei Scilab unnötig
endfunction
lg
|
|
|
|