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

DGL lösen - Wurftrajektorie - Verständnis des Codes

 

Lerner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2014, 12:43     Titel: DGL lösen - Wurftrajektorie - Verständnis des Codes
  Antworten mit Zitat      
Hallo liebe Matlabuser,

ich möchte in Matlab mit dem ODE23 solver eine DGL lösen und habe dabei Schwierigkeiten die Einträge in der function fwurf nachzuvollziehen. Die DGL habe ich aus einem Beispiel zur Simulation einer Wurftrajektorie.

Könnte mir bitte jemand erklären wie dieser ydot Vektor aufgebaut ist? Vor allem mit diesen y(1),y(2),y(3) und y(4) komme ich völlig durcheinander.


Code:
function ydot = fwurf(t, y)

global g c_w
v=sqrt(y(3)^2 + y(4)^2);                            % Ballgeschwindigkeit
ydot=[y(3); y(4); -c_w*v*y(3); -g-c_w*v*y(4)];      % Dgl


Die dritte und vierte Spalte in ydot müssten die Gleichungen für die Beschleunigungen sein.

x''= -c_w*v*y(3) =>d.h. y(3) = x' !?
y''= -g-c_w*v*y(4) =>d.h. y(4) = y' !?

Wäre dann y(1)=x und y(2)=y ?!?!

Damit müsste der ydot Vektor doch folgendermaßen aussehen:

ydot = [x' y' x'' y'']

Wenn ich mit

Code:
[t,y]=ode23(@fwurf,[t0 te],y0)


die DGL löse dann steht im Lösungsvektor:

y = [ x y x' y'] !?!??!?!?!

Der Vektor für die Anfangswerte in der Main-Programm müsste dann entsprechend des ydot Vektors auch vier Einträge besitzen, oder?

also die Einträge zum Zeitpunkt t=0 wären dann ,
y0= [x(t=0) y(t=0) x'(t=0) y'=(t=0)]

Freue mich auf eure Antworten.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.03.2014, 13:15     Titel:
  Antworten mit Zitat      
Hallo,

sieht soweit gut aus.
Ich finde es immer leichter, wenn man statt y dann u verwendet, um das zusammenzufassen. Sonst bringt man schnell das ursprüngliche y und das zusammenfassende y durcheinander.

Globale Variablen können vermieden werden - siehe
http://www.mathworks.com/help/matla.....meterizing-functions.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lerner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2014, 13:54     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine schnelle Antwort.

Mir sind noch ein paar Fragen eingefallen.

Bei dem Vektor y0 im Main-Programm kann ich doch auch die Anfangswerte für die Beschleunigung angeben, oder?!

z.B.: y0 = [x(t=0) y(t=0) x'(t=0) y'=(t=0) x''(t=0) y''(t=0)]


Gibt es eine Möglichkeit im Lösungsvektor y der DGL
die Beschleunigung auszugeben?

z.B. y=[x y x' y' x'' y'']

Um die Beschleunigung über die Zeit zu plotten, ist mir nur eingefallen, dass ich in die Beschleunigungsgleichungen aus ydot nochmal die berechten Lösungen aus y einsetzten könnte.

also so in etwa:
x''= -c_w*v*y(:,3);
y''= -g-c_w*v*y(:,4);
plot(t,x'');
plot(t,y'');

Ich habe es ausprobiert und es funktioniert, aber gibt es da vielleicht noch einen besseren Weg?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.03.2014, 15:13     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Bei dem Vektor y0 im Main-Programm kann ich doch auch die Anfangswerte für die Beschleunigung angeben, oder?!

z.B.: y0 = [x(t=0) y(t=0) x'(t=0) y'=(t=0) x''(t=0) y''(t=0)]

Nein, ist aber auch nicht nötig. Die anfängliche Beschleunigung ergibt sich ja direkt aus deiner Funktion fwurf.

Zitat:
Um die Beschleunigung über die Zeit zu plotten, ist mir nur eingefallen, dass ich in die Beschleunigungsgleichungen aus ydot nochmal die berechten Lösungen aus y einsetzten könnte.

Das ist eine gute Idee. Alternativ kannst du fwurf aufrufen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lerner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2014, 16:34     Titel:
  Antworten mit Zitat      
Hallo nochmals,

ich habe deinen Vorschlag ausprobiert. Nun hänge ich scheinbar am Syntax.
Folgender Code müsste es doch tun oder?

Code:
Beschleunigung = fwurf(t,y)  
%mit z.B.:
%t= 0:2;
%y = [x y x' y'] aus der gelösten DGL?


Habe es bei einem anderen Beispiel ausprobiert, da werden mir die zwei Beschleunigungswerte zum Zeitpunkt t=0 und t=end ausgegeben. Komisch.

Hier mal der Code zu dem was ich selber umzusetzen versuche. Es handelt sich dabei um ein einfaches Feder-Dämpfer-System mit einer vorgespannten Feder.

Code:
clear all; clc;

% Anfangswerte
u0 =[0 0]                                %[u(1) u(2)] = [ x x'] Vektor mit den    Anfangswerten

t0=0;                                      % Startzeit
te=0.2;                                   % Endzeit

%lösen der DGL
[t,y]=ode23(@f_entk,[0 te],u0)

%JETZT DIE BESCHLEUNIGUNG AUSGEBEN BITTE!
a = f_entk(t,y)    %?!??!?!

-------------------Function---------------------------------------------------------
function ydot = f_entk(t, u)
m = 6;                                  % Masse  [kg]
c = 2*10^6;                          % Federkonstante [N/m]
d = 250;                                % Dämpfungskonstante [N/(m/s)]

%Feder soll vorgespannt sein
x0 = 0.015;                             %Vorspannweg [m]

%habe mal y durch u ersetzt
ydot=[u(2); -(d/m)*u(2)-(c/m)*u(1)+(c/m)*x0 ];  DGL
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.03.2014, 16:57     Titel:
  Antworten mit Zitat      
Hallo,

deine f_entk ist darauf ausgelegt, t und einen u-Vektor entgegenzunehmen.

Jetzt wertest du das mit einer Matrix y aus - wie soll das klappen?

Du musst deine Funktion entweder geeignet umschreiben oder sie in einer for-Schleife aufrufen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lerner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2014, 00:06     Titel:
  Antworten mit Zitat      
Wie genau würdest du die function denn umschreiben, an dieser Stelle wäre für mich ein Beispiel wirklich hilfreich.

Wenn ich ydot in der function ausgebe, kommt dabei pro Zeitschritt ein Vektor mit 2 Einträgen raus. Diese 2 Einträge sind vermutlich [x x'] und könnte sie dann in die Beschleunigungsgleichung einsetzen?!

Ausgabe ydot pro Zeitschritt:
Code:
ydot =

    0.0138
 -539.2223


Code:
Beschleunigung =  -(d/m)*ydot(1,1)-(c/m)*ydot(2,1)+(c/m)*x0;


Zudem noch eine Ausgabevariable zu der function hinzufügen oder?

Code:
function [ydot,Beschleunigung]= f_entk(t, u)


Was anderes zu "Funktion geeignet umschreiben" fällt mir leider nicht ein...

Als Ergebnis kommt leider ein zu kurzer Vektor für 'Beschleunigung' raus.


Code:
a =

         447
          67
        1543
           0
           0
           0
 
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.03.2014, 10:21     Titel:
  Antworten mit Zitat      
Hallo,

z.B. so:

Code:
function odemain


% Anfangswerte
u0 =[0 0]                                %[u(1) u(2)] = [ x x'] Vektor mit den    Anfangswerten

t0=0;                                      % Startzeit
te=0.2;                                   % Endzeit

%lösen der DGL
[t,y]=ode23(@f_entk,[0 te],u0)

%JETZT DIE BESCHLEUNIGUNG AUSGEBEN BITTE!
a = f_entk(t,y')'    %?!??!?!


function ydot = f_entk(t, u)
m = 6;                                  % Masse  [kg]
c = 2*10^6;                          % Federkonstante [N/m]
d = 250;                                % Dämpfungskonstante [N/(m/s)]

%Feder soll vorgespannt sein
x0 = 0.015;                             %Vorspannweg [m]

%habe mal y durch u ersetzt
ydot=[u(2,:); -(d/m)*u(2,:)-(c/m)*u(1,:)+(c/m)*x0 ];  %DGL


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lerner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2014, 11:34     Titel:
  Antworten mit Zitat      
Hallo Harald,

bei mir kommt leider ein zu kurzer Vektor "a" raus (siehe Ergebnis ganz unten).
Question

Ergebnis:

Code:
t =

         0
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0001
    0.0002
    0.0005
    0.0008
    0.0011
    0.0014
    0.0018
    0.0022
    0.0026
    0.0031
    0.0037
    0.0043
    0.0048
    0.0052
    0.0055
    0.0057
    0.0060
    0.0063
    0.0068
    0.0073
    0.0079
    0.0085
    0.0091
    0.0096
    0.0101
    0.0106
    0.0108
    0.0111
    0.0114
    0.0117
    0.0122
    0.0126
    0.0131
    0.0136
    0.0141
    0.0147
    0.0153
    0.0158
    0.0162
    0.0164
    0.0166
    0.0169
    0.0173
    0.0177
    0.0183
    0.0189
    0.0195
    0.0201
    0.0207
    0.0212
    0.0216
    0.0218
    0.0221
    0.0224
    0.0227
    0.0231
    0.0237
    0.0242
    0.0248
    0.0254
    0.0260
    0.0265
    0.0269
    0.0272
    0.0275
    0.0277
    0.0281
    0.0285
    0.0290
    0.0296
    0.0303
    0.0310
    0.0315
    0.0320
    0.0324
    0.0327
    0.0330
    0.0332
    0.0336
    0.0340
    0.0345
    0.0351
    0.0357
    0.0364
    0.0370
    0.0375
    0.0379
    0.0381
    0.0384
    0.0387
    0.0390
    0.0395
    0.0400
    0.0406
    0.0413
    0.0420
    0.0426
    0.0430
    0.0434
    0.0437
    0.0440
    0.0443
    0.0447
    0.0451
    0.0457
    0.0464
    0.0471
    0.0477
    0.0482
    0.0486
    0.0489
    0.0492
    0.0495
    0.0498
    0.0502
    0.0507
    0.0513
    0.0521
    0.0527
    0.0532
    0.0537
    0.0542
    0.0544
    0.0547
    0.0550
    0.0553
    0.0558
    0.0563
    0.0569
    0.0576
    0.0582
    0.0587
    0.0592
    0.0597
    0.0599
    0.0602
    0.0604
    0.0608
    0.0612
    0.0617
    0.0624
    0.0632
    0.0639
    0.0644
    0.0649
    0.0653
    0.0656
    0.0659
    0.0662
    0.0666
    0.0671
    0.0677
    0.0685
    0.0691
    0.0696
    0.0701
    0.0706
    0.0708
    0.0711
    0.0713
    0.0717
    0.0721
    0.0726
    0.0733
    0.0739
    0.0746
    0.0751
    0.0756
    0.0760
    0.0763
    0.0765
    0.0768
    0.0772
    0.0776
    0.0781
    0.0788
    0.0794
    0.0800
    0.0806
    0.0811
    0.0815
    0.0817
    0.0820
    0.0823
    0.0826
    0.0830
    0.0836
    0.0842
    0.0849
    0.0855
    0.0860
    0.0865
    0.0869
    0.0872
    0.0874
    0.0877
    0.0880
    0.0885
    0.0890
    0.0897
    0.0903
    0.0909
    0.0915
    0.0919
    0.0924
    0.0926
    0.0928
    0.0931
    0.0935
    0.0939
    0.0944
    0.0951
    0.0957
    0.0963
    0.0969
    0.0974
    0.0978
    0.0980
    0.0983
    0.0986
    0.0989
    0.0993
    0.0999
    0.1005
    0.1011
    0.1017
    0.1023
    0.1028
    0.1032
    0.1035
    0.1037
    0.1040
    0.1044
    0.1048
    0.1053
    0.1060
    0.1066
    0.1071
    0.1077
    0.1082
    0.1086
    0.1089
    0.1092
    0.1094
    0.1098
    0.1102
    0.1107
    0.1114
    0.1120
    0.1126
    0.1132
    0.1137
    0.1141
    0.1143
    0.1146
    0.1149
    0.1152
    0.1157
    0.1162
    0.1168
    0.1174
    0.1180
    0.1186
    0.1191
    0.1195
    0.1198
    0.1200
    0.1203
    0.1207
    0.1211
    0.1216
    0.1222
    0.1228
    0.1234
    0.1240
    0.1245
    0.1250
    0.1252
    0.1255
    0.1258
    0.1261
    0.1265
    0.1270
    0.1277
    0.1283
    0.1289
    0.1295
    0.1300
    0.1304
    0.1307
    0.1309
    0.1312
    0.1316
    0.1320
    0.1325
    0.1332
    0.1338
    0.1344
    0.1350
    0.1355
    0.1359
    0.1362
    0.1364
    0.1367
    0.1370
    0.1375
    0.1380
    0.1386
    0.1393
    0.1400
    0.1405
    0.1410
    0.1414
    0.1417
    0.1419
    0.1422
    0.1426
    0.1431
    0.1436
    0.1444
    0.1450
    0.1455
    0.1461
    0.1465
    0.1469
    0.1471
    0.1473
    0.1476
    0.1480
    0.1485
    0.1490
    0.1497
    0.1503
    0.1508
    0.1514
    0.1519
    0.1523
    0.1525
    0.1528
    0.1531
    0.1534
    0.1539
    0.1544
    0.1551
    0.1557
    0.1563
    0.1569
    0.1574
    0.1578
    0.1580
    0.1583
    0.1586
    0.1590
    0.1594
    0.1600
    0.1607
    0.1613
    0.1619
    0.1624
    0.1629
    0.1632
    0.1634
    0.1637
    0.1640
    0.1644
    0.1648
    0.1654
    0.1661
    0.1667
    0.1672
    0.1678
    0.1682
    0.1687
    0.1689
    0.1692
    0.1695
    0.1699
    0.1703
    0.1709
    0.1717
    0.1723
    0.1728
    0.1734
    0.1738
    0.1741
    0.1744
    0.1747
    0.1750
    0.1754
    0.1759
    0.1765
    0.1772
    0.1779
    0.1785
    0.1790
    0.1794
    0.1797
    0.1799
    0.1802
    0.1806
    0.1810
    0.1815
    0.1821
    0.1828
    0.1834
    0.1839
    0.1844
    0.1849
    0.1851
    0.1854
    0.1857
    0.1860
    0.1864
    0.1870
    0.1876
    0.1884
    0.1889
    0.1894
    0.1899
    0.1904
    0.1906
    0.1908
    0.1911
    0.1915
    0.1919
    0.1924
    0.1931
    0.1936
    0.1941
    0.1947
    0.1952
    0.1956
    0.1959
    0.1962
    0.1965
    0.1968
    0.1972
    0.1977
    0.1984
    0.1990
    0.1996
    0.2000


y =

         0         0
    0.0000    0.0001
    0.0000    0.0005
    0.0000    0.0025
    0.0000    0.0125
    0.0000    0.0625
    0.0000    0.3120
    0.0001    1.1382
    0.0006    2.3830
    0.0015    3.7025
    0.0027    4.9135
    0.0046    6.0988
    0.0070    7.1353
    0.0101    7.8827
    0.0138    8.1879
    0.0178    7.8926
    0.0218    6.8426
    0.0253    5.0165
    0.0273    3.0318
    0.0282    1.1350
    0.0284   -0.0487
    0.0282   -1.2182
    0.0277   -2.3859
    0.0266   -3.7676
    0.0247   -5.2038
    0.0217   -6.4802
    0.0172   -7.2478
    0.0130   -7.0853
    0.0092   -6.1982
    0.0063   -4.7737
    0.0043   -3.0229
    0.0033   -1.3079
    0.0031   -0.1639
    0.0032    0.9709
    0.0036    1.9763
    0.0045    3.1887
    0.0061    4.4697
    0.0084    5.5438
    0.0112    6.2489
    0.0144    6.4874
    0.0178    6.1442
    0.0212    5.1047
    0.0236    3.6090
    0.0250    2.0380
    0.0255    0.5739
    0.0256   -0.2669
    0.0254   -1.0944
    0.0250   -2.0539
    0.0240   -3.1644
    0.0224   -4.2951
    0.0198   -5.2659
    0.0161   -5.7685
    0.0126   -5.4839
    0.0096   -4.5771
    0.0074   -3.2515
    0.0061   -1.8535
    0.0056   -0.5464
    0.0056    0.1904
    0.0057    0.9165
    0.0061    1.7556
    0.0069    2.7369
    0.0083    3.7462
    0.0105    4.6279
    0.0131    5.0892
    0.0160    5.0448
    0.0189    4.4118
    0.0212    3.2890
    0.0226    2.0469
    0.0233    0.8445
    0.0234    0.0603
    0.0233   -0.7162
    0.0230   -1.4346
    0.0223   -2.2941
    0.0212   -3.1962
    0.0194   -4.0103
    0.0166   -4.5298
    0.0136   -4.4260
    0.0110   -3.7286
    0.0091   -2.6944
    0.0081   -1.5871
    0.0076   -0.5396
    0.0076    0.0873
    0.0077    0.7057
    0.0079    1.3643
    0.0086    2.1384
    0.0097    2.9381
    0.0114    3.6420
    0.0137    4.0388
    0.0162    3.9449
    0.0186    3.3062
    0.0202    2.3845
    0.0212    1.3995
    0.0216    0.4691
    0.0216   -0.0843
    0.0215   -0.6302
    0.0213   -1.2168
    0.0207   -1.9056
    0.0197   -2.6169
    0.0182   -3.2422
    0.0159   -3.6040
    0.0134   -3.4207
    0.0113   -2.7236
    0.0101   -1.8755
    0.0094   -1.0043
    0.0091   -0.2056
    0.0091    0.2972
    0.0093    0.7883
    0.0096    1.3598
    0.0103    1.9913
    0.0113    2.6022
    0.0130    3.0757
    0.0151    3.2001
    0.0172    2.8436
    0.0187    2.1618
    0.0197    1.3889
    0.0201    0.6288
    0.0202    0.1108
    0.0202   -0.4041
    0.0200   -0.8395
    0.0197   -1.3696
    0.0190   -1.9342
    0.0179   -2.4547
    0.0163   -2.8107
    0.0141   -2.7611
    0.0127   -2.3938
    0.0115   -1.7909
    0.0107   -1.1013
    0.0104   -0.4362
    0.0103   -0.0104
    0.0104    0.4108
    0.0106    0.8139
    0.0109    1.2935
    0.0116    1.7947
    0.0126    2.2436
    0.0142    2.5230
    0.0160    2.4236
    0.0172    2.0706
    0.0182    1.5200
    0.0188    0.9059
    0.0191    0.3214
    0.0191   -0.0350
    0.0191   -0.3867
    0.0189   -0.7513
    0.0186   -1.1808
    0.0180   -1.6256
    0.0170   -2.0186
    0.0156   -2.2504
    0.0138   -2.0988
    0.0126   -1.6514
    0.0119   -1.1170
    0.0115   -0.5750
    0.0113   -0.0833
    0.0114    0.3100
    0.0115    0.6237
    0.0118    1.0004
    0.0123    1.3967
    0.0131    1.7555
    0.0143    1.9872
    0.0158    1.9062
    0.0168    1.6218
    0.0176    1.1839
    0.0180    0.6989
    0.0182    0.2390
    0.0183   -0.0370
    0.0182   -0.3093
    0.0181   -0.5982
    0.0178   -0.9379
    0.0173   -1.2890
    0.0166   -1.5982
    0.0155   -1.7781
    0.0143   -1.7101
    0.0133   -1.4175
    0.0127   -1.0080
    0.0123   -0.5760
    0.0121   -0.1718
    0.0121    0.0571
    0.0121    0.2828
    0.0122    0.5419
    0.0125    0.8450
    0.0129    1.1568
    0.0136    1.4294
    0.0146    1.5831
    0.0156    1.5151
    0.0165    1.2517
    0.0171    0.8864
    0.0174    0.5024
    0.0176    0.1440
    0.0176   -0.0602
    0.0175   -0.2613
    0.0174   -0.4942
    0.0172   -0.7649
    0.0168   -1.0417
    0.0162   -1.2809
    0.0153   -1.4095
    0.0144   -1.3437
    0.0137   -1.1166
    0.0131   -0.7923
    0.0128   -0.4507
    0.0127   -0.1315
    0.0127    0.0489
    0.0127    0.2267
    0.0128    0.4325
    0.0130    0.6726
    0.0134    0.9191
    0.0139    1.1337
    0.0147    1.2528
    0.0155    1.1997
    0.0162    1.0010
    0.0166    0.7136
    0.0169    0.4096
    0.0170    0.1247
    0.0170   -0.0380
    0.0170   -0.1984
    0.0169   -0.3806
    0.0168   -0.5938
    0.0165   -0.8132
    0.0160   -1.0051
    0.0153   -1.1137
    0.0146   -1.0720
    0.0140   -0.9042
    0.0136   -0.6506
    0.0133   -0.3801
    0.0132   -0.1250
    0.0132    0.0255
    0.0132    0.1740
    0.0133    0.3353
    0.0134    0.5246
    0.0137    0.7199
    0.0141    0.8914
    0.0147    0.9901
    0.0153    0.9557
    0.0159    0.8089
    0.0163    0.5840
    0.0165    0.3434
    0.0166    0.1159
    0.0166   -0.0198
    0.0166   -0.1537
    0.0165   -0.2969
    0.0164   -0.4652
    0.0162   -0.6389
    0.0158   -0.7918
    0.0152   -0.8804
    0.0147   -0.8526
    0.0142   -0.7280
    0.0139   -0.5293
    0.0137   -0.3153
    0.0136   -0.1119
    0.0136    0.0121
    0.0136    0.1345
    0.0136    0.2612
    0.0138    0.4106
    0.0140    0.5653
    0.0143    0.7020
    0.0148    0.7826
    0.0152    0.7604
    0.0157    0.6520
    0.0160    0.4760
    0.0162    0.2856
    0.0163    0.1042
    0.0163   -0.0077
    0.0163   -0.1183
    0.0162   -0.2307
    0.0161   -0.3634
    0.0159   -0.5011
    0.0156   -0.6231
    0.0152   -0.6959
    0.0148   -0.6785
    0.0144   -0.5867
    0.0141   -0.4313
    0.0140   -0.2620
    0.0139   -0.0999
    0.0139    0.0021
    0.0139    0.1030
    0.0139    0.2023
    0.0140    0.3201
    0.0142    0.4426
    0.0144    0.5518
    0.0148    0.6184
    0.0152    0.6046
    0.0155    0.5226
    0.0158    0.3845
    0.0159    0.2339
    0.0160    0.0896
    0.0160   -0.0014
    0.0160   -0.0913
    0.0160   -0.1797
    0.0159   -0.2844
    0.0157   -0.3934
    0.0155   -0.4907
    0.0152   -0.5500
    0.0148   -0.5355
    0.0145   -0.4537
    0.0143   -0.3289
    0.0142   -0.1948
    0.0141   -0.0677
    0.0141    0.0090
    0.0141    0.0848
    0.0141    0.1644
    0.0142    0.2580
    0.0144    0.3549
    0.0146    0.4403
    0.0149    0.4903
    0.0152    0.4721
    0.0155    0.3920
    0.0156    0.2792
    0.0158    0.1600
    0.0158    0.0484
    0.0158   -0.0152
    0.0158   -0.0779
    0.0158   -0.1493
    0.0157   -0.2329
    0.0156   -0.3189
    0.0154   -0.3941
    0.0151   -0.4366
    0.0148   -0.4151
    0.0146   -0.3336
    0.0144   -0.2314
    0.0143   -0.1258
    0.0143   -0.0285
    0.0143    0.0313
    0.0143    0.0899
    0.0143    0.1580
    0.0144    0.2342
    0.0145    0.3089
    0.0147    0.3685
    0.0150    0.3863
    0.0152    0.3517
    0.0154    0.2806
    0.0155    0.1885
    0.0156    0.0953
    0.0156    0.0281
    0.0156   -0.0226
    0.0156   -0.0723
    0.0156   -0.1313
    0.0155   -0.1985
    0.0154   -0.2657
    0.0153   -0.3216
    0.0150   -0.3456
    0.0148   -0.3239
    0.0147   -0.2697
    0.0145   -0.1898
    0.0145   -0.1061
    0.0144   -0.0284
    0.0144    0.0171
    0.0144    0.0619
    0.0145    0.1139
    0.0145    0.1734
    0.0146    0.2334
    0.0148    0.2839
    0.0150    0.3076
    0.0151    0.2879
    0.0153    0.2341
    0.0154    0.1622
    0.0155    0.0880
    0.0155    0.0196
    0.0155   -0.0226
    0.0155   -0.0639
    0.0155   -0.1120
    0.0154   -0.1656
    0.0153   -0.2180
    0.0152   -0.2597
    0.0150   -0.2714
    0.0148   -0.2463
    0.0147   -0.1957
    0.0146   -0.1308
    0.0146   -0.0653
    0.0146   -0.0184
    0.0146    0.0176
    0.0146    0.0530
    0.0146    0.0950
    0.0146    0.1424
    0.0147    0.1894
    0.0148    0.2280
    0.0150    0.2427
    0.0151    0.2248
    0.0152    0.1839
    0.0153    0.1270
    0.0154    0.0683
    0.0154    0.0144
    0.0154   -0.0193
    0.0154   -0.0522
    0.0154   -0.0905
    0.0153   -0.1330
    0.0152   -0.1743
    0.0151   -0.2065
    0.0150   -0.2138
    0.0149   -0.1921
    0.0148   -0.1505
    0.0147   -0.0989
    0.0147   -0.0474
    0.0146   -0.0113
    0.0146    0.0247
    0.0147    0.0532
    0.0147    0.0885
    0.0147    0.1265
    0.0148    0.1621
    0.0149    0.1877
    0.0150    0.1892
    0.0152    0.1611
    0.0152    0.1183
    0.0153    0.0717
    0.0153    0.0271
    0.0153   -0.0008
    0.0153   -0.0284
    0.0153   -0.0558
    0.0153   -0.0882
    0.0152   -0.1219
    0.0152   -0.1519
    0.0151   -0.1701
    0.0149   -0.1633
    0.0148   -0.1396
    0.0148   -0.1026
    0.0147   -0.0613
    0.0147   -0.0219
    0.0147    0.0022
    0.0147    0.0260
    0.0147    0.0505
    0.0148    0.0794
    0.0148    0.1094
    0.0149    0.1359
    0.0150    0.1515
    0.0151    0.1416
    0.0151    0.1192
    0.0152    0.0865
    0.0152    0.0498
    0.0152    0.0153
    0.0152   -0.0045
    0.0152   -0.0240
    0.0152   -0.0461
    0.0152   -0.0719
    0.0152   -0.0985
    0.0151   -0.1217
    0.0150   -0.1349
    0.0150   -0.1320
    0.0149   -0.1187
    0.0148   -0.0897
    0.0148   -0.0571
    0.0148   -0.0252
    0.0148   -0.0037
    0.0148    0.0176
    0.0148    0.0361
    0.0148    0.0586
    0.0148    0.0823
    0.0149    0.1041
    0.0150    0.1187
    0.0150    0.1180
    0.0151    0.1022
    0.0151    0.0860


a =

   1.0e+03 *

    0.0000    0.0000
    5.0000    5.0000
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.03.2014, 12:49     Titel:
  Antworten mit Zitat      
Hallo,

ich habe den Code getestet, und bei mir war dem nicht so.
Meine Vermutung ist, dass du nicht alle von mir vorgeschlagenen Änderungen übernommen hast - insbesondere nicht
Code:
a = f_entk(t,y')'


Zudem: wenn dir nicht klar ist, warum ein Code das macht, was er macht, dann geh das ganze doch mal mit dem Debugger durch?

Und wenn es für dich einfacher ist, dann ruf eben nicht die Funktion nochmal auf, sondern führe die Auswertung direkt durch - wie von dir selbst vorgeschlagen im Beitrag von gestern, 12:54.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lerner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2014, 18:23     Titel:
  Antworten mit Zitat      
Hallo Harald,

eine verspätetes Dankeschön für deine Hilfe. Dein letzter Tipp hat wunderbar funktioniert.

Ja, ich benutze ständig den Debugger, um zu gucken was der Code macht.

Nun bin ich dabei das Skript mit mehreren Funktionen zu verschachteln. Beim Debuggen ist mir aufgefallen, dass beim Aufruf einer Function die Zeit als ein kompletter t-Vector übergeben wird. Eigentlich wollte ich in der Function if-Bedingungen setzen. Aber dadurch, dass t ein Vektor ist, werden die Bedingungen scheinbar ignoriert...
Ursprünglich dachte ich, dass man mit ein "." die Berechnung komponentenweise ausführen kann, aber dem ist irgendwie nicht so.


Beispielcode:

Code:
%Main%
clear all;
clc;

t=[0:0.01:1]

p=zwei_fcndruck(t)

plot(t,p)

%Function%
function [ p_bar] = zwei_fcndruck(t)
t

if t <= 0 & t < 0.3
p_bar = 10*t

elseif t > 0.3 & t < 0.7
 p_bar = 5*t

else
 p_bar = 2*t
end

end


Sind in der ODE-function auch IF-Bedingungen erlaubt? Quasi, dass er zwischen unterschiedlichen zu lösenden Differentialgleichungen springt?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2014, 20:00     Titel:
  Antworten mit Zitat      
Hallo,

du müsstest entweder innerhalb oder außerhalb der Funktion eine for-Schleife verwenden, oder noch besser: logische Indizierung.

Code:
function [ p_bar] = zwei_fcndruck(t)
p_bar = zeros(size(t));
p_bar(t <= 0 & t < 0.3) = 10*t(t <= 0 & t < 0.3);
% etc.


Grüße,
Harald
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.