Einführung in GNU Octave

M

MagiC_Creator

Doppel-As
Servus!

Ich suche vergeblich eine gute Einführung in GNU Octave (http://www.octave.org). Die meisten, die ich gefunden habe befassen sich nur mit Matrizen etc., was ich bräuchte wäre aber z.B. eine quadratische Gleichung nach einer bestimmten Variable aufzulösen.

In Maple ganz einfach:

> fn := (x1 - x2)^2 + (y1 - 4*x2)^2 = 8;
> solve(fn, x2);

So in der Art ;), hoffe ihr versteht was ich meine :).

thx & cya
 
Tja, mit Octave wirst Du solche Aufgaben nicht lösen können. Octave ist eher mit Matlab verwandt und zur Lösung von numerischen Aufgaben gedacht. Du brauchst ein Algebra-System, z.B. mupad.

Gruss, Phorus
 
hm... ok danke :) mupad gefällt mir nicht so, da es nicht free is, bzw diese speicherbegrenzung hat... muss ich mich wohl oder übel nach was andrem umsehn ;)

cya
 
ah, vielen dank, muss ich wohl übersehen haben :)

cya
 
Hallo, wir zwei Studentinnen, müssen einen Vortrag über die Dartsellung der Kugelflächenfunktionen mit Hilfe von Octave vortragen.
Wir müssen die Funktion polyfit(x,y,n) aufrufen. x und y müssen zwei Vektoren der selben länge sein, oder? n ist der grad. Wir müssen für y aber eine direkte zeile in einer matrix ansprechen. Wie lautet denn so ein Aufruf, damit wir eine bestimmte Zeile in einer Matrix ansprechen können?

Danke!
 
@xanti: Kannst du bitte nochaml den link posten, da der ins Leere führt und ich an einer kostenlosen Lizenz Interesse habe.
Gruß, Georg
 
@salang:
polyfit bestimmt das Polynom p vom Grad n, welches die Fehlerquadratsumme minimiert:

Code:
sum_(i=1:n) ((p(x(i))-y(i))^2)

(mehr dazu unter help polyfit)

Damit ist offensichtlich, dass x und y dieselbe Dimension haben müssen.

Auf die n-te Zeile einer Matrix A greift man mittels A(n,:) zu.

Gruss, Xanti

edit: @schorsch312
Der Link ist fast 2 Jahre alt. Wahrscheinlich haben sie ihr Lizenzsystem auch mittlerweile umgestellt. Ich bin da nicht auf dem Laufenden, da ich mupad nicht nutze.
 
Zuletzt bearbeitet:
Bevor du dich mit proprietärer Software rumquälst... ich glaube Maxima ist das was du suchst:

Code:
$ maxima
Maxima 5.10.0 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) f(x1,x2,y1) := (x1 - x2)^2 + (y1 - 4*x2)^2 = 8;
                                          2              2
(%o1)           f(x1, x2, y1) := (x1 - x2)  + (y1 - 4 x2)  = 8
(%i2) solve(f(x1,x2,y1),x2);
                       2                  2
              sqrt(- y1  + 8 x1 y1 - 16 x1  + 136) - 4 y1 - x1
(%o2) [x2 = - ------------------------------------------------, 
                                     17
                                       2                  2
                              sqrt(- y1  + 8 x1 y1 - 16 x1  + 136) + 4 y1 + x1
                         x2 = ------------------------------------------------]
                                                     17
(%i3)


EDIT: :O sehe erst jetzt, dass der Thread schon ziemlich alt ist,.... naja, vielleicht interessierts ja trotzdem jemand... :O
 
Zuletzt bearbeitet:
Hi,

danke schon mal für die Antwort! Ich hab es jetzt auch mal soweit gemacht, wie ich es verstanden habe(von Professor). Er sagte, wir sollen für x den linspace im Bereich von -1 und 1 und für y eine Zeile der Matrix und einen Grad übergeben.
Soweit so gut, wir haben das als Ergebnis bekommen:
r = polyfit(linspace(-1,1,2*16),p(3,:),6)
r =

0.00000
-0.00000
-0.00000
-0.00000
1.50000
-0.00000
-0.50000

Jetzt sollen wir aber polyderiv aufrufen. Bei polyderiv soll ja ein Vektor übergeben werden und die Funktion gibt die Koeffizienten zurück. Oder?
Octave bringt mir aber folgende Meldung:
polyderiv(r)
error: product: nonconformant arguments (op1 is 6x1, op2 is 1x6)
error: evaluating binary operator `.*' near line 91, column 20
error: evaluating assignment expression near line 91, column 5
error: called from `polyderiv' in file `/opt/octave/share/octave/2.1.50/site/m/octave-forge/FIXES/polyderiv.m'

Wir sind beide Anfängerinnen im Bereich Octave, daher wissen wir noch nicht sonderlich gut darüber Bescheid.

Grüße
 
Vielleicht muss das Argument von polyderiv ein Zeilenvektor sein. Dann waere
polyderiv(r') eine Loesung, d.h., Ihr ruft polyderiv mit der Transponierten von r auf.
 
Ich denke, dass ricola recht hat. Andererseits hat mein octave (GNU Octave, version 2.1.69) kein Problem damit, dass der Vektor eventuell falsch ausgerichtet ist:

Code:
octave:16> x=linspace(-1,1);
octave:17> approx=polyfit(x, x.^2, 2)
approx =

   1.0000e-00
   1.3375e-17
   3.8570e-17

octave:18> polyderiv(approx)
ans =

   2.0000e+00   1.3375e-17

Gruss, Xanti
 
Zurück
Oben