Ich bin gerade dabei das Massenträgheitsmoment zu berechnen.
Es ist eine Werkzeugbreite mit Radius gegeben, von der soll ich das Massenträgheitsmoment berechnen.
Die Formel für den Radius abhängig von x lautet: r(x)=15*x-(15/16)*x²
Die Formel für das Massenträgheitsmoment PRO Teilscheibe lautet: dJx=0,5*PI*rho*r(x)^4*dx
So, um nun das komplette Massenträgheitsmoment zu erhalten, muss ich alle dJx aufsummieren.
Aber jedes dJx ist logischerweise ein unterschiedlicher Wert, weil mein r(x) variabel ist bzw. abhängig vom x ist.
dJx1 = const*r(x1)^4
dJx2 = const*r(x2)^4
...
dJx200 = const*r(x200)^4
Jx = Aufsummierung aller dJx
Das hört sich ja nach einer Schleife an die von i=1 bis i<=200 läuft.
Das hier ist mein erster Versuch zumindest mal. Es geht um den case 2.
Ich will, dass jedes einzelne Massenträgheitsmoment in einem Feld gespeichert wird und anschließend sollen die alle aufaddiert werden.
Das bekomme ich doch irgendwie mit double jx = 0 als Initialisierung und anschließend jx +=dJx hin in einer Schleife und dann addiert sich das doch alles auf, oder?
Die Methode dJx soll aber dJx returnen. Also da darf ich nicht weiter rumspielen, das sollte eigentlich so passen. Ich denke mal, ich muss das dann direkt im case 2 lösen?
Ich hab mir das Ganze mal in Excel erstellt, um das nochmal visueller darzustellen, was ich eigentlich möchte. Vielleicht ist das auch hierfür sinnvoll, damit ihr mein Anliegen besser versteht.
Die einzelnen rx für bspw. x1 = 2 und b = 10. Und das jeweilige dJx. Rechts in gelb das Gesamtmassenträgheitsmoment nach Aufsummierung aller dJx.
x1 = 2
b = 10
x2 = 12 <- extra nochmal gesagt, weil die Breite ab x1 losgeht und dann bei x2, also 12 endet (nur falls das eine notwendige Information ist).
Nachtrag: Ich habe geprüft und case2: liefert schon mal das richtige x mit dem es rechnen soll. Also es zählt von 2 in 0,05 Schritten hoch bis 12.
(Diese 0,05 Schritte sind aber kein fester Wert. Der gilt nur bei Eingabe von x1 = 2 und b = 10, damit hier keine Missverständnisse entstehen).
Das x ist korrekt mit dem x+=dx.
Lol mein dJx ist sogar auch korrekt. Huch, was habe ich denn hier gemacht?😂
Jetzt muss ich nur noch mein Jx herausfinden mit dem Aufsummieren, aber das probiere ich gerade aus.
Es ist eine Werkzeugbreite mit Radius gegeben, von der soll ich das Massenträgheitsmoment berechnen.
Die Formel für den Radius abhängig von x lautet: r(x)=15*x-(15/16)*x²
Die Formel für das Massenträgheitsmoment PRO Teilscheibe lautet: dJx=0,5*PI*rho*r(x)^4*dx
So, um nun das komplette Massenträgheitsmoment zu erhalten, muss ich alle dJx aufsummieren.
Aber jedes dJx ist logischerweise ein unterschiedlicher Wert, weil mein r(x) variabel ist bzw. abhängig vom x ist.
dJx1 = const*r(x1)^4
dJx2 = const*r(x2)^4
...
dJx200 = const*r(x200)^4
Jx = Aufsummierung aller dJx
Das hört sich ja nach einer Schleife an die von i=1 bis i<=200 läuft.
Das hier ist mein erster Versuch zumindest mal. Es geht um den case 2.
Ich will, dass jedes einzelne Massenträgheitsmoment in einem Feld gespeichert wird und anschließend sollen die alle aufaddiert werden.
Das bekomme ich doch irgendwie mit double jx = 0 als Initialisierung und anschließend jx +=dJx hin in einer Schleife und dann addiert sich das doch alles auf, oder?
Die Methode dJx soll aber dJx returnen. Also da darf ich nicht weiter rumspielen, das sollte eigentlich so passen. Ich denke mal, ich muss das dann direkt im case 2 lösen?
Java:
import java.io.*;
import javax.swing.*;
import java.util.*;
public class Uebung {
public static void main (String[] args) {
String modell = "Maschine XYZ 123";
try {
String modellKette = args[0]+" "+args[1]+" "+args[2];
if(args.length!=3 | !(modellKette.equalsIgnoreCase(modell))) {
System.out.println("Falsche Werkzeugmaschine - Programmabbruch -");
System.exit(0);
}
else {
System.out.println("Berechnungsprogramm fuer Werkzeugmaschine Modell \"" +modellKette+"\"");
System.out.println("*************************************************");
}
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("Ungültige Anzahl Kommandozeilenparameter");
System.out.println("- Programmabbruch -");
System.exit(0);
}
boolean ende = true;
final int rho = 7800;
final int scheibenanzahl = 200;
double x=0, b=0, dx=0;
String eingabe;
double dJxFeld[] = new double[scheibenanzahl];
double rxFeld[] = new double[scheibenanzahl];
while(ende){
System.out.println("(1) Berechnungsparameter eingeben");
System.out.println("(2) Massentraegheitsmoment berechnen und ausgeben");
System.out.println("(3) Werte in Datei schreiben");
System.out.println("==================================================");
System.out.println("(0) Programm beenden");
eingabe = JOptionPane.showInputDialog("Ihre Eingabe?\n Bitte Menuepunkt waehlen;");
int wahl = Integer.parseInt(eingabe);
switch(wahl){
case 1:
eingabe = JOptionPane.showInputDialog("Startwert fuer x [mm]");
x = Double.parseDouble(eingabe);
eingabe = JOptionPane.showInputDialog("Breite b [mm]");
b = Double.parseDouble(eingabe);
dx = b/scheibenanzahl;
System.out.println("Dichte:\t\t"+rho+" [kg/m3]");
System.out.println("Startwert x:\t"+x+" [mm]");
System.out.println("Werkzeugbreite:\t"+b +" [mm]");
break;
case 2:
for(int i=0; i<200; i++) {
dJxFeld[i]=dJx(rho, x, dx);
//System.out.println("("+i+"): "+dJxFeld[i]);
x+=dx;
}
break;
case 3:
break;
case 0:
System.out.println("Programm beendet.");
ende=false;
break;
}
}
System.exit(0);
}
//Ab hier drunter Methoden:
public static double dJx(double rho, double x, double dx) {
return ((1/2.)*Math.PI*(rho/1000000000.)*Math.pow(rx(rho,x,dx),4)*dx);
}
public static double rx(double rho, double x, double dx) {
return (15*x-(15/16.)*Math.pow(x,2));
}
}
Ich hab mir das Ganze mal in Excel erstellt, um das nochmal visueller darzustellen, was ich eigentlich möchte. Vielleicht ist das auch hierfür sinnvoll, damit ihr mein Anliegen besser versteht.
Die einzelnen rx für bspw. x1 = 2 und b = 10. Und das jeweilige dJx. Rechts in gelb das Gesamtmassenträgheitsmoment nach Aufsummierung aller dJx.
x1 = 2
b = 10
x2 = 12 <- extra nochmal gesagt, weil die Breite ab x1 losgeht und dann bei x2, also 12 endet (nur falls das eine notwendige Information ist).
Nachtrag: Ich habe geprüft und case2: liefert schon mal das richtige x mit dem es rechnen soll. Also es zählt von 2 in 0,05 Schritten hoch bis 12.
(Diese 0,05 Schritte sind aber kein fester Wert. Der gilt nur bei Eingabe von x1 = 2 und b = 10, damit hier keine Missverständnisse entstehen).
Das x ist korrekt mit dem x+=dx.
Lol mein dJx ist sogar auch korrekt. Huch, was habe ich denn hier gemacht?😂
Jetzt muss ich nur noch mein Jx herausfinden mit dem Aufsummieren, aber das probiere ich gerade aus.
Anhänge
Zuletzt bearbeitet: