Verfasst am: 19.06.2010, 22:44
Titel: Problem bei Gleichunggen
Hallo bin neu hier und freue mich das ein so ein gutes Forum gibt das mir schon öfter mal geholfen hat.So lange programmiere ich zwar noch nicht mit Matlab aber für meine Anfängerprobleme hat es gereicht.Doch nun stehe ich vor einem Problem.
Code:
function[er,zw,dr,vi]=problem(N,a,s,epsi)
%
alpha=-1;
beta=1;
for k=2:N-1;
So das ist mein code und zwar soll mit hilfe der eingabe von N,a,epsi und s die Formeln er zw dr und vi berechnet werden.Mit N soll die Anzahl der k eingegeben werden so das man zB bei N=5 ;k=2,k=3,k=4 hat(darum k=2:N-1, also die erste und letzte Zahl soll nicht berücksichtigt werden).Dann kommen ja 3 Ergebinsse von x(k) raus und mit deren Hilfe soll nun b(X) ausgerechnet werden(diese b(x) muss nun durch den Nutzer angegeben werden.)So dass ich wieder drei b(x) habe.DAnn muss noch a(x) ausgerchnet werden, a gebe ich ja vor und für x müsssen die x(k) genommen werden und die x sollen hoch s gerechnet werden das ich auch vorgebe.Aber das haut schon allles nicht hin was ist falsch ich hoffe ihr könnt mir helfen und ich habe mich verständlich ausgedrückt.Danke
da scheint einiges nicht zu stimmen. Eine Fehlerausgabe wäre hilfreich.
Ohne zu wissen was du da überhaupt berechnen willst ist mir folgendes aufgefallen:
Code:
function[er,zw,dr,vi]=problem(N,a,s,epsi)
%
alpha=-1;
beta=1;
for k=2:N-1;
h=(beta-alpha)/N;
% hier wird aus x ein Vektor; ist nicht falsch, aber gewünscht ?
x(k)=alpha+k*h;
b(x)=input('Eingabe einer Funktion:','s');
% hier geht was schief, du hast a oben beretis deklariert; soll a ein Skalar sein ?
a(x)=a*x^s;
% obige Zeile macht eine Matrixmultiplikation; für elementweise Berechnung z.B. a.*x.^s
er=(epsi/h^2)+(ax/h)+b(x);
%in obiger Zeile benutzt du x als Index, es ist aber s.o. ein Vektor der sicherlich keine Intergerwerte enthält
zw=((2*epsi)/h^2)+(ax/h)+b(x);
dr=epsi/h^2;
vi=(epsi/h^2)+ax/h;
end;
Danke erst mal für die Antwort merke schon habe einige Probleme.Versuche noch mal zu erklären was ich machen will.
Ich möchte das er mir am Ende für die vier Formeln:
er=(epsi/h^2)+(a(x)/h)+b(x);
zw=((2*epsi)/h^2)+(a(x)/h)+b(x);
dr=epsi/h^2;
vi=(epsi/h^2)+(a(x)/h)
die Ergebnisse aus gibt.
Und dazu möchte ich vorher
x=alpha+k*h ausrechnen(das h rechnet sich mit h=(beta-alpha)/N aus und alpha und beta sind gegeben.)Nun soll je nachdem welche zahl für N eingeben wurde eine Anzahl an x ausgerechnet werden(k=2:N-1 also bei N=5 soll das x mit hilfe von k=2,3,4 ausgerchnet werden so das ich x1,x2 und x3 habe.)
Bei a(x)=a*x^s meinte ich das nun die a in Abhängigkeit der x ausgerchnet werden(das ich nacheinander x1,x2 und dann x3 einsetzte so das ich a1 a2 a3 hätte).
Das s und das a soll durch den Nutzer angegeben werden.Genauso das epsi.Und b(x) soll eine Fkt sein die durch den Nutzer eingeben wird.
So das dann wenn a(x) b(x) epsi und h ausgerechnet wurden in die Formeln er zw dr und vi eingestzt werden und ausgegebn werden für jedes a(x), also bekomme mehere Ergebnisse füe er zw vi. Hoffe das war verständlicher???Danke für eure Mühen!
Wie die Fehlermeldung schon sagt du fütterst eval mit einem double es erwartet aber einen String. Ich frage mich nur, was willst du überhaupt mit der Zeile erreichen?
Den Fehler kannst du auf jeden Fall vermeiden indem du die betreffende Zeile auskommentierst bzw. löscht.
Na ich möchte das der Benutzer eine Funktion eingeben kann die dann vom Programm weiter verwendet wird.
Einstellungen und Berechtigungen
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
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.