Gleichung numerisch lösen < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo Forum!
Eins vorweg, meine Erfahrung mit Mathematica ist praktisch gleich 0. Aber jetzt zum Problem.
Ich hab ein Set an Gleichungen, das ich numerisch lösen muss. Ich habs auch versucht aber es hat nicht funktioniert.
Hier ist ein Link http://imageshack.us/photo/my-images/337/gleichungen.jpg/ , damit ihr in etwa eine Idee von den Gleichungen habt. Die F Funktion ist die Hypergeometrische und mir sind alle Parameter bis auf P,Q,M und N bekannt. (sigma und mü auch, sind nur nicht auf dem Bild definiert)
Ich hab das ganze mit Solve[P=P,N] gemacht.
So siehts aus in Mathematica:
Solve[(0.5*((1/(N*0.44*0.89))*((2*(M*N - [mm] M^2*Log[1 [/mm] + N/M]))/
[mm] N^2) [/mm] + (1/(M*0.44*1.89))*(N*
Log[1 + (1 + M/N)])))/((1 - (0.5 -
N)*((1/(N*0.44*0.89))*((2*(M*N - [mm] M^2*Log[1 [/mm] + N/M]))/
[mm] N^2) [/mm] + (1/(M*0.44*1.89))*(N*
Log[1 + (1 + M/N)]))) - (0.5 -
M)*((1/N*0.44)*1.89*((2*(MN - [mm] N^2*Log[1 [/mm] + M/N]))/
[mm] M^2) [/mm] - (1/M*0.44)*-0.89*(M + 5*N)/
M)) == (0.5*(((1/(1 - N))*0.1*0.2*(M + Log[1 + N/M])/
N) + (1/(1 - M))*0.1*1.2*(1/(1 + [mm] M/N)^0.2)))/(1 [/mm] - (N -
0.5)*(((1/(1 - N))*0.1*0.2*(M + Log[1 + N/M])/
N) + (1/(1 - M))*0.1*1.2*(1/(1 + [mm] M/N)^0.2))) [/mm] - (M -
0.5)*((1/(1 - N)*0.1*1.2)*(N*
Log[1 + M/N]/
M) - (1/(1 - M))*0.1*(-0.2)*(1/((1 + [mm] N/M)^0.2))), [/mm] N]
Ich hab die Werte für die Hypergeometrische Funktion runden müssen, da für Kommawerte keine Lösung angezeigt wird.
Ich würde mich freuen, wenn dazu jemand was zu sagen hat :)
Vielen Dank schonmal für jegliche Mühe!
|
|
|
|
zu spät, aber dennoch:
1.) Hallo erstmal
2.) es ist keine gute Idee, den Namen der Funktion "N" (wie "Näherung", "numerisch"; z.B. <span style="font-family: monospace;">N[Pi]</span> gibt 3.14159265...) als Variablennamen zu verwenden.
2.) Du kannst, falls du eine ungefähre Ahnung hast, wo die Nullstellen in abhängigkeit von m liegen, z.B.: n0[m_?NumericQ]:=n/.FindRoot[<Gleichung>,{n, (*beispielsweise*) 1/(1+m) }]; verwenden, da Solve und NSolve eigentlich für algebraische Gleichungen gedacht sind, FindRoot jedoch für so ziemlich alles.
3.) eventuell hilft aber auch Reduce[{<Gleichung>, Element[n|m, Reals]},n].
Viel Glück damit,
Peter
|
|
|
|
|
Hey Peter, danke für die Antwort!
Ich konnte das Ganze jedoch noch nicht lösen.
Die beiden Gleichungen müssten aber soweit korrekt sein.
Bei mir sieht das beispielsweise so aus:
FindRoot[{((0.5*0.5 +
0.5*0.5)*(2.5*
Hypergeometric2F1[1, 1.894427191, 2.894427191, -G/M] +
1.180339887*
Hypergeometric2F1[1, 0.894427191,
1.894427191, -M/G]))/(1 - (0.5 -
G)*(2.5*Hypergeometric2F1[1, 1.894427191,
2.894427191, -G/M] +
1.180339887*
Hypergeometric2F1[1, 0.894427191,
1.894427191, -M/G]) - (0.5 -
M)*(1.180339887*
Hypergeometric2F1[1, 1.894427191,
2.894427191, -M/G] - (-2.5)*
Hypergeometric2F1[1, 0.894427191,
1.894427191, -G/M])) == (((1 - 0.5)*0.5 + (1 -
0.5)*0.5)*(50*
Hypergeometric2F1[1, 1.2, 2.2, -(1 - G)/(1 - M)] +
8.3333333*
Hypergeometric2F1[1, 0.2, 1.2, -(1 - M)/(1 - G)]))/(1 - (G -
0.5)*(50*Hypergeometric2F1[1, 1.2, 2.2, -(1 - G)/(1 - M)] +
8.3333333*
Hypergeometric2F1[1, 0.2, 1.2, -(1 - M)/(1 - G)]) - (M -
0.5)*(8.333333*
Hypergeometric2F1[1, 1.2, 2.2, -(1 - M)/(1 - G)] - (-50)*
Hypergeometric2F1[1, 0.2,
1.2, -(1 - G)/(1 - M)])), ((0.5*0.5 +
0.5*0.5)*(1.180339887*
Hypergeometric2F1[1, 1.894427191, 2.894427191, -G/M] +
8.33333*Hypergeometric2F1[1, 0.2, 1.2, -M/G]))/(1 - (0.5 -
G)*(1.180339887*0.5/0.5*
Hypergeometric2F1[1, 1.1894427191,
2.894427191, -M/G] - (-2.5)*
Hypergeometric2F1[1, 0.894427191,
1.894427191, -G/M])) == (((1 - 0.5)*0.5 + (1 -
0.5)*0.5)*(8.3333333*
Hypergeometric2F1[1, 0.2, 1.2, (1 - M)/(1 - G)]))/(1 - (G -
0.5)*(50*Hypergeometric2F1[1, 1.2, 2.2, -(1 - G)/(1 - M)] +
8.3333333*
Hypergeometric2F1[1, 0.2, 1.2, -(1 - M)/(1 - G)]) - (M -
0.5)*(8.333333*
Hypergeometric2F1[1, 1.2, 2.2, -(1 - M)/(1 - G)] - (-50)*
Hypergeometric2F1[1, 0.2, 1.2, -(1 - G)/(1 - M)]))}, {{G,
0.5}, {M, 0.5}}]
Mit diesen Zahlen krieg ich den error: FindRoot::nlnum: "The function value [mm] {-19.2628,-\[Infinity]} [/mm] is not a list of numbers with dimensions {2} at {G,M} = {0.5,0.5}." Würde mich freuen, wenn du mir sagen könntest, was ich falsch mach :D
Gruß
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:20 So 15.04.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|