Also
FullSimplify[Integrate[(1/(-1 + E^(2*M*(-H + M))))*
((-(1/4))*(Erf[((l - 2*y)*a)/(1.4142135623730951*Sqrt[-1 + H/M])] +
Erf[((l + 2*y)*a)/(1.4142135623730951*Sqrt[-1 + H/M])])*
(Erf[((b + 2*x)*a)/(1.4142135623730951*Sqrt[-1 + H/M])] +
Erf[((b - 2*x)*a)/(1.4142135623730951*Sqrt[-1 +
H/M])])),{x,x0,x1}]]//InputForm
evaliert in M-8.0.1 bei mir zu:
(-0.125*(-1. + Coth[M*(-H + M)])*
((-0.3989422804014327*E^((a^2*M*(-0.4999999999999999*b^2 -
1.9999999999999996*b*
x0 - 1.9999999999999996*x0^2))/(H - 1.*M)) +
0.3989422804014327*E^((a^2*M*(-0.4999999999999999*b^2 +
1.9999999999999996*b*
x0 - 1.9999999999999996*x0^2))/(H - 1.*M)) +
0.3989422804014327*E^((a^2*M*(-0.4999999999999999*b^2 -
1.9999999999999996*b*
x1 - 1.9999999999999996*x1^2))/(H - 1.*M)) -
0.3989422804014327*E^((a^2*M*(-0.4999999999999999*b^2 +
1.9999999999999996*b*
x1 - 1.9999999999999996*x1^2))/(H - 1.*M)))*Sqrt[-1. + H/M]*
Sqrt[H - 1.*M] +
a*(Sqrt[H - 1.*M]*(-1.*x0*Erf[(0.7071067811865475*a*(b - 2.*x0))/
Sqrt[-1. + H/M]] - 1.*x0*Erf[(0.7071067811865475*a*(b + 2.*x0))/
Sqrt[-1. + H/M]] + x1*(Erf[(0.7071067811865475*a*(b - 2.*x1))/
Sqrt[-1. + H/M]] + Erf[(0.7071067811865475*a*(b + 2.*x1))/
Sqrt[-1. + H/M]])) + b*Sqrt[-1. + H/M]*Sqrt[M]*
(-0.5*Erf[(a*Sqrt[M]*(-0.7071067811865475*b + 1.414213562373095*x0))/
Sqrt[H - 1.*M]] - 0.5*Erf[(0.7071067811865475*a*Sqrt[M]*(b +
2.*x0))/
Sqrt[H - 1.*M]] + 0.5*Erf[(a*Sqrt[M]*(-0.7071067811865475*b +
1.414213562373095*x1))/Sqrt[H - 1.*M]] +
0.5*Erf[(0.7071067811865475*a*Sqrt[M]*(b + 2.*x1))/Sqrt[H -
1.*M]])))*
(Erf[(0.7071067811865475*a*(l - 2*y))/Sqrt[-1 + H/M]] +
Erf[(0.7071067811865475*a*(l + 2*y))/Sqrt[-1 + H/M]]))/(a*Sqrt[H -
1.*M])
Am 10.06.2011 10:23, schrieb Dr. Peter Klamser:
Liebe Kollegen,
erste einmal vielen Dank für die kompetenten Antworten.
Hier noch ein paar Hinweise die deutlich machen, was ich will.
Wenn man auf eine Funktion stößt, die man integrieren will, dann sucht
man zuerst natürlich die Lösung für das Integral. Leider habe ich bis
heute keine analytische Lösung gefunden. Mit dem Tool "Introduction to
Ordinary Differential Equations with Mathematica: An Integrated
Multimedia Approach" von Alfred Gray, Michael J. Mezzino Jr., Mark
Pinsky (Publisher: TELOS/Springer-Verlag, Year: 1997, ISBN: 0387944818
(Hardcover), 890 pp, Book Includes: CD-ROM,
http://www.wolfram.com/books/profile.cgi?id=3708; wird leider nicht
weiter entwickelt...) hatte ich das Integral als gewöhnliche
Differentialgleichung formuliert und lösen lassen: Mit dem Ansatz Method
-> Lagrange wurde eine Lösung ausgegeben, aber die hat gewisse
Schwächen, wenn man die Lösung numerisch mit den Ergebnissen vergleicht,
die man mit NIntegrate nach M erhält:
((1-\[Epsilon])*(E^((4*H^2*M)/(-2*H-2*M))*(-2*Sqrt[2]*(-E^(-((2*H*(-H-2*M)*M)/(-H-M)))+E^((2*M^3)/(H+M)))*H*(b*(E^((M*(b-2*y)^2*Tan[\[Gamma]]^2)/(2*(H+M)))+E^((M*(b+2*y)^2*Tan[\[Gamma]]^2)/(2*(H+M))))-2*(E^((M*(b-2*y)^2*Tan[\[Gamma]]^2)/(2*(H+M)))-E^((M*(b+2*y)^2*Tan[\[Gamma]]^2)/(2*(H+M))))*y)*(Erf[((l+2*x)*Tan[\[Gamma]])/Sqrt[-((2*H)/M)-2]]+Erf[((l-2*x)*Tan[\[Gamma]])/Sqrt[-((2*H)/M)-2]])*Tan[\[Gamma]]+2*Erf[((b+2*y)*Tan[\[Gamma]])/Sqrt[-((2*H)/M)-2]]*(2*Sqrt[-(H/M)-1]*M*(H+M)*(E^((2*M^3)/(H+M))*(2*H+4*M+2)-2/E^((2*H*(-H-2*M)*M)/(-H-M)))*Sqrt[Pi]*Erf[(Sqrt[-(H/M)-1]*M*(l+2*x)*Tan[\[Gamma]])/(Sqrt[2]*(-H-M))]+2*Sqrt[-(H/M)-1]*M*(H+M)*(E^((2*M^3)/(H+M))*(2*H+4*M+2)-2/E^((2*H*(-H-2*M)*M)/(-H-M)))*Sqrt[Pi]*Erf[(Sqrt[-(H/M)-1]*M*(l-2*x)*Tan[\[Gamma]])/(Sqrt[2]*(-H-M))]-Sqrt[2]*(-E^(-((2*H*(-H-2*M)*M)/(-H-M)))+E^((2*M^3)/(H+M)))*H*((E^((M*(l-2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M)))+E^((M*(l+2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M))))*l-2*(E^((M*(l-2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M)))-E^((M*(l
+2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M))))*x)*Tan[\[Gamma]])+2*Erf[((b-2*y)*Tan[\[Gamma]])/Sqrt[-((2*H)/M)-2]]*(2*Sqrt[-(H/M)-1]*M*(H+M)*(E^((2*M^3)/(H+M))*(2*H+4*M+2)-2/E^((2*H*(-H-2*M)*M)/(-H-M)))*Sqrt[Pi]*Erf[(Sqrt[-(H/M)-1]*M*(l+2*x)*Tan[\[Gamma]])/(Sqrt[2]*(-H-M))]+2*Sqrt[-(H/M)-1]*M*(H+M)*(E^((2*M^3)/(H+M))*(2*H+4*M+2)-2/E^((2*H*(-H-2*M)*M)/(-H-M)))*Sqrt[Pi]*Erf[(Sqrt[-(H/M)-1]*M*(l-2*x)*Tan[\[Gamma]])/(Sqrt[2]*(-H-M))]-Sqrt[2]*(-E^(-((2*H*(-H-2*M)*M)/(-H-M)))+E^((2*M^3)/(H+M)))*H*((E^((M*(l-2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M)))+E^((M*(l+2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M))))*l-2*(E^((M*(l-2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M)))-E^((M*(l+2*x)^2*Tan[\[Gamma]]^2)/(2*(H+M))))*x)*Tan[\[Gamma]]))))/(16*(E^(-2*H*M)-E^(2*M^2))^2*Sqrt[-(H/M)-1]*M*(H+M)*Sqrt[Pi])
Kennt Ihr eine (bessere) analytische Lösung?
Nun, wenn man analytisch nicht weiter kommt, dann eben numerisch. Das
dauert aber garantiert 2 Zehnerpotenzen länger. Folglich will man das
dann für ein Webmathematica Tool dann nur noch möglichst schnell einen
Zahlenwert für das betreffende Integral. Da hatte ich gehofft, dass MMA
8 mit den Fähigkeiten zur Erzeugung von C-Code weiter hilft (ging über
MathLink natürlich schon früher... ;-) ).
Also soll MMA ganz ganz schnell einen Zahlenwert liefern (was es glaube
ich seit Version 6 schon ganz gut kann). Deswegen hatte ich das mal mit
der Option CompilationTarget -> "C" versucht, so richtig schnell wurde
es dadurch aber immer noch nicht.
Frage: Wie geht das Integrieren es richtig schnell?
Danke & freundliche Grüße von
Peter
##########################
Am 09.06.2011 23:12, schrieb rolfm:
Subsidencefunction$internal$xy$ohne$if$compiled = Compile[{{a, _Real},
{b,
_Real}, {l, _Real}, {M, _Real}, {x, _Real}, {y, _Real},
{H, _Real}}, ((-(1/4))*(Erf[((l - 2*y)*a)/(1.4142135623730951*(-1 +
H/M)^(1/2))] +
Erf[((l + 2*y)*a)/(1.4142135623730951*(-1 + H/M)^(1/2))])*(Erf[((b +
2*x)*a)/(1.4142135623730951*(-1 + H/M)^(1/2))] +
Erf[((b - 2*x)*a)/(1.4142135623730951*(-1 + H/M)^(1/2))]))/(-1 +
E^(2*M*(-H + M))), CompilationTarget -> "C"];
suf[(z__)?NumberQ] := Subsidencefunction$internal$xy$ohne$if$compiled[z];
NIntegrate[suf[1, 2, 3, 4, x, 6, 7], {x, 0, 10}, AccuracyGoal -> 8]
funktioniert.
Man sollte meinen dass man so eine Hilfsfunktion (suf) nicht braucht,
aber
in dem Fall wohl doch.
Gruss,
Rolf Mertig
GluonVision GmbH
Berlin