2016-12-06 4 views
0

Ich bin neu in MatLab und wegen einer Übung für meine Universität muss ich eine Wurzel mit Newtons Methode für eine bestimmte Funktion finden.cosh und log in MatLab

>> x = linspace(-3,3); 
>> y = sinh(x-1)*log((3+2)*x+1)-1-1; 
Error using * 
Inner matrix dimensions must agree. 

>> y = sinh(x-1).*log((3+2)*x+1)-1-1; 
>> plot(x,y) 
Warning: Imaginary parts of complex X and/or Y arguments ignored 

Ich wollte meine Funktion sichtbar zu machen, aber wie Sie in den ersten Fehler sehen kann ich nicht die Zeichen * Operator so mit ich versuchte. * (Was ich kann nicht wirklich verstehen, was es tut), aber die Grafik war weit von rechts.

Antwort

0

für den ersten Fehler "Fehler bei der Verwendung * Innere Matrix Abmessungen müssen übereinstimmen.": In Matlab A*A ist nicht das gleiche wie A.*A. Die erste Methode ist die allgemeine Matrix-Multiplikation und die zweite ist die elementweise Multiplikation. In Ihrem Fall sinh(x-1) wird eine Matrix der Größe [1 100] erstellen und log((3+2)*x+1) wird eine Matrix mit der gleichen Größe erstellen (weil x diese Größe hat). Das Matrixprodukt ist jedoch nicht möglich ([1 100] * [1 100]).

Für die zweite Frage stimme ich mit mpaskov überein und möchte nur hinzufügen, dass Sie nur den reellen Teil mit real(y) angeben können.

+0

Entschuldigung, wenn es eine dumme Frage ist, aber warum ist das nicht möglich? Ich meine, sie sind die gleichen Dimensionen, nicht wahr? –

+0

Ahh Entschuldigung, ich habe deine Nachricht nicht gesehen. sie haben die gleiche Dimension von [1 100], aber das Matrixprodukt ist definiert für: [mn] x [no] Sie sehen, dass die 2. Dimension von Matrix 1 und 1. Dimension von Matrix 2 gleich sein müssen ... nicht der Fall in Ihrem Beispiel –

0

Sie versuchen, komplexe Zahlen zu plotten. log einer negativen Zahl ist komplex.

Sie können versuchen, den Wert abs Parzelle:

plot(x,abs(y)); 

oder versuchen y auf einer komplexen Ebene aufgetragen (x-Achse ist die reelle Zahl y-Achse imaginär).

plot(y, 'o'); 

je nachdem, was Sie suchen.