angewandt werden..
Der Ablauf folgt Abbildung
mit folgenden Verrechnungsaktionen:
rechts.
Wert von Spektrum
links.
Wert von Spektrum
.
Speziell bei der Addition kommt es hier an den Grenzen der beiden Spektren zum Bruch der Stetigkeit. Das ist der Fall wenn
Auch hier kommt es an den Grenzen der beiden Spektren zum Bruch der Stetigkeit wenn
Auch hier kommt es an den Grenzen der beiden Spektren zum Bruch der Stetigkeit wenn
links.
Speziell bei der Addition kommt es hier zum Bruch der Stetigkeit weil
rechts.
Speziell bei der Addition kommt es hier zum Bruch der Stetigkeit weil
Gehen wir davon aus, dass uns die Spektralwerte als Stützstellen in bereits sortierten Listen vorliegen.
Zwei durchzumultiplizierende Spektren werden mit zwei Variablen und
durchlaufen.
Abbildung
zeigt den prinzipiellen Ablauf und die Probleme beim Addieren:
1
2 function durchhangelnadd(spek1, spek2){
3 var s=0,i=0,j=0, arr=[];
4 while (i < spek1.length-1 && j< spek2.length-1) {
5 if(spek1[i]["x"]>=spek2[j+1]["x"]){
6 arr.push({info: `Heranrücken j++ auf : i=${i}->(${spek1[i]["x"]},${spek1[i]["y"]}) und j=${j}->(${spek2[j]["x"]},${spek2[j]["y"]})`,x:spek2[j]["x"], y: spek2[j]["y"]});
7 j++;
8 continue;};
9 if(i == 0 && spek1[0]["x"]>spek2[j]["x"] && spek1[0]["x"]<spek2[j+1]["x"]){
10 }
11 if(spek2[j]["x"]>=spek1[i+1]["x"]){
12 arr.push({info: `Heranrücken i++ auf : i=${i}->(${spek1[i]["x"]},${spek1[i]["y"]}) und j=${j}->(${spek2[j]["x"]},${spek2[j]["y"]})`,x:spek1[i]["x"], y: spek1[i]["y"]});
13 i++;
14 continue;};
15 if(spek1[i]["x"]==spek2[j]["x"]){
16 arr.push({x:spek1[i]["x"], y: spek1[i]["y"]+spek2[j]["y"]});
17 };
18 if(spek1[i]["x"]< spek2[j]["x"]){
19 arr.push({x:spek2[j]["x"], y: spek1[i]["y"]+spek2[j]["y"] + (spek1[i+1]["y"]- spek1[i]["y"]) / (spek1[i+1]["x"] - spek1[i]["x"]) * (spek2[j]["x"] - spek1[i]["x"]) });
20 };
21 if(spek1[i]["x"]> spek2[j]["x"]){
22 arr.push({x:spek1[i]["x"], y: spek1[i]["y"]+spek2[j]["y"] + + (spek2[j+1]["y"]- spek2[j]["y"]) / (spek2[j+1]["x"] - spek2[j]["x"]) * (spek1[i]["x"] - spek2[j]["x"]) });
23 };
24 if(spek1[i+1]["x"]==spek2[j+1]["x"]){i++; j++; continue;};
25 if(spek1[i+1]["x"]<spek2[j+1]["x"]){i++; continue;};
26 if(spek1[i+1]["x"]>spek2[j+1]["x"]){j++; continue;};
27 }
28 /*************Letztes Element************/
29 if(i==spek1.length-1){
30 arr.push({x:spek1[i]["x"], y: (spek2[j-1]["y"] + (spek2[j]["y"]- spek2[j-1]["y"]) / (spek2[j]["x"] - spek2[j-1]["x"]) * (spek1[i]["x"] - spek2[j-1]["x"])) + spek1[i]["y"] });
31 j++;
32 while (j < spek2.length) {
33 arr.push({x:spek2[j]["x"], y: spek2[j]["y"]});
34 j++;
35 }
36
37 }
38 if(j==spek2.length-1){
39 arr.push({x:spek2[j]["x"], y: (spek1[i]["y"] + (spek1[i+1]["y"]- spek1[i]["y"]) / (spek1[i+1]["x"] - spek1[i]["x"]) * (spek2[j]["x"] - spek1[i]["x"])) + spek2[j]["y"] });
40 i++;
41 while (i < spek1.length) {
42 arr.push({x:spek1[i]["x"], y: spek1[i]["y"]});
43 i++;
44 }
45 }
46 return arr;
47 }
|