Variablenberechnung mit dem PC < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:46 So 17.04.2005 | Autor: | ChemMan |
Hallöchen miteinander.
Ich bin Chemiker und möchte für Spektrenanalysen Formeln, ähnlich der hier stark vereinfachten Variante, mit dem PC berechnen lassen. Ich habe es mit Excel, Octave, Mupad und Yacas mal selber versucht, komme aber auf keinen grünen Zweig damit. Vielleicht kann mir einer ja helfen. Also die Formel lautet z.B.:
x*10 + y*25 + z*30 = 85
Dann soll mir der PC alle möglichen Ergebnisse für x, y, z (nur natürliche Zahlen mit 0) ausgeben.
Also ungefähr so:
x=0, y=1, z=2
x=3, y=1, z=1
x=6, y=1, z=0
Merci schon mal
ChemMan
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:35 So 17.04.2005 | Autor: | Max |
Hallo Chemman,
kannst du nicht einfach mit Fallunterscheidungen arbeiten, so viele Möglichkeiten gibt es ja nicht (wenn die Exponenten tatsächlich so hoch sind).
Da [mm] $^2^{30}>2^{25}>2^{10}>85$ [/mm] können $x$, $y$ und $z$ ja nur die Werte $0$ oder $1$ haben. Allerdings denke ich wird man in diesem Fall nicht viele Lösungen erhalten, weil du so nur in der Summe auf $3$ kommst.
Evtl. zeigst du uns mal ein echtes Beispiel.
Nun gut, nachdem ich darauf aufmerksam gemacht wurde, dass ich nicht lesen kann - was bedingt stimmt - muss man das wohl anders angehen.
Wenn mir jetzt noch was einfällt melde ich mich wieder
Gruß Max
|
|
|
|
|
Hallo,
am einfacsten ist es bei dieser überschaubaren Anzahl von Möglichkeiten, alle auszuprobieren. In Yacas z.B.:
1: | ForEach(x,0 .. 85/10) ForEach(y,0 .. 85/25) ForEach(z,0 .. 85/30) If(10*x+25*y+30*z=85,Echo({x,y,z}))
| ergibt:
0 1 2
1 3 0
3 1 1
6 1 0
In MuPAD z.B.:
1: | natsum:=proc(fx,fy,fz,su)
| 2: | local x,y,z,r;
| 3: | begin
| 4: | r:=[];
| 5: | for x from 0 to su/fx step 1 do
| 6: | for y from 0 to su/fy step 1 do
| 7: | for z from 0 to su/fz step 1 do
| 8: | if fx*x+fy*y+fz*z=su then r:=r.[[x,y,z]] end_if
| 9: | end_for end_for end_for;
| 10: | r
| 11: | end_proc:
| 12: | natsum(10,25,30,85)
| 13: | -> [[0, 1, 2], [1, 3, 0], [3, 1, 1], [6, 1, 0]] |
Alles Gute,
Peter
|
|
|
|