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

Problem bei Gleichunggen

 

bart
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 19.06.2010, 22:44     Titel: Problem bei Gleichunggen
  Antworten mit Zitat      
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;
   

    h=(beta-alpha)/N;
    x(k)=alpha+k*h;
    b(x)=input('Eingabe einer Funktion:','s');
    a(x)=a*x^s;
    er=(epsi/h^2)+(ax/h)+b(x);
    zw=((2*epsi)/h^2)+(ax/h)+b(x);
    dr=epsi/h^2;
    vi=(epsi/h^2)+ax/h;    
end;  


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
Private Nachricht senden Benutzer-Profile anzeigen


mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 19.06.2010, 23:49     Titel:
  Antworten mit Zitat      
Hallo,

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;  
 


Du solltest dich nochmal mit der Vektor- und Matrix-Notation von Matlab vertraut machen und wie man mit Indizes umgeht ...

MfG
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 20.06.2010, 13:53     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 21.06.2010, 10:12     Titel:
  Antworten mit Zitat      
So habe einen neuen Code:
Code:

function [er,zw,dr,vi]=Randwertproblem1(b,N,c,s,epsi)


   
alpha=-1;

beta=1;

h=(beta-alpha)/N;

x=(alpha+h):h:(beta-h);

n1=length(x);

b=eval(b);


for k=1:n1;

a(k)= c*x(k).^s;

er(k)=(epsi/h^2) + (a(k)/h) + b(k);

zw(k)=((2*epsi)/h^2) + (a(k)/h) + b(k);

dr(k)=epsi/h^2;

vi(k)=(epsi/h^2) + (a(k)/h);

end;


aber nun wird mir dieser Fehler angezeigt:
Code:
>> Randwertproblem1(1,1,1,1,1)
??? Undefined function or method 'eval' for input arguments of type 'double'.

Error in ==> Randwertproblem1 at 15
b=eval(b);

Was ist falsch danke für die Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2010, 10:40     Titel:
  Antworten mit Zitat      
Hallo,

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.

Gruß Lord nibbler
 
bart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.06.10
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 21.06.2010, 10:50     Titel:
  Antworten mit Zitat      
Na ich möchte das der Benutzer eine Funktion eingeben kann die dann vom Programm weiter verwendet wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2025 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.