Programmcode < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Hallo alle zusammen...
habe folgendes programm bekommen leider sind da sehr wahrscheinblich fehler drin, so dass ich es nicht zum laufen bekomme... deswegen die frage an euch spezialisten.
benötige das prog um vergleichsrechnungen zu machen...
Programmstart
Remove["Global'*"]
<< Graphisc 'Graphics3D'
[mm] ____________________________________________________________\
[/mm]
_______________________________________________
Parametereinstellwerte
alphas = 5*Pi/180; (Null)
bs = 6; (Angabe in mm)
ae = 25/100; (Angabe in mm)
(hat auf deltagrad max so gut wie keinen Einfluss)
af = 4/100; (Angabe in mm)
rss = 400/2 (Angabe in mm)
rws = 60/2 (Angabe in mm)
nw = 1000/60 (Angabe in mm)
bss = ae/(Tan[alphas]);
imax = IntegerPart[(bss/af)];
If[imax == 0, imax = 1];
vec = Table[i, {i, 1, imax, 1}]
z = ae - vec*af*Tan[alphas] (Näherung gilt erst ab Punkt 2)
x = bss - vec*af (Näherung gilt erst ab Punkt 2)
rssi = rss - z (Schnittfläche zweier Kreise)
[mm] ____________________________________________________________\
[/mm]
________________________________________________
Definitionen
r10 = rss;
r1 = rssi (Schleifscheibe)
(Berechnung gilt erst ab Punkt 2)
r2 = rws; (Werkstück)
h = r10 - ae + r2
[mm] ____________________________________________________________\
[/mm]
_______________________________________________
Schnittpunkte
k1[w_] = [mm] Sqrt[r1^2 [/mm] - [mm] w^2];
[/mm]
k2[w_] = h - [mm] Sqrt[r2^2 [/mm] - [mm] w^2]
[/mm]
l1 = {};
Do[{w0 = Solve[k1[w]j == k2[w], w], l1 = Append[l1, w0]}, {j, 1, max, 1 [mm] \
[/mm]
=)
l1;
l1 = w/ .l1;
erg = N[Table[l2j2, {j, 1, imax, 1}]] (Die Höhen (erg) gelten ab [mm] \
[/mm]
Punkt 2 entsprechend beta/betass/st)
(Winkel im Bogenmaß, werkstückseitig)
beta = ArcSin[erg/r2]; (Berechnung gilt erst ab Punkt 2)
(Winkel im Bogenmaß, scheibenseitig)
betass = ArcSin[erg/r1]; (Berechnung gilt erst ab Punkt 2)
st = erg; (Höhe in mm (st))
[mm] ______________________________________________________________________________\
[/mm]
______________________________
Berechnung von Delta
vw = nw*Pi*2*rws;
vaf = nw*af;
tst = rws*
beta/vw; (Näherung (normalerweise mit rwsi) aber ae im [mm] \
[/mm]
Verhältnis zu rws vernachlässigbar klein)
sa = vaf*tst;
delta = ArcTan[sa/st]; (Berechnung gilt erst ab Punkt 2)
deltagrad = delta*180/Pi
deltagemittelt = N[(Max[Deltagrad] + Min[deltagrad])/2]
Qw = N[Pi*(2*rws)*(ae)*(nw)*(af)]
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Koordinate für Durchdringungslinien mit rws = konstant
px = Reverse[Append[Reverse[x], N[bss]]]; Durch
das manuelle
Hinzufügen des Pkt.1 gelten die Koordinaten ab Pkt.1)
py = Reverse[Append[Reverse[st], 0]];
pz = Reverse[Append[Reverse[rssi(1 - Cos[betass]) + z], ae]];
linie = Transpose[{px, py, pz}];
ScatterPlot3D[linie, TextStyle -> FontSize -> 17, AxesLabel -> {"X", "Y",
"Z"}, ViewPoint -> {-1.839, -7.095, 0.865}, PlotStyle ->
PointSize[0.06]]
grün = ListPlot[Transpose[{
px, py}], AxecLabel -> {"x", "y"}, TextStyle -> FontSize ->
17, AxesOrigin -> {0,
0}, PlotStyle -> PointSize[0.02], AspectRatio -> Automatic]
ListPlot[Transpose[{px, pz}],
AxesLabel -> {"X",
"Z"}, TextStyle -> FontSize -> 17, AxesOrigin -> {0, 0}]
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Koordinate für die Durchdingungslinie mit rws = nicht konstant
deltax = Reverse[Append[Reverse[st*Tan[delta]], 0]];
deltax = Table[deltax]; (Berechnung gilt ab Punkt 1)
pxhilfe = Table[px]; (Berechnung gilt ab Punkt 1)
deltaxges = Table[i, {1, imac + 1, 1}];
Do[{deltaxgesI + 1 = (pxhilfei - deltaxi) - (pxhilfei + 1 - [mm] \
[/mm]
deltaxi + 1)}, {i, 1, imax, 1}];
deltaxges (Achtung : der erste Wert von deltaxtges ist nur aufgrund der [mm] \
[/mm]
Konstukion der Formel vorhanden und hat mit der Rechnung nichts zu tun)
deltaxge = Delete[deltaxges, 1]; (Entfernung des "Konstruktionswertes")
(Berechnung gilt erst ab Punkt 2)
deltahges = deltaxges*Tan[alphas]; (Berechung gilt erst ab Punkt 2)
rwsi = Table[i, {i, 1, imax, 1}];
rwsi1 = rws; (
Berechnung gilt erst ab Punkt 2, aber durch das manuelle
Einfügen des Punktes 1 ist r1 = r2 = rws)
Do[{rwsii + 1 = (rwsii - deltahgesi]}, {i, 1, imax - 1, 1}]
rwsi; (Der erste
Inhalt von rwsi entspricht nicht dem
Radius in Punkt 2, da Punkt 1
nachträglich non HAnd eingefügt wurde)
[mm] ______________________________________________________________________________\
[/mm]
_______________________________
Berechnung von Betasternchen
r1 = rssi; (Schleifscheibe)
(Berechnung gilt erst ab Punkt 2)
r2 = rwsi; (werkstück)
h
kstern1[v_] = [mm] Sqrt[r1^2 [/mm] - [mm] v^2];
[/mm]
kstern2[v_] = h - [mm] Sqrt[r2^2 [/mm] - [mm] v^2];
[/mm]
l1 = {};
Do[{v0 = Solve[kstern1[
v]j == kstern2[v]j, v], l1 = Append[l1, v0]}, {j, 1, imax, 1}];
N[l1]
l2}v /. l1;
erg2 = Table[l2j2, {j, 1, imax, 1}] (Die
Höhen (erg2) gelten ab Punkt 2)
(winkel betasternchen im Bogemaß werkstückseitig)
beta = ArcSin[erg2/r2] (Die Winkel beta gelten ab Punkt 2)
(Winkel im Bogenmaß, scheibenseitig)
betass = ArcSin[erg2/r1] (Die Winkel betass gelten ab Punkt 2)
ststernchen = erg2; (Die Höhen (erg2) gelten ab Punkt 2)
(Koordinaten der Durchdringungslinie mit rws nicht konstant)
deltast = st - ststernchen (deltast/deltasa gelten ab Punkt 2)
deltasa = deltast*Tan[delta]
Psternchenx = Reverse[Append[Reverse[x - deltasa], N[
bss]]]; (Die Koordinaten gelten wieder ab Punkt 1)
Psterncheny = Reverse[Append[Reverse[ststernchen], 0]];
Psternchenz = Reverse[Append[Reverse[(rssi + deltase*Tan[alphas])*(1 - [mm] \
[/mm]
Cos[betass]) + z - deltasa*tan[alphas]], N[ae]]]
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Koordinaten im zyl Teil
deltahschrupp = (Psternchenx
imax + 1 - Psternchenyimax + 1*Tan[deltaimac])*Tan[alphas]
(imax + 1, da Punkt 1 nachträgleich eingefüt
wurde.delta[imax] ist passende Winkel zum Pkt.imax + 1)
r1 = rss (Berechnung gilt lediglich für einen Punkt 2)
r2 = rws - ae + deltahschrupp (Werkstückdurchmesser )
r10 = rss
h
m1[t_] = [mm] Sqrt[r1^2 [/mm] - [mm] t^2]
[/mm]
m2[t_] = h - [mm] Sqrt[r2^2 [/mm] - [mm] t^2]
[/mm]
l1 = {}
t0 = Solve[m1[t] == m2[t], t]
l1 = Append[l1, t0]
l2 = t /. l1;
erg3 = Table[l2j2, {j, 1, 1, 1}]
ststernchenzyl = erg3;
tststernchenzyl = ((r2)*(ArcSin[erg3/r2]))/vw; (aktueller WS - Radius*
Schnittwinkel/vw ergibt Eingriffszeit)
sasternchenzyl = vaf*tststernchenzyl
deltasternchenzyl = ArcTan[Sasternchenzyl/ststernchenzyl]
Psternchenzylx = Psternchenximax + 1 - af - (
Psternchenyimax + 1 - ststernchenzyl)*Tan[deltasternchenzyl];
(imax + 1, da Pkt.1 nachträglich eingefügt wurde.)
Psternchenzylx = Reverse[Append[Psternchenzylx, -af]]
Psternchenzyly = ststernchenzyl;
Psternchenzyly = Append[Psternchenzyly, 0]
Psternchenzylz = Table[i, {i, 0, 01}]
Psternchenzylz = Flatten[Reverse[
Append[Psternchenzylz, (rss(1 - Cos[ArcSin[erg3/rss]]))]]]
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Berechnung der Zweischenpunkte
Psternchenx = Reverse[Append[Psternchenx, Psternchenzylx]];
Psternchenx = Reverse[Append[Flatten, Psternchenx]]
Psterncheny = Flatten[Append[Psterncheny, Psternchenzyly]]
Psterncheny = Flatten[Append[Psternchenz, Psternchenzylz]];
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Berechnung der Koordinaten im Anfangsbereich
deltaxanf = (bss - x1)/10
anfvec == Table[i, {i, 9}]
xanf = bss - anfvec*anfvec*deltaxanf;
rssanf = rss - xanf*(ae/bss);
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Definitonen
r10 = rss;
r1 = rssanf; (scheibe)
r2 = rws;
h = r10 - ae + r2
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Schnittpunkte
k1[w_] = [mm] Sqrt[r1^2 [/mm] - [mm] w^2];
[/mm]
k2[w_] = [mm] Sqrt[r2^2 [/mm] - [mm] w^2];
[/mm]
l1 = {};
Do[{w0 = Solve[k1[w]j == k2[w], w], l1 = Append[l1, w0]}, {j, 1, 9, 1}]
l1;
l2 = w /. l1;
erg = Table[l2j2, {j, 1, 9, 1}]; (Winkel im Bogenmaß, [mm] \
[/mm]
werkstückseitig)
betaanf - ArcSind[erg/r2]; (Winkel im Bogenmaß, scheibenseitig)
betassanf = ArcSin[erg/r1]; (Höhe in mm (st))
Pxanf = Prepend[xanf, bss];
Pyanf = Prepend[Pyanf = erg, 0];
Pzanf = Prepend[Pzanf = (xanf*(ae/bss) + rssanf(1 - Cos[betassanf])), ae];
[mm] ______________________________________________________________________________\
[/mm]
_____________________________
Koordinaten der Durchdringungs
KoordinateX = N[Flatten[Prepend[KoordinateX =
Delete[Psternchenx, 1], Pxanf]]]
KoordinateY = N[Flatten[Prepend[KoordinateY = Delete[Psterncheny, 1], [mm] \
[/mm]
Pxanf]]]
KoordinateZ = N[Flatten[Prepend[KoordinateZ = Delete[Psternchenz, 1], [mm] \
[/mm]
Pxanf]]]
Koordinatenergebnis1 = Transpose[{KoordinateX, KoordinateY, KoordinateZ}]
[mm] Export["c:/Koordinaten/llalphaqp0_1.wmf", [/mm] Koordinatenergebnis1, "Table"]
linie = Transpose[{KoordinateX, KoordinateY, KoordinateZ}];
ScatterPlot3D[linie, TextStyle ->
Fontsize -> 17, AxesLabel -> {"X", "Y", "Z"},
ViewPoint -> {-0, 000, -2.657, 2.095}, PlotStyle -> PointSize[0.06]]
rot = ListPlot[Transpose[{KoordinateX,
KoordinateY}], AxesLabel -> {"x", "y"}, TextStyle -> FontSize ->
17, AxesOrigin -> {0, 0}, PlotStyle -> {PointSize[0, 02],
RGBColor[1, 0, 0]}, AspectRatio -> Automatic]
ListPlot[Transpose[{KoordinateX, KoordinateZ}], AxesLabel -> {"X", "Z"},
TextStyle -> FontSize -> 17, AxesOrigin -> {0, 0}]
deltagrad
Show[rot, grün]
[mm] ______________________________________________________________________________\
[/mm]
______________________________
Programmende
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Dateianhänge: Anhang Nr. 1 (Typ: txt) [nicht öffentlich]
|
|
|
|
Hi,
in dem Code sind viele Tippfehler,
nicht zusammenpassende Klammern,
und , statt . in Zahlen.
Viele Grüße
nschlange
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:39 Mi 06.02.2008 | Autor: | BKM |
Hallo
Ich habe das Programm etwas überarbeitet um eine Handvoll Fehler ( s. erste Antwort) zu beseitigen. Es sind noch ca. 2 Bugs vorhanden, die Du aber vielleicht selber mal versuchst zu finden.
Programmcode
Beste Grüße
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich]
|
|
|
|