Gleichung mit Integral lösen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich würde gerne die folgende Gleichung (nach x) in Matlab für verschiedene Werte von $n$ lösen:
[mm] $\frac{x}{\sqrt{x^{2(n-1)}-1}} [/mm] = [mm] \int_1^x \frac{1}{\sqrt{t^{2(n-1)}-1}} [/mm] dt$
Ich habe leider schon nicht die richtigen Befehle gefunden, um mit dem Integral vernünftig umzugehen, da es keine geschlossene Lösung gibt und das $x$ auch noch die obere Grenze ist...
Für Hinweise jeglicher Art bin ich dankbar!
Vielen Dank!
|
|
|
|
Einfach mal zum Probieren den Fall [mm]n=3[/mm]. Machen wir daraus ein Nullstellenproblem:
[mm]F(x) = \frac{x}{\sqrt{x^4-1}} - \int_1^x \frac{\mathrm{d}t}{\sqrt{t^4-1}}[/mm]
Sinn macht das Ganze nur für [mm]x \in I = (1,\infty)[/mm]. Als Ableitung berechnet man
[mm]F'(x) = - \frac{2x^4}{\left( x^4 - 1 \right)^{\frac{3}{2}}}[/mm]
Dies zeigt zunächst, daß [mm]F[/mm] in [mm]I[/mm] streng monoton fällt. [mm]F[/mm] kann daher höchstens eine Nullstelle besitzen. Mit einem CAS berechnet man
[mm]F(1{,}6) = 0{,}0031 \ldots[/mm]
[mm]F(1{,}7) = -0{,}0884 \ldots[/mm]
Jetzt kann man mit [mm]x_0 = 1{,}6[/mm] das Newton-Verfahren starten:
[mm]x_{n+1} = x_n + \frac{x_n \cdot \left( {x_n}^4 - 1 \right) - \left( {x_n}^4 - 1 \right)^{\frac{3}{2}} \cdot \int \limits_1^{x_n} \frac{\mathrm{d}t}{\sqrt{t^4 - 1}}}{2 {x_n}^4} \, , \ \ n \geq 0[/mm]
Nach wenigen Iterationen bekommt man
[mm]x = 1{,}6031204945 \ldots[/mm]
als Lösung.
Etwas Besseres ist mir nicht eingefallen.
|
|
|
|
|
Danke, simpel aber einfach.
Leider kenne ich mich kaum mit Matlab aus und habe daher Probleme bei der Implementierung.
Bei
1: |
| 2: | x = 1.6 % Startwert
| 3: | j = 10 % Anzahl der Durchläufe
| 4: |
| 5: | for i = 1:j
| 6: |
| 7: | fx = x/(x^4-1)^(1/2)- integral(1/(t^4-1)^(1/2),1,x); % Funktion
| 8: | dx = -2*x^4/(x^4-1)^(3/2); % Ableitung
| 9: |
| 10: | x = x - fx/dx % Berechnung
| 11: | end
|
meckert Matlab, dass es das $t$ nicht kennt... Ich weiß nicht, wie ich das Integral dort "einfach einbauen" soll...?
|
|
|
|
|
Tut mir leid, aber Mathlab kenne ich nicht. Ich kann nur zum mathematischen Hintergrund etwas sagen.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:21 Di 03.05.2016 | Autor: | QCO |
Die Integralfunktion von Matlab muss ja noch wissen, worüber integriert werden soll. Nach Doku braucht sie als erstes Argument ein Funktionshandle.
In Zeile 7 bräuchtest du also
integral(@(t) [mm] 1/(t^4-1)^{1/2},1,x).
[/mm]
Das @ zeigt an, dass es eine Funktion ist und das t in Klammern, was die Variablen dieser Funktion sind.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:28 Di 03.05.2016 | Autor: | QCO |
Du brauchst die Funktion fsolve. Die löst eine Gleichung F, so dass F(x,y,...)=0 numerisch.
Wie auch in meiner anderen Antwort erwähnt, braucht er wieder ein Funktionshandle als erstes Argument. Das zweite ist ein Startwert für x.
Ganz schnell gestrickt könnte das so aussehen.
1: | x= [];
| 2: | for n=2:10
| 3: | fun = @(x) x./sqrt(x.^(2*(n-1))-1) - integral(@(t) 1./sqrt(t.^(2*(n-1))-1), 1, x);
| 4: | x = [x, fsolve(fun, 1.1)];
| 5: | end
| 6: |
| 7: | plot(2:10, x); |
|
|
|
|