Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

formel mit excel und vb





Frage

Hi Leute! Ich brauch mal dringend eure hilfe! mein vb ist ein bisschen eingerostet und ich weiss nicht so ganz genau wie ich mein problem lösen soll. folgendes: möchte ich einer excel-tabelle 5 werte (v (geschwindigkeit), g(erdbeschleunigung), i(gefälle in pro/mille), d(durchmesser) und k(rauheit)) eingeben und der soll mir dann in einem 6. feld das ergebnis für folgende gleichung übermitteln: v = -2 * sqr(2 * g * i * d) + log((1 / 3,71 * d))*((9,31 * v) / sqr(2 * g * i *d) + k)) die besonderheit an der sache ist, dass v die gesuchte variable ist und in der formel selber vorkommt ... das heisst ich möchte eine iterative gleichung lösen. wer es genauer wissen will: es geht um rohrhydraulik und ich möchte iterativ die gleichung von prandtl und colebrook nach v ausrechnen. da die gleichung iterativ ist muss ich v trotzdem einen anfangswert zuweisen und sich schrittweise annähern lassen bis v - (ich nenne es mal v1) v1 < als 0.001! das ist meine austrittsbedingung. ich dachte da ungefähr an folgende syntax, weiß aber nicht wie ich das in excel mit vb hinbekomme ... ausserdem weiß ich, dass ich die schleifen sicher mit fehlern habe ... da sind vielleicht mal die mathegenies gefragt!: [quote] sub iteration do v = -2 * sqr(2 * g * i * d) + log((1 / 3,71 * d))*((9,31 * v1) / sqr(2 * g * i *d) + k)) diff=abs(v1-v) if v < v1 then v1 = v + diff/2 else v1 = v - diff/2 while diff <=0.001 end sub [/quote] fakt ist, dass die formel, falls der anfangswert für v1 zu groß für das richtige v ist einen kleineren wert als v1 ausrechnen wird. sollte v1 zu klein sein kommt ein größerer wert als das wahre v heraus. jenachdem muss man also vi solange vergrößern oder verkleinern bis v ~ v1 ist! für leute, denen das zu hoch ist: vielleicht könnt ihr mir verraten, wie ich excel dazu bewege sich die werte für die sub aus der exceltabelle herauszulesen. damit wäre ich auch schonmal einen schritt weiter. hoffe ihr könnt mir helfen und schonmal n großes thx an alle, die sich den kopf zerbrechen! gruß Iowa

Antwort 1 von Iowa

ok ... die übergabe hab ich hinbekommen ...
jetzt fehlt nur noch die richtige schleife und die austrittsbedingung ... wer kann helfen?

Function v(g, i, k, d, v1)
v = -2 * Sqr(2 * g * i * d) + Log((1 / (3.71 * d)) * ((9.31 * v1) / Sqr(2 * g * i * d) + k))
End Function
Sub ausgabe()
g = Range("B7").Value
i = Range("C3").Value
k = Range("D3").Value
d = Range("B3").Value
v1 = Range("E3").Value
ergebnis = v(g, i, k, d, v1)
Range("A5").Activate
ActiveCell.Value = ergebnis
End Sub

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: