Näherungsgleichung

Aus Wiki1

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „{{SUBST::Verbrennungsrechnung Gase}}“)
 
(Der Versionsvergleich bezieht 19 dazwischenliegende Versionen mit ein.)
Zeile 1: Zeile 1:
-
 
Mit Hilfe des Programmpakets JSXGraph (siehe http://jsxgraph.uni-bayreuth.de/wp/) können komplexe, interaktive Grafiken nur mit Hilfe von JavaScript in Webseiten integriert werden.
Mit Hilfe des Programmpakets JSXGraph (siehe http://jsxgraph.uni-bayreuth.de/wp/) können komplexe, interaktive Grafiken nur mit Hilfe von JavaScript in Webseiten integriert werden.
-
Damit lassen sich auch ingenieurtechnische Fragen in "smarten" Apps realisieren. Das folgende Beispiel erlaubt die Berechnung von verbrennungstechnischen Kennwerten abhängig von Gaszusammensetzung und Luftüberschuss.
+
Damit lassen sich auch ingenieurtechnische Fragen in "smarten" Apps realisieren.  
-
Die Gaszusammensetzung wird über Schieberegler eingestellt. Das Diagramm zeigt den Luftbedarf über das Luftverhältnis (Lambda). Lambda kann durch Verschieben des Messpunktes verändert werden.
+
Das folgende Beispiel dient der Ermittlung einer Näherungsgleichung für 5 gegebene Punkte. Die Punkte können mit der Maus verschoben werden. Mit dem Schieberegler kann der Grad des Näherungs-Polynoms verändert werden. Um das Diagramm universell einsetzen zu können, sind die Achsen normiert (-1/+1). (Näherungspolynom Polynome Interpolation Näherungsfunktion)
-
Die Gaszusammensetzung wird als Vol.% angegeben. Die Werte werden so angepasst, dass unabhängig von den Einstellungen der Schieberegler die Summe immer 100% ergibt.
+
<jsxgraph box="jxgbox"  width="700" height="500">
 +
//Eingabe
 +
var p1xy=[0.5,0.5];
 +
var p2xy=[0,0];
 +
var p3xy=[-0.5,-0.5];
 +
var p4xy=[-0.6,-0.6];
 +
var p5xy=[-0.7,-0.7];
-
Die voreingestellte Zusammensetzung entspricht üblichem Erdgas (trocken)
+
brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-1.1, 1.1, 1.1, -1.1], grid: true, axis:true});
 +
//Punkte
 +
var p1 = brd.createElement('point',p1xy,{name:'A', style:5});
 +
var p2 = brd.createElement('point',p2xy,{name:'B', style:5});
 +
var p3 = brd.createElement('point',p3xy,{name:'C', style:5});
 +
var p4 = brd.createElement('point',p4xy,{name:'D', style:5});
 +
var p5 = brd.createElement('point',p5xy,{name:'E', style:5});
 +
data = [];
 +
datax = [];
 +
datax[0] = function(){ return p1.X();};
 +
datax[1] = function(){ return p2.X();};
 +
datax[2] = function(){ return p3.X();};
 +
datax[3] = function(){ return p4.X();};
 +
datax[4] = function(){ return p5.X();};
 +
data[0]= function(){ return p1.Y();};
 +
data[1]= function(){ return p2.Y();};
 +
data[2]= function(){ return p3.Y();};
 +
data[3]= function(){ return p4.Y();};
 +
data[4]= function(){ return p5.Y();};
-
<jsxgraph width="700" height="500">
+
s = 1;    
-
brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-10, 100, 60, -100], unitX:5, unitY:5, grid: false, axis:true});
+
deg = brd.createElement('slider',[[0.10,-0.3],[0.4,-0.3],[1,2,4]],{name:'Polynomgrad',snapWidth:1});
-
CO=0;
+
 
-
CH4=90;
+
curve = brd.createElement('curve',[datax,data],{strokeColor:'gray',dash:2});    
-
C2H2=0;
+
curve.updateDataArray = function() {
-
C2H4=2;
+
    var i, len = data.length;
-
H2=0;
+
    for(i=0;i<len;i++) { this.dataY[i] = data[i]; }
-
N2=7;
+
-
O2=0;
+
-
CO2=1;
+
-
H2S=0;
+
-
 
+
-
 
+
-
var x;
+
-
var y;
+
-
var cov = brd.createElement('slider',[[20,-10],[40,-10],[0,CO,100]],{name:'CO', snapWidth:0.1});
+
-
var c1v = brd.createElement('slider',[[20,-20],[40,-20],[0,CH4,100]],{name:'CH4',snapWidth:0.1});
+
-
var c2v = brd.createElement('slider',[[20,-30],[40,-30],[0,C2H2,100]],{name:'C2H2',snapWidth:0.1});
+
-
var c3v = brd.createElement('slider',[[20,-40],[40,-40],[0,C2H4,100]],{name:'C2H4',snapWidth:0.1});
+
-
var hv = brd.createElement('slider',[[20,-50],[40,-50],[0,H2,100]],{name:'H2', snapWidth:0.1});
+
-
var nv = brd.createElement('slider',[[20,-60],[40,-60],[0,N2,100]],{name:'N2', snapWidth:0.1});
+
-
var ov = brd.createElement('slider',[[20,-70],[40,-70],[0,O2,100]],{name:'O2', snapWidth:0.1});
+
-
var co2v = brd.createElement('slider',[[20,-80],[40,-80],[0,CO2,100]],{name:'CO2', snapWidth:0.1});
+
-
var sv = brd.createElement('slider',[[20,-90],[40,-90],[0,H2S,100]],{name:'H2S', snapWidth:0.1});
+
-
 
+
-
 
+
-
function m0(x){
+
-
return m_0 =x/(cov.Value()+c1v.Value()+c2v.Value()+c3v.Value()+hv.Value()+sv.Value()+nv.Value()+ov.Value()+co2v.Value());
+
}
}
 +
regressionPolynomial = JXG.Math.Numerics.regressionPolynomial(deg,datax,curve.dataY); 
 +
// generateFunction();
-
function Lmin(){
+
reg = brd.createElement('functiongraph',[regressionPolynomial],{strokeColor:'black'});    
-
return L_min=1/0.21*((m0(cov.Value())+m0(hv.Value()))/2+2*m0(c1v.Value())+2.5*m0(c2v.Value())+3*m0(c3v.Value())-m0(ov.Value()));
+
   
-
}
+
des1 = brd.createElement('text',[-0.4,0.4,function(){ return "x = -1 bis 1";}],{strokeColor:'black',fontSize:'14px'});  
-
 
+
des2 = brd.createElement('text',[-0.4,0.3,function(){ return "y = -1 bis 1";}],{strokeColor:'black',fontSize:'14px'});  
-
var Kurve= brd.createElement('functiongraph', [function(x){return Lmin()*x/10;},0,60]);
+
</jsxgraph>
-
 
+
<jsxgraph box="jxg2box" width="700" height="200">
-
//Ablesepunkt
+
brd2 = JXG.JSXGraph.initBoard('jxg2box', {boundingbox:[-1.1, 2.1, 2.1, -1.1], grid: false, axis:false, showCopyright:false, showNavigation:false});
-
var g=brd.create('glider',[1.184*10,1,Kurve],{color:'black',name:'Messpunkt'});
+
brd.addChild(brd2);
-
px1=[0,function(){return g.Y();}];
+
H1 = brd2.createElement('text',[-0.8,1.8,"Vorgegebene Punkte"],{strokeColor:'black',fontSize:'14px'});  
-
px2=[function(){return g.X();},function(){return g.Y();}];
+
-
py1=[function(){return g.X();},0];
+
-
py2=[function(){return g.X();},function(){return g.Y();}];
+
-
 
+
-
var l_x=brd.create('line',[px1,px2],{strokeColor:'blue',strokeWidth:1,dash:1});
+
-
var l_Y=brd.create('line',[py1,py2],{strokeColor:'blue',strokeWidth:1,dash:1});
+
-
 
+
-
brd.createElement('text',[50, 10, function(){ return "Lambda*10";}]);
+
-
 
+
-
 
+
-
brd.createElement('text',[5, -10, function(){ return "CO = "+Math.round(m0(cov.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -20, function(){ return "CH4 = "+Math.round(m0(c1v.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -30, function(){ return "C2H2 = "+Math.round(m0(c2v.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -40, function(){ return "C2H4 = "+Math.round(m0(c3v.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -50, function(){ return "H2 = "+Math.round(m0(hv.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -60, function(){ return "N2 = "+Math.round(m0(nv.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -70, function(){ return "O2 = "+Math.round(m0(ov.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -80, function(){ return "CO2 = "+Math.round(m0(co2v.Value())*1000)/1000;}]);
+
-
brd.createElement('text',[5, -90, function(){ return "H2S = "+Math.round(m0(sv.Value())*1000)/1000;}]);
+
-
 
+
-
brd.createElement('text',[5, 90, function(){ return "Hu MJ/Nm³ = "+Math.round((10.78*m0(hv.Value())+12.62*m0(cov.Value())+35.87*m0(c1v.Value())+56.51*m0(c2v.Value())+59.48*m0(c3v.Value()))*1000)/1000+" = "+Math.round((10.78*m0(hv.Value())+12.62*m0(cov.Value())+35.87*m0(c1v.Value())+56.51*m0(c2v.Value())+59.48*m0(c3v.Value()))*1000/3.6)/1000+" kWh/Nm³ ";}]);
+
-
brd.createElement('text',[5, 80, function(){ return "Luft min m³/m³ = "+Math.round((Lmin())*1000)/1000;}]);
+
-
brd.createElement('text',[5, 70, function(){ return "Luft m³/m³ bei Lambda "+Math.round(1000*g.X()/10)/1000+"= "+Math.round((Lmin())*1000*g.X()/10)/1000;}]);
+
-
brd.createElement('text',[5, 60, function(){ return "Abgas feucht m³/m³ bei Lambda "+Math.round(1000*g.X()/10)/1000+"= "+Math.round((Lmin()*g.X()/10+(m0(cov.Value())+m0(hv.Value()))/2+m0(c1v.Value())+m0(c2v.Value())+m0(c3v.Value())+m0(co2v.Value())+m0(sv.Value())-m0(ov.Value()))*1000)/1000;}]);
+
-
brd.createElement('text',[5, 50, function(){ return "Sauerstoffgehalt m³/m³ bei Lambda "+Math.round(1000*g.X()/10)/1000+"= "+Math.round(Lmin()*(g.X()/10-1)*0.21*1000)/1000;}]);
+
-
brd.createElement('text',[5, 40, function(){ return "Sauerstoffgehalt Vol% bei Lambda "+Math.round(1000*g.X()/10)/1000+"= "+Math.round(Lmin()*(g.X()/10-1)*0.21/((Lmin()*g.X()/10+(m0(cov.Value())+m0(hv.Value()))/2+m0(c1v.Value())+m0(c2v.Value())+m0(c3v.Value())+m0(co2v.Value())+m0(sv.Value())-m0(ov.Value())))*1000)/1000;}]);
+
 +
xA = brd2.createElement('text',[-0.8,1.4,function(){ return "Ax = " + Math.round(10000*p1.X())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
xB = brd2.createElement('text',[-0.8,1.2,function(){ return "Bx = " + Math.round(10000*p2.X())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
xC = brd2.createElement('text',[-0.8,1.0,function(){ return "Cx = " + Math.round(10000*p3.X())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
xD = brd2.createElement('text',[-0.8,0.8,function(){ return "Dx = " + Math.round(10000*p4.X())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
xE = brd2.createElement('text',[-0.8,0.6,function(){ return "Ex = " + Math.round(10000*p5.X())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
yA = brd2.createElement('text',[-0.1,1.4,function(){ return "Ay = " + Math.round(10000*p1.Y())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
yB = brd2.createElement('text',[-0.1,1.2,function(){ return "By = " + Math.round(10000*p2.Y())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
yC = brd2.createElement('text',[-0.1,1.0,function(){ return "Cy = " + Math.round(10000*p3.Y())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
yD = brd2.createElement('text',[-0.1,0.8,function(){ return "Dy = " + Math.round(10000*p4.Y())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
yE = brd2.createElement('text',[-0.1,0.6,function(){ return "Ey = " + Math.round(10000*p5.Y())/10000;}],{strokeColor:'black',fontSize:'14px'});
 +
H2 = brd2.createElement('text',[-0.8,-0.4,"Näherungsgleichung"],{strokeColor:'black',fontSize:'14px'});
 +
t = brd2.createElement('text',[-0.8,-0.8,function(){ return "Polynom f(x) = " + regressionPolynomial.getTerm();}],{strokeColor:'black',fontSize:'14px'});
</jsxgraph>
</jsxgraph>
-
=Quelle=
 
-
 
-
Berechnung nach vereinfachten Gleichungen aus "Thermische Apparate und Dampferzeuger", Walter Wagner, Vogel-Buchverlag Würzburg, 1. Auflg. 1985
 
[[Kategorie:Technik]]
[[Kategorie:Technik]]

Aktuelle Version vom 10:08, 20. Feb. 2017

Mit Hilfe des Programmpakets JSXGraph (siehe http://jsxgraph.uni-bayreuth.de/wp/) können komplexe, interaktive Grafiken nur mit Hilfe von JavaScript in Webseiten integriert werden.

Damit lassen sich auch ingenieurtechnische Fragen in "smarten" Apps realisieren.

Das folgende Beispiel dient der Ermittlung einer Näherungsgleichung für 5 gegebene Punkte. Die Punkte können mit der Maus verschoben werden. Mit dem Schieberegler kann der Grad des Näherungs-Polynoms verändert werden. Um das Diagramm universell einsetzen zu können, sind die Achsen normiert (-1/+1). (Näherungspolynom Polynome Interpolation Näherungsfunktion)

Persönliche Werkzeuge