WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Komplexe rechnen, Formel mit Imaginäre Teil und Variable

 

ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2014, 16:28     Titel: Komplexe rechnen, Formel mit Imaginäre Teil und Variable
  Antworten mit Zitat      
Hallo Leute,

ich bin's schon wieder und brauche eure Hilfe. So ich habe meine Werte von 1 bis 100 und habe die in Vektor gepackt:

a=[0;10;20;30;40;50;60;70;80;90;100]

Dann habe ich eine Funktion die ich Plotten will:

e=2.8+(12/(1+(%i*2*%pi*13.56*1000000*(exp(150/(a+2.5))))

wobei "a" ist diese Vektor, das heißt ich muss irgendwie 11 werte kriegen, für meine Imaginäre und reelle Teil, die rechne ich so:

imag(e) bzw. real(e), aber es geht nicht, wo ist meine Fehler?

Pls. HELP !!! Mein Kopf explodiert Question Exclamation Crying or Very sad
Danke im Voraus!


helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 12.08.2014, 18:22     Titel:
  Antworten mit Zitat      
Hallo ildegard2,
schau dir deine Formel für e genau an. Die hat mehr "(" als ")". Wenn du das korrigierst, kriegst du aber wahrscheinlich auch nicht, was du willst.

Probier das folgende vereinfachte Beispiel. Besonders wichtig sind die Punkte in der e-Formel. Schau dazu unter "star" in der Hilfe nach.

xdel();
a=0:0.01:1;
e=1../(1+%i*a.^3);//elementweise Operationen
subplot(1,3,1)
plot(real(e),imag(e),'r')//Ortskurve
subplot(1,3,2)
plot(a,real(e),'g')
subplot(1,3,3)
plot(a,imag(e),'b')
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2014, 08:33     Titel: was anderes ausprobiert
  Antworten mit Zitat      
So, erst mal vielen dank für die schnelle Antwort, ich habe es geändert und jetzt funktioniert eigener massen, es plotet zumindest zwei funktionen, aber die sehen komisch aus...

-->x=[0:10:140];

-->y=2.8+(12/(1+(%i*2*%pi*13.56*1000000*(%e^(150/(x+2.5)))));
!--error 3
Warte auf schließende Klammer.



-->y=2.8+(12/(1+(%i*85199993*(%e^(150/(x+2.5))))));

-->imag(y);

-->real(y);

-->plot2d(x,y)

-->plot2d(x,imag(y))

-->plot2d(x,real(x))

-->y=2.8+(12/(1+(%i*0,27*(%e^(150/(x+2.5))))));
!--error 41
Inkompatibles Ausgangsargument.


-->y=2.8+(12/(1+(%i*0.27*(%e^(150/(x+2.5))))));

-->imag(y);

-->real(y);

-->plot2d(x,real(y))

-->plot29(x,imag(y))
!--error 4
Undefinierte Variable: plot29


-->plot2d(x,imag(y))

Wo kann die fehler liegen? Das Programm rechnet die Funktion nicht richtig. Question Question Question
Viele Grüsse
Ildegard
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2014, 08:42     Titel: viel besser, aber nicht ganz
  Antworten mit Zitat      
So sieht es noch besser aus :

->x=[0:10:140];

-->function [y]=f(x)
-->y=2.8+(12/(1+(%i*0.27*(%e^(150/(x+2.5))))));
-->endfunction

-->fplot2d(x,f)

aber jetzt plotet er nur die reale Teil die Imaginäre ist immer noch falsch...
Hmmm Question
 
helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 13.08.2014, 09:44     Titel:
  Antworten mit Zitat      
Zuerst ein methodischer Tipp: Bearbeite das Problem in einem kleinen sce-File, d.h. schreib ein Skript mit dem Editor Scinotes und lass es mit F5 laufen. Das macht die Sache wesentlich einfacher und übersichtlicher.

Ich habe an deiner Funktion (ohne Ergebniseinfluss) unnötige Klammern weggelassen und Punkte ".." vor den Divisionsstrichen eingefügt Dann funktionieren die Divisionen elementweise (statt matriziell) und dann kommen zumindest anständige Bilder heraus.
Code:

xdel();
x=[0:10:140];
y=2.8+(12../(1+%i*85199993*exp(150../(x+2.5))))
subplot(1,3,1)
plot(real(y),imag(y),'r')//Ortskurve
subplot(1,3,2)
plot(x,real(y),'g')
subplot(1,3,3)
plot(x,imag(y),'b')
 


Hast du denn eine klare Vorstellung, wie die Bilder aussehen sollen. Kennst du dich mit komplexer Rechnung aus? Zum Einarbeiten in Scilab ist es jedenfalls besser, zuerst mit Funktionen zu üben, wo man relativ klare Erwartunbgen hat, wie die Graphen aussehen müssen.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2014, 09:59     Titel: weiter versuchen
  Antworten mit Zitat      
Hey, Smile
vielen dank ich versuche es weiter mit deine Vorschläge.

Zu deine Fragen, ja ich kenne mich schon mit dem komplexe Rechnung aus, ich habe schon die imaginäre und die reele teil ausgerechnet und erst mal im Excel eingegeben und damit weiß ich wie die Graphen aussehen sollen, außerdem, habe ich ähnliche Daten schon im Excel ausgewertet, jetzt will ich aber alles optimieren und mit Scilab weiter auswerten, weil mit Excel wird irgend mal nicht ausreichend sein, leider mit programmieren habe ich kein Erfahrung und Scilab ist was ganz neues und unbekanntes für mich Sad

ich versuche es weiter und berichte über meine Ergebnisse Wink

Vielen dank
Schöne Grüsse

ildegard
 
helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 13.08.2014, 10:18     Titel:
  Antworten mit Zitat      
Es lohnt sich wirklich, Scilab näher kennen zu lernen.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2014, 16:09     Titel:
  Antworten mit Zitat      
Hey Helmat,

so, ich habe versucht mit das, was du mir vorgeschlagen hast, aber es funktioniert nicht. Jetzt habe ich geschafft zwei Funktionen in ein Graph zu packen, was eigentlich gewünscht wird, leider aber ist die Imaginäre Teil immer noch falsch. Ich habe versucht nur die zu tippen und hat geklappt, heißt, das Programm erkennt die Funktion richtig, wenn ich aber den ganze Ausdruck eingebe, kann nicht differenzieren was real und was imaginär ist und gibt sofort nur die reelle Teil.


-->xdel

-->clf()

-->x=[0:10:140];

-->function y=f1(x)
-->y=(12*0.02*%e^(150/(x+2.5)))/(1+(0.07*%e^(300/(x+2.5))));
-->endfunction

-->function y=f2(x)
-->y=2.8+(12/(1+(%i*0.27*(%e^(150/(x+2.5))))));
-->endfunction

-->fplot2d(x,f1,style=5)

-->fplot2d(x,f2,style=2)

-->xgrid(3)

-->legend('f1','f2');

Wenn jemand mir weiter helfen kann, wäre ich sehr, aber sehr, dankbar sein Smile

Viele Grüsse
Ildegard
 
helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 13.08.2014, 17:11     Titel:
  Antworten mit Zitat      
Warum weigerst du dich, die zwei Punkte "../" zu verwenden? Ohne die geht es nicht!!! Probier bitte folgendes Beispiel auf der Konsole aus (und arbeite sonst besser mit einem sce-File für deine Übungen. Es wird dadurch leichter.):

x=1:5, y1=1../x, y2=1/x //y1 und y2 sind nicht gleich!

Wenn Scilab elementweise rechnen soll - genau das willst du - ist das Zeichen für Division nicht "/", sonder "./". Dass du gleich zwei Punkte nehmen musst ("1../"), liegt daran, dass der erste Punkt hinter einer Zahl als Dezimalpunkt verstanden wird. Bei "x./y" genügt ein Punkt für die Division.


Noch ein Hinweis zur Diagnose: Vergleiche mal size(f1(x)) mit size(f2(x))

Außerdem ist zu bedenken, was das plot-Kommando tun soll, wenn man es mit einer komplexwertigen Variable y konfrontiert. Es kann jedenfalls nur EINE Kurve zeichnen.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2014, 10:51     Titel: .. benutzen
  Antworten mit Zitat      
Hallo hemat,

ich habe deine Anweisungen gemacht Smile

xdel()
clf()
x=[0:10:140];

function y=f1(x)
y=2.8+(12/(1+(%i*0.27*%e^(150/(x+2.5)))));
endfunction

function y=f2(x)
y=(12*0.27*%e^(150../(x+2.5)))/(1+(0.07*%e^(300../(x+2.5))));
endfunction

fplot2d(x,f1,style=5)
fplot2d(x,f2,style=2)


xgrid(3)
xtitle('Permittivität','T(C°)','e(T)')
legend('Real(e)','Imag(e)');

es funktioniert prima, aber nur weil ich als f2, ekstra Img Teil eingegeben habe, jetzt zumindest sehen die zwei Graph wie es sein soll, aber das löst immer noch nicht meine Problem. Soll ich immer den reale und Imag Z separat rechnen und eintippen, es muss bestimmt ein andere weg sein, komplexe Funktionen direkt, geplottetet zu werden. Noch dazu versuche ich jetzt alle Zahlen mit der zugehörige Buchstaben für die konstanten zu ersetzen, z.B e00=12, dann im Formel kommt e=e00*(.... usw)... aber das Programm erkennt die nicht und plottet nicht ... Da muss mich weiter quellen, aber ich denke ist schaffbar... mit sci file, ist immer schwierig die Fehler nachvollziehen, oder??? Oder vielleicht kenne ich nicht, wie ich das machen soll.

Tja, ich mach weiter Smile))

Viele Grüsse
ildegard
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2014, 11:40     Titel:
  Antworten mit Zitat      
So, jetzt funktioniert mit dem konstanten:

xdel()
clf()
e00=2.8
deltae=12
B=150
T0=-2.5
t00=3.2*10^-9

x=[0:10:140];

function y=f1(x)
y=e00+(deltae/(1+(%i*85199993*t00*%e^(B/(x-T0)))));
real(y);
imag(y)
endfunction

function y=f2(x)
y=(deltae*85199993*t00*%e^(B/(x-T0)))/(1+((85199993*t00)^2*%e^(2*B/(x-T0))));

endfunction

fplot2d(x,f1,style=5)
fplot2d(x,f2,style=2)


xgrid(3)
xtitle('Permittivität','T(C°)','e(T)')
legend('Real(e)','Imag(e)');

VG
 
helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 14.08.2014, 13:21     Titel:
  Antworten mit Zitat      
Das sieht schön aus. Ich habe es nochmal vereinfacht. Die Sache mit den Punkten scheint dir nicht geheuer zu sein. Probier meinen Code mal mit dem auskommentierten y. Dann siehst du die Auswirkung der Punkte.

Statt %e^() ist exp() vorzuziehen.



Code:
   xdel()
    x=[0:10:140];    
    y=2.8+(12../(1+(%i*85199993*3.2D-9*%e^(150../(x-(-2.5))))));
    //y=2.8+(12/(1+(%i*85199993*3.2D-9*%e^(150/(x-(-2.5))))));; //Punkte weggelassen: Murks
    plot(x,real(y),'red',   x,imag(y),'blue',   real(y),imag(y),'green')
    xtitle('Realteil (rot), Imaginärteil (blau) und Ortskurve von y (grün)')

_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2014, 13:44     Titel:
  Antworten mit Zitat      
Sehr cooooool !!! Smile))

Nur die Imag Teil ist konjugiert, d.h gespiegelt an der x-Achse, soll von 0 bis ca. 6 laufen, jetzt läuft die bis -6....

Hm Idea Idea Idea

PS: so einfach sieht die Programm aus und hat mir schon 2 tage Kopfschmerzen mitgebracht Smile

VG
ildegard
 
helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 14.08.2014, 16:48     Titel:
  Antworten mit Zitat      
ildegard2 hat Folgendes geschrieben:
Sehr cooooool !!! Smile))

Nur die Imag Teil ist konjugiert, d.h gespiegelt an der x-Achse, soll von 0 bis ca. 6 laufen, jetzt läuft die bis -6....


Scilab rechnet den Imaginärteil schon richtig. Das kannst du nach folgendem Skript überprüfen:
Code:
   xdel()
    x=[0:10:140]';    
    y=2.8+12../(1+%i*85199993*3.2D-9*exp(150../(x-(-2.5))));
    plot(x,real(y),'red',   x,imag(y),'blue',   real(y),imag(y),'green')
    xtitle('Realteil (rot), Imaginärteil (blau) und Ortskurve von y (grün)')
    [x y real(y) imag(y)]
 



Ich habe x als Spaltenvektor (statt Zeilenvektor) definiert, damit sich die Ergebnisse am Schluss übersichtlicher zusammenstellen lassen.

Woher stammt denn die Auskunft, dass imag(y) positiv sein soll?
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
ildegard2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.08.2014, 08:13     Titel:
  Antworten mit Zitat      
"Woher stammt denn die Auskunft, dass imag(y) positiv sein soll? "

die ist eigentlich negativ, aber ich berechne eine Primitivität Zahl von Kunststoffe, komplex, in abängkeit von f und T, so dass

e=e'-je", e'-real und e2 imag, dass will ich in meine Graph darstellen, so ... wenn man die Gleichung rechnet y=2.8+12../(1+%i*85199993*3.2D-9*exp(150../(x-(-2.5)))) (soll auch y=e'-je"); krieg man etwas reeles, d.h e' und eine ausdruck -j....etwas, d.h dass meine e" positiv ist. Und das will ich als Endergebnis kriegen, später, wenn ich das habe, will den verlust faktor auch mitpacken , so dass, tan delta=e"/e' und am ende will ich eine 3d modell darstellen Smile)) das ist natürlich von heutige stand meines Wissens nicht möglich, aber ich hoffe, dass ich es irgendwann mal hinkriege und ich werde für jeder Tipp und Hilfe dankbar sein Smile

PS: wie man sieht, sind meine deutsch Kenntnisse, genau so gut, wie meine Scilab Kenntnisse, aber ich gebe meine beste Laughing

Viele Grüsse
ildegard
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.