Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.sci.electronics > #243216 > unrolled thread

Elektronischer Widerstand Linear?

Started byScherer Ralf <RS.2007@gmx.de>
First post2018-04-24 20:35 +0200
Last post2018-05-24 20:28 +0200
Articles 20 on this page of 77 — 22 participants

Back to article view | Back to de.sci.electronics


Contents

  Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-04-24 20:35 +0200
    Re: Elektronischer Widerstand Linear? Rafael Deliano <rafael_deliano@arcor.de> - 2018-04-24 20:46 +0200
      Re: Elektronischer Widerstand Linear? Rafael Deliano <rafael_deliano@arcor.de> - 2018-04-25 06:00 +0200
        Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-04-26 20:56 +0200
          Re: Elektronischer Widerstand Linear? Rafael Deliano <rafael_deliano@arcor.de> - 2018-04-27 06:39 +0200
            Re: Elektronischer Widerstand Linear? Heiko Lechner <no.spam.to.me@arcor.de> - 2018-04-27 10:19 +0200
    Re: Elektronischer Widerstand Linear? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2018-04-24 23:11 +0200
    Re: Elektronischer Widerstand Linear? Markus Faust <mfaust@htwm.de> - 2018-04-24 21:19 +0000
      Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-04-26 22:54 +0200
        Re: Elektronischer Widerstand Linear? Bernd Laengerich <Bernd.Laengerich@web.de> - 2018-04-27 10:28 +0200
    Re: Elektronischer Widerstand Linear? Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2018-04-25 08:09 +0200
    Re: Elektronischer Widerstand Linear? Falk Dµebbert <falk@duebbert.com> - 2018-04-26 11:48 +0200
      Re: Elektronischer Widerstand Linear? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2018-04-26 12:39 +0200
      Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-04-26 21:27 +0200
        Re: Elektronischer Widerstand Linear? Gerrit Heitsch <gerrit@laosinh.s.bawue.de> - 2018-04-26 21:32 +0200
        Re: Elektronischer Widerstand Linear? Olaf Schultz <o.schultz@enhydralutris.de> - 2018-04-26 21:39 +0200
        Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-04-28 15:56 +0200
          Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-04-28 19:59 +0200
          Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-05-01 18:24 +0200
            Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-01 19:52 +0200
              Re: Elektronischer Widerstand Linear? Axel Berger <Spam@Berger-Odenthal.De> - 2018-05-01 20:18 +0200
                Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-02 08:08 +0200
                  Re: Elektronischer Widerstand Linear? Axel Berger <Spam@Berger-Odenthal.De> - 2018-05-02 15:09 +0200
                    Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-02 15:55 +0200
                      Re: Elektronischer Widerstand Linear? Axel Berger <Spam@Berger-Odenthal.De> - 2018-05-02 17:35 +0200
                        Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-03 09:03 +0200
                          Re: Elektronischer Widerstand Linear? Holger Schieferdecker <spamless@gmx.de> - 2018-05-03 09:35 +0200
                            Re: Elektronischer Widerstand Linear? Andreas Neumann <an5275@sedo.com> - 2018-05-03 16:34 +0200
                            Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-03 18:52 +0200
                              Re: Elektronischer Widerstand Linear? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2018-05-04 10:47 +0200
                                Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-04 11:15 +0200
                                  Re: Elektronischer Widerstand Linear? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2018-05-04 14:30 +0200
                                    Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-04 16:12 +0200
                              Re: Elektronischer Widerstand Linear? Holger Schieferdecker <spamless@gmx.de> - 2018-05-04 15:08 +0200
                                Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-04 15:39 +0200
                                  Re: Elektronischer Widerstand Linear? Holger Schieferdecker <spamless@gmx.de> - 2018-05-04 16:27 +0200
                                    Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-04 17:13 +0200
                                  Re: Elektronischer Widerstand Linear? Axel Berger <Spam@Berger-Odenthal.De> - 2018-05-04 16:43 +0200
                              Re: Elektronischer Widerstand Linear? Holger Schieferdecker <spamless@gmx.de> - 2018-05-04 17:37 +0200
                                Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-07 08:09 +0200
                  Re: Elektronischer Widerstand Linear? Wolfgang Martens <na3506b2013@t-online.de> - 2018-05-03 00:55 +0200
      Re: Elektronischer Widerstand Linear? Rafael Deliano <rafael_deliano@arcor.de> - 2018-04-27 10:20 +0200
        Re: Elektronischer Widerstand Linear? Matthias Weingart <mwnews@pentax.boerde.de> - 2018-04-27 12:50 +0000
          Re: Elektronischer Widerstand Linear? Klaus Butzmann <kb.usenet@butzomail.de> - 2018-04-27 15:04 +0200
            Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-04-27 23:31 +0200
              Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-28 00:46 +0200
              Re: Elektronischer Widerstand Linear? Klaus Butzmann <kb.usenet@butzomail.de> - 2018-04-28 10:20 +0200
                Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-04-28 19:02 +0200
                  Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-28 19:52 +0200
                    Re: Elektronischer Widerstand Linear? Andreas Fecht <forum@aftec.de> - 2018-04-28 21:15 +0200
                      Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-28 21:36 +0200
                        Re: Elektronischer Widerstand Linear? Andreas Fecht <forum@aftec.de> - 2018-04-28 22:11 +0200
                          Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-28 22:46 +0200
                        Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-05-01 15:33 +0200
                    Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-04-28 22:57 +0200
                      Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-28 23:09 +0200
                        Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-04-29 10:11 +0200
                          Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-29 10:16 +0200
                        Re: Elektronischer Widerstand Linear? Andreas Fecht <forum@aftec.de> - 2018-04-29 11:00 +0200
                          Re: Elektronischer Widerstand Linear? Dieter Wiedmann <dieter.wiedmann@t-online.de> - 2018-04-29 11:06 +0200
                          Re: Elektronischer Widerstand Linear? Newdo <Newdo@ifmd.de> - 2018-04-29 11:58 +0200
                            Re: Elektronischer Widerstand Linear? Andreas Fecht <forum@aftec.de> - 2018-04-29 12:34 +0200
                          Re: Elektronischer Widerstand Linear? Newdo <Newdo@ifmd.de> - 2018-04-29 13:08 +0200
                            Re: Elektronischer Widerstand Linear? "horst.d.winzler" <horst.d.winzler@web.de> - 2018-04-29 13:35 +0200
                          Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-05-01 15:34 +0200
                            Re: Elektronischer Widerstand Linear? Andreas Fecht <forum@aftec.de> - 2018-05-01 18:58 +0200
                    Re: Elektronischer Widerstand Linear? Klaus Butzmann <kb.usenet@butzomail.de> - 2018-04-29 00:04 +0200
                  Re: Elektronischer Widerstand Linear? Klaus Butzmann <kb.usenet@butzomail.de> - 2018-04-29 00:03 +0200
                    Re: Elektronischer Widerstand Linear? Rolf Bombach <rolfnospambombach@invalid.invalid> - 2018-05-01 15:40 +0200
        Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-05-01 19:12 +0200
      Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-05-01 18:49 +0200
    Re: Elektronischer Widerstand Linear? Matthias Weingart <mwnews@pentax.boerde.de> - 2018-04-26 09:56 +0000
      Re: Elektronischer Widerstand Linear? Rafael Deliano <rafael_deliano@arcor.de> - 2018-04-26 18:24 +0200
        Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-04-26 21:47 +0200
          Re: Elektronischer Widerstand Linear? Rafael Deliano <rafael_deliano@arcor.de> - 2018-04-27 08:05 +0200
    Re: Elektronischer Widerstand Linear? Scherer Ralf <RS.2007@gmx.de> - 2018-05-24 18:44 +0200
      Re: Elektronischer Widerstand Linear? Edzard Egberts <news@edzeg.net> - 2018-05-24 20:28 +0200

Page 2 of 4 — ← Prev page 1 [2] 3 4  Next page →


#243390

FromAxel Berger <Spam@Berger-Odenthal.De>
Date2018-05-01 20:18 +0200
Message-ID<5AE8AF5A.43CDABAC@Berger-Odenthal.De>
In reply to#243386
Edzard Egberts wrote:
> Na ja, im Moment ist offensichtlich, dass das deutlich länger als
> drei Tage dauern würde.

Ehrlich gesagt verstehe ich das Problem nicht. Im umgekehrten Fall bei
der Reihenschaltung sind es Zweierpotenzen mit einer trivialen Lösung.
Nehmen wir gedanklich eine feste Spannung an, dann sind es jetzt Ströme,
die addiert werden und wieder ergibt sich die Reihe der Zweierpotenzen.
Natürlich ist es jetzt nicht R sondern 1/R, das in gleichen Schritten
approximiert wird. Dagegen gibt es imho prinzipiell kein Mittel, eine
einheitliche Stufengröße über den Gesamtbereich ist unmöglich.

Die Lösung dafür ist aber trivial: Du nimmst den Kehrwert Deines
gesuchten Widerstandes und drückst den als nächst-beste Zweierpotenz
aus. Fertig ist die nötige Schalterstellung.

-- 
/¯\   No  |    Dipl.-Ing. F. Axel Berger    Tel: +49/ 221/ 7771 8067
\ /  HTML |    Roald-Amundsen-Straße 2a     Fax: +49/ 221/ 7771 8069
 X    in  |    D-50829 Köln-Ossendorf      http://berger-odenthal.de
/ \  Mail | -- No unannounced, large, binary attachments, please! --

[toc] | [prev] | [next] | [standalone]


#243409

FromEdzard Egberts <news@edzeg.net>
Date2018-05-02 08:08 +0200
Message-ID<pcbkln$ngc$1@news2.open-news-network.org>
In reply to#243390
Axel Berger wrote:
> Edzard Egberts wrote:
>> Na ja, im Moment ist offensichtlich, dass das deutlich länger als
>> drei Tage dauern würde.
> 
> Ehrlich gesagt verstehe ich das Problem nicht. Im umgekehrten Fall bei
> der Reihenschaltung sind es Zweierpotenzen mit einer trivialen Lösung.
> Nehmen wir gedanklich eine feste Spannung an, dann sind es jetzt Ströme,
> die addiert werden

Weder/noch, es geht rein um Widerstände. Noch einmal die 
Aufgabenstellung: Gegeben sind 16 Schalter in Parallelschaltung und alle 
Widerstände der E12-Reihe. Welche Kombination von Widerständen ergibt im 
Bereich von 80R bis 100k einen möglichst dichten und linearen Verlauf 
von einstellbaren Widerstandswerten.

Ich blicke da nicht, welche Widerstandskombination wohl die Beste wäre 
und bin gerade einmal auf ein Ausschlusskriterium gekommen - alle 
Widerstände parallel geschaltet müssen 80R oder kleiner ergeben.

> Die Lösung dafür ist aber trivial: Du nimmst den Kehrwert Deines
> gesuchten Widerstandes und drückst den als nächst-beste Zweierpotenz
> aus. Fertig ist die nötige Schalterstellung.

Das ist sicherlich ein anderes Problem, ich suche ja keine 
Schalterstellung, sondern eine Widerstandskombination.

[toc] | [prev] | [next] | [standalone]


#243417

FromAxel Berger <Spam@Berger-Odenthal.De>
Date2018-05-02 15:09 +0200
Message-ID<5AE9B897.C261FFA2@Berger-Odenthal.De>
In reply to#243409
Edzard Egberts wrote:
> ich suche ja keine
> Schalterstellung, sondern eine Widerstandskombination.

Das ist dasselbe. Und besser als die Standardlösuhg mit Zweierpotenzen
kannst Du bei Schaltern nicht werden.

-- 
/¯\   No  |    Dipl.-Ing. F. Axel Berger    Tel: +49/ 221/ 7771 8067
\ /  HTML |    Roald-Amundsen-Straße 2a     Fax: +49/ 221/ 7771 8069
 X    in  |    D-50829 Köln-Ossendorf      http://berger-odenthal.de
/ \  Mail | -- No unannounced, large, binary attachments, please! --

[toc] | [prev] | [next] | [standalone]


#243420

FromEdzard Egberts <news@edzeg.net>
Date2018-05-02 15:55 +0200
Message-ID<pccg17$vr1$1@news2.open-news-network.org>
In reply to#243417
Axel Berger wrote:
> Edzard Egberts wrote:
>> ich suche ja keine
>> Schalterstellung, sondern eine Widerstandskombination.
> 
> Das ist dasselbe. Und besser als die Standardlösuhg mit Zweierpotenzen
> kannst Du bei Schaltern nicht werden.

Okay, bevor wir hier noch lange diskutieren, gib' mir doch bitte einfach 
die 16 Widerstandswerte an, die zur Lösung des Problems benötigt werden.

Einfacher als mit der Lösung kannst Du mir nicht beweisen, dass ich die 
einfache und offensichtliche Lösung nicht sehe. Eine Begründung, warum 
das dann auch wirklich die beste Gruppierung von Widerständen ist, wäre 
noch toll.

[toc] | [prev] | [next] | [standalone]


#243430

FromAxel Berger <Spam@Berger-Odenthal.De>
Date2018-05-02 17:35 +0200
Message-ID<5AE9DABB.A386C49D@Berger-Odenthal.De>
In reply to#243420
Edzard Egberts wrote:
> gib' mir doch bitte einfach
> die 16 Widerstandswerte an, die zur Lösung des Problems benötigt werden.

Gut. Deine Vorgabe war, wenn ich mich richtig erinnere, 80 Ohm als
kleinstmöglicher Widertand, gleich alles an, alles parallel.

Du beginnst mit 160 Ohm und verdoppelst. also 320, 640 usw. bis Deine
maximale Anzahl erreicht wird. Damit hast Du eine lineare Stufung des
Leitwertes, des Kehrwertes des Widerstandes, in den kleinstmöglichen
gleichen Schritten. Da die Parallelschaltung nun einmal Leitwerte und
nicht Widerstände addiert, kannst Du besser nicht werden.

Versuchen kannst Du es aber. Wenn Du Widerstände der Art 1, 2, 3, max,
also linear aufsteigend willst, dann sind das Leitwerte 1, 1/2, 1/3,
usw. Du kannst jetzt versuchen die Glieder dieser Folge jeweils als
Summe einer endlichen Zahl möglicher Summanden darzustellen. Vielleicht
gibt es doch eine bessere Lösung. Wenn ja findest Du sie aber am ehesten
beim Denken in Leitwerten.

-- 
/¯\   No  |    Dipl.-Ing. F. Axel Berger    Tel: +49/ 221/ 7771 8067
\ /  HTML |    Roald-Amundsen-Straße 2a     Fax: +49/ 221/ 7771 8069
 X    in  |    D-50829 Köln-Ossendorf      http://berger-odenthal.de
/ \  Mail | -- No unannounced, large, binary attachments, please! --

[toc] | [prev] | [next] | [standalone]


#243456

FromEdzard Egberts <news@edzeg.net>
Date2018-05-03 09:03 +0200
Message-ID<pcec8r$pc3$1@news2.open-news-network.org>
In reply to#243430
Axel Berger wrote:
> Edzard Egberts wrote:
>> gib' mir doch bitte einfach
>> die 16 Widerstandswerte an, die zur Lösung des Problems benötigt werden.
> 
> Gut. Deine Vorgabe war, wenn ich mich richtig erinnere, 80 Ohm als
> kleinstmöglicher Widertand, gleich alles an, alles parallel.
> 
> Du beginnst mit 160 Ohm und verdoppelst. also 320, 640 usw. bis Deine
> maximale Anzahl erreicht wird. Damit hast Du eine lineare Stufung des
> Leitwertes, des Kehrwertes des Widerstandes, in den kleinstmöglichen
> gleichen Schritten. Da die Parallelschaltung nun einmal Leitwerte und
> nicht Widerstände addiert, kannst Du besser nicht werden.

Das funktioniert und sieht recht gut aus. Da wird sich der Ralf freuen, 
man muss nur noch die nächsten passenden Widerstände aus der R12-Reihe 
einsetzen. Das mit der Unterteilung ist mir jetzt so halbwegs klar, im 
Detail muss ich aber noch einmal drüber meditieren. ;o)

/*
  * main.cpp
  *
  *  Created on: 03.05.2018
  *      Author: ed
  */

#include <set>
#include <string>
	using std::string;
#include <iostream>
	using std::cout;
	using std::endl;
#include <math.h>

struct s_result
{
	int R;
	string Switch;

	s_result(int r= 0, string S= ""): R(r), Switch(S) {}

	int operator < (const s_result& SR) const { return R < SR.R; }
};

typedef std::set< s_result > td_set_result;

int main()
{
	double DSE_Reihe[]= {
			160, 320, 640, 1280, 2560, 5120, 10240, 20480, 40960, 81920,
			163840, 327680, 655360, 1310720, 2621440, 5242880
	};
	td_set_result Current_R;	// Set für aktuelle Ergebnisse
	int N_Schalter= 16;
	int R_Min= 80, R_Max= 100000;
	for (int s= 0; s < pow(2, N_Schalter); ++s)
	{	// Zähler für alle Schalterkombinationen von 0 bis 0xFFFF
		//	R= 1/(1/R1 + 1/R2 + 1/R3 ... + 1/Rn)
		string Switches;
		double Leitwert= 0;
		int Bit= 1;
		for (int Pos= 0; Pos < N_Schalter; ++Pos)
		{	// Für alle Schalter von 0..N_Schalter
			if (s & Bit)
			{	// Wenn der Schalter geschlossen ist (1) Leitwert des aktuellen 
Widerstands aufaddieren
				Leitwert+= 1.0/DSE_Reihe[Pos];
				Switches+= '1';
			}
			else Switches+= '0';
			Bit <<= 1;	// Nächstes Bit prüfen
		}
		if (Leitwert)
		{
			double R= 1/Leitwert;	// Aus aufsummierten Leitwert abschließend 
Widerstand bestimmen
			if (R >= R_Min && R <= R_Max) Current_R.insert(s_result(R +0.5, 
Switches));	// Gültigen Wert in die Linearitätsprüfung
		}
	}
	cout << "Widerstandsverlauf Schritte: " << Current_R.size() << endl;
	for (td_set_result::const_iterator it= Current_R.begin(); it!= 
Current_R.end(); ++it)
		cout << it->R << ' ' << it->Switch << endl;
	return 0;
}

[toc] | [prev] | [next] | [standalone]


#243460

FromHolger Schieferdecker <spamless@gmx.de>
Date2018-05-03 09:35 +0200
Message-ID<pcee4eUm923L1@news.in-ulm.de>
In reply to#243456
Am 03.05.2018 um 09:03 schrieb Edzard Egberts:
> Axel Berger wrote:
>> Edzard Egberts wrote:
>>> gib' mir doch bitte einfach
>>> die 16 Widerstandswerte an, die zur Lösung des Problems benötigt werden.
>>
>> Gut. Deine Vorgabe war, wenn ich mich richtig erinnere, 80 Ohm als
>> kleinstmöglicher Widertand, gleich alles an, alles parallel.
>>
>> Du beginnst mit 160 Ohm und verdoppelst. also 320, 640 usw. bis Deine
>> maximale Anzahl erreicht wird. Damit hast Du eine lineare Stufung des
>> Leitwertes, des Kehrwertes des Widerstandes, in den kleinstmöglichen
>> gleichen Schritten. Da die Parallelschaltung nun einmal Leitwerte und
>> nicht Widerstände addiert, kannst Du besser nicht werden.
>
> Das funktioniert und sieht recht gut aus. Da wird sich der Ralf freuen,
> man muss nur noch die nächsten passenden Widerstände aus der R12-Reihe
> einsetzen. Das mit der Unterteilung ist mir jetzt so halbwegs klar, im
> Detail muss ich aber noch einmal drüber meditieren. ;o)

Naja, wenn die E12-Reihe keine passenden Werte hergibt, dann kann man 
sicher auch 2-3 Widerstände in Reihe dafür nehmen (160 Ohm = 150 Ohm + 
100 Ohm, 680 Ohm = (560+68+12) Ohm, etc.).

Holger

[toc] | [prev] | [next] | [standalone]


#243464

FromAndreas Neumann <an5275@sedo.com>
Date2018-05-03 16:34 +0200
Message-ID<pcf6lm$gt6$1@gioia.aioe.org>
In reply to#243460
Holger Schieferdecker wrote:

> Naja, wenn die E12-Reihe keine passenden Werte hergibt, dann kann man

E24 und/oder E96 nehmen.
Wozu wurde das Zeugs schliesslich erfunden?

[toc] | [prev] | [next] | [standalone]


#243475

FromEdzard Egberts <news@edzeg.net>
Date2018-05-03 18:52 +0200
Message-ID<pcfeo3$aas$1@gwaiyur.mb-net.net>
In reply to#243460
Holger Schieferdecker schrieb:
> Am 03.05.2018 um 09:03 schrieb Edzard Egberts:
>> Das funktioniert und sieht recht gut aus. Da wird sich der Ralf freuen,
>> man muss nur noch die nächsten passenden Widerstände aus der R12-Reihe
>> einsetzen. Das mit der Unterteilung ist mir jetzt so halbwegs klar, im
>> Detail muss ich aber noch einmal drüber meditieren. ;o)
> 
> Naja, wenn die E12-Reihe keine passenden Werte hergibt, dann kann man
> sicher auch 2-3 Widerstände in Reihe dafür nehmen (160 Ohm = 150 Ohm +
> 100 Ohm, 680 Ohm = (560+68+12) Ohm, etc.).

Aber wenn man zufällig ein Brute-Force-Programm hat, für das eine
Laufzeiteinschränkung gesucht wurde, kann man das auch umdengeln und
nach E12-Kombinationen suchen, die eine möglichst geringe Abweichung
haben! :o)

Ich habe also den dummen Fehler im Linearitätstest korrigiert und die
Werte vom Axel getestet: Relativer Linearitätsfehler 0.92 bei 4447
Schritten.

Für die E12-Reihe kam diese Kombination heraus, mit Fehler 0.91 bei 4338
Schritten:

150 270 560 1500 2200 5600 12000 22000 47000 82000 150000 270000 680000
1.5e+06 2.7e+06 4.7e+06

So, das musste ich doch einfach mal herausfinden! ;o)

Die Idee, dauerhaft einen großen Widerstand parallel zu schalten, taugt
übrigens nichts, sondern verschlechtert die Reihe.

Wer selber damit spielen will, noch mal der Code - selbst für die paar
Kombinationen braucht der noch ordentlich Zeit! Diesmal etwas gekürzt
und ohne Dateiausgabe, ggf. also in eine Datei pipen.

/*
 * main.cpp
 *
 *  Created on: 03.05.2018
 *      Author: ed
 */

#include <set>
#include <vector>
#include <limits>
#include <iostream>
	using std::cout;
	using std::endl;
#include <math.h>

typedef std::vector< double > td_vector_double;
typedef std::vector< td_vector_double > td_mat_double;
typedef std::set< int > td_set_int;

void Add(double* pDbl, td_vector_double& VD)
{
	while (*pDbl)
	{
		VD.push_back(*pDbl);
		++pDbl;
	}
}

int main()
{
// Für die Parallelschaltung von 16 Widerständen per Relais soll für den
// Bereich von 80R..100k die Kombination von Widerständen ermittelt werden,
// die die linearste Verteilung von Widerstandswerten ergibt.
//
//	double DSE_Reihe[]= {
//			160, 320, 640, 1280, 2560, 5120, 10240, 20480, 40960, 81920,
//			163840, 327680, 655360, 1310720, 2621440, 5242880
//	};
//
//	double E12_Reihe[]=
//	{
//		1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9,	4.7, 5.6, 6.8, 8.2, 0.0
//	};

	double RF0[]= {	150, 180, 0};		// 160
	double RF1[]= { 270, 330, 0};		// 320
	double RF2[]= { 560, 680, 0};		// 640
	double RF3[]= { 1200, 1500, 0};		// 1280
	double RF4[]= { 2200, 2700, 0};		// 2560
	double RF5[]= { 4700, 5600, 0};		// 5120
	double RF6[]= { 10000, 12000, 0};	// 10240
	double RF7[]= { 18000, 22000, 0};	// 20480
	double RF8[]= { 39000, 47000, 0};	// 40960
	double RF9[]= { 82000, 0};			// 81920
	double RF10[]= { 150000, 180000, 0}; // 163840
	double RF11[]= { 270000, 330000, 0}; // 327680
	double RF12[]= { 560000, 680000, 0}; // 655360
	double RF13[]= { 1200000, 1500000, 0};	// 1310720
	double RF14[]= { 2200000, 2700000, 0};	// 2621440
	double RF15[]= { 4700000, 5600000, 0};	// 2621440

	td_mat_double R_Mat(16);
	Add(&RF0[0], R_Mat[0]);
	Add(&RF1[0], R_Mat[1]);
	Add(&RF2[0], R_Mat[2]);
	Add(&RF3[0], R_Mat[3]);
	Add(&RF4[0], R_Mat[4]);
	Add(&RF5[0], R_Mat[5]);
	Add(&RF6[0], R_Mat[6]);
	Add(&RF7[0], R_Mat[7]);
	Add(&RF8[0], R_Mat[8]);
	Add(&RF9[0], R_Mat[9]);
	Add(&RF10[0], R_Mat[10]);
	Add(&RF11[0], R_Mat[11]);
	Add(&RF12[0], R_Mat[12]);
	Add(&RF13[0], R_Mat[13]);
	Add(&RF14[0], R_Mat[14]);
	Add(&RF15[0], R_Mat[15]);

	double R_Min= 80;
	double R_Max= 100000;
	unsigned N_Schalter= 16;
	std::vector< unsigned > Widerstand(N_Schalter, 0);	// Für jeden
Schalter ein Widerstandszähler
	td_set_int Current_R;	// Set für aktuelle Ergebnisse
	// Zum Durchprobieren aller Widerstandskombinationen wird für jede
Schalterposition
	// ein Index in den R_All-Vektor hochgezählt
	double Best_Match= std::numeric_limits< double >::max();	// Kleinere
Werte sind besser!
	unsigned Best_Steps= 0;
	unsigned s, Bit, Pos, i, r;
	double Leitwert, R, Step, R_Lin, Match;
		// Variablen vordefinieren beschleunigt die Schleifen
	bool Run= true;
	while (Run)
	{	// Probieren, bis die letzte Stelle zum letzten Widerstand gezählt ist
		// Zuerst R_Min der aktuellen Kombination bestimmen, sollte
gewünschten R_Min einhalten
		Current_R.clear();
		for (s= 1; s < pow(2, N_Schalter); ++s)
		{	// Zähler für alle Schalterkombinationen von 1 bis 0xFFFF, Null ist
ungültig
			//	R= 1/(1/R0 + 1/R1 + 1/R2 ... + 1/Rn)
			Leitwert= 0;
			Bit= 1;
			for (Pos= 0; Pos < N_Schalter; ++Pos)
			{	// Für alle Schalter von 0..N_Schalter
				if (s & Bit) Leitwert+= 1.0/R_Mat[Pos][Widerstand[Pos]];
					// Wenn der Schalter geschlossen ist (1) Leitwert des aktuellen
Widerstands aufaddieren
				Bit <<= 1;	// Nächstes Bit prüfen
			}

			 R= 1/Leitwert;	// Aus aufsummiertem Leitwert abschließend Widerstand
bestimmen

			if (R >= R_Min && R <= R_Max) Current_R.insert(R + 0.5);
				// Gültigen Wert gerundet in die Linearitätsprüfung
				// Beachte: Das verwirft gültige Schalterstellungen, ggf. das set
auf double umstellen!
		}

		Step= (R_Max - R_Min)/Current_R.size();
		R_Lin= R_Min;
		Match= 0;
		for (td_set_int::const_iterator it= Current_R.begin(); it!=
Current_R.end(); ++it)
		{	// Aufsteigende Werte des Sets mit äquivalentem linearen Wert
vergleichen
			Match+= fabs(*it - R_Lin)/std::max(*it, int(R_Lin + 0.5));	//
Abweichungen aufaddieren
			R_Lin+= Step;		// Linearen Vergleichswiderstand aufaddieren
		}
		Match/= Current_R.size();	// Mittlere Abweichung bestimmen
		if (Match <= Best_Match		// Bessere oder gleiche Lineariät
		 || Best_Steps < Current_R.size())	// Mehr Schritte
		{	// Bisher geringste Abweichung von der Linearität gefunden:
			cout << Best_Match << ' ' << Best_Steps <<' ';
			for (i= 0; i< N_Schalter; ++i) cout <<  R_Mat[i][Widerstand[i]] << ' ';
			cout << endl;
			if (Match < Best_Match) Best_Match= Match;
			if (Current_R.size() > Best_Steps)
			{	// Mehr Schritte gefunden
				Best_Steps= Current_R.size();
				Best_Match= std::numeric_limits< double >::max();
			}	// Neuen Match für neue Schritte starten
		}

		// Widerstandskombinationen hochzählen
		for (r= 0; r < N_Schalter; ++r)
		{
			if (++Widerstand[r] == R_Mat[r].size())
			{
				Widerstand[r]= 0;
				if (r== N_Schalter -1) Run= false;
			}
			else break;
		}
	}
	return 0;
}

[toc] | [prev] | [next] | [standalone]


#243515

FromHans-Peter Diettrich <DrDiettrich1@aol.com>
Date2018-05-04 10:47 +0200
Message-ID<fl2ldrFtirkU1@mid.individual.net>
In reply to#243475
Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
> Holger Schieferdecker schrieb:
>> Am 03.05.2018 um 09:03 schrieb Edzard Egberts:
>>> Das funktioniert und sieht recht gut aus. Da wird sich der Ralf freuen,
>>> man muss nur noch die nächsten passenden Widerstände aus der R12-Reihe
>>> einsetzen. Das mit der Unterteilung ist mir jetzt so halbwegs klar, im
>>> Detail muss ich aber noch einmal drüber meditieren. ;o)
>>
>> Naja, wenn die E12-Reihe keine passenden Werte hergibt, dann kann man
>> sicher auch 2-3 Widerstände in Reihe dafür nehmen (160 Ohm = 150 Ohm +
>> 100 Ohm, 680 Ohm = (560+68+12) Ohm, etc.).
> 
> Aber wenn man zufällig ein Brute-Force-Programm hat, für das eine
> Laufzeiteinschränkung gesucht wurde, kann man das auch umdengeln und
> nach E12-Kombinationen suchen, die eine möglichst geringe Abweichung
> haben! :o)

Wo kann man da die Toleranz der Widerstände angeben?

DoDi

[toc] | [prev] | [next] | [standalone]


#243516

FromEdzard Egberts <news@edzeg.net>
Date2018-05-04 11:15 +0200
Message-ID<pch8dh$oe$1@news2.open-news-network.org>
In reply to#243515
Hans-Peter Diettrich wrote:
> Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
>> Aber wenn man zufällig ein Brute-Force-Programm hat, für das eine
>> Laufzeiteinschränkung gesucht wurde, kann man das auch umdengeln und
>> nach E12-Kombinationen suchen, die eine möglichst geringe Abweichung
>> haben! :o)
> 
> Wo kann man da die Toleranz der Widerstände angeben?

Die Fehlerrechnung würde man selbstverständlich beim Aufsummieren der 
Leitwerte durchführen und könnte dann für jede Widerstandskombination 
die Toleranz angeben.

[toc] | [prev] | [next] | [standalone]


#243519

FromHans-Peter Diettrich <DrDiettrich1@aol.com>
Date2018-05-04 14:30 +0200
Message-ID<fl3240F1ticU1@mid.individual.net>
In reply to#243516
Am 04.05.2018 um 11:15 schrieb Edzard Egberts:
> Hans-Peter Diettrich wrote:
>> Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
>>> Aber wenn man zufällig ein Brute-Force-Programm hat, für das eine
>>> Laufzeiteinschränkung gesucht wurde, kann man das auch umdengeln und
>>> nach E12-Kombinationen suchen, die eine möglichst geringe Abweichung
>>> haben! :o)
>>
>> Wo kann man da die Toleranz der Widerstände angeben?
> 
> Die Fehlerrechnung würde man selbstverständlich beim Aufsummieren der 
> Leitwerte durchführen und könnte dann für jede Widerstandskombination 
> die Toleranz angeben.

Umgekehrt könnte man auch mit dem größten Widerstand anfangen, und aus 
dessen Toleranz die akzeptable Abweichung vom Sollwert ermitteln. 
Deshalb dürfte es bei den kleinen Werten aufwendiger sein, nahe genug an 
den Sollwert zu kommen, als bei den großen Widerständen.

DoDi

[toc] | [prev] | [next] | [standalone]


#243525

FromEdzard Egberts <news@edzeg.net>
Date2018-05-04 16:12 +0200
Message-ID<pchpqr$pk3$1@news2.open-news-network.org>
In reply to#243519
Hans-Peter Diettrich wrote:
> Am 04.05.2018 um 11:15 schrieb Edzard Egberts:
>> Hans-Peter Diettrich wrote:
>>> Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
>>>> Aber wenn man zufällig ein Brute-Force-Programm hat, für das eine
>>>> Laufzeiteinschränkung gesucht wurde, kann man das auch umdengeln und
>>>> nach E12-Kombinationen suchen, die eine möglichst geringe Abweichung
>>>> haben! :o)
>>>
>>> Wo kann man da die Toleranz der Widerstände angeben?
>>
>> Die Fehlerrechnung würde man selbstverständlich beim Aufsummieren der 
>> Leitwerte durchführen und könnte dann für jede Widerstandskombination 
>> die Toleranz angeben.
> 
> Umgekehrt könnte man auch mit dem größten Widerstand anfangen, und aus 
> dessen Toleranz die akzeptable Abweichung vom Sollwert ermitteln. 
> Deshalb dürfte es bei den kleinen Werten aufwendiger sein, nahe genug an 
> den Sollwert zu kommen, als bei den großen Widerständen.

Ja, das ist recht knifflig - die Toleranz des kleinsten Widerstands 
(größter Leitwert) könnte so groß sein, dass durch Parallelschalten des 
größten Widerstands (kleinster Leitwert) der Wert einfach immer noch 
völlig daneben hängt.

Die ganz pragmatische Lösung wäre wirklich den passenden genauen 
Widerstand zu nehmen, wie vom Andreas vorgeschlagen("E96"), aber was 
mich hier interessierte, war gerade die beste Abdeckung mit nicht genau 
passenden Widerständen. Sollte mir ein Hobby zulegen... ;o)

[toc] | [prev] | [next] | [standalone]


#243520

FromHolger Schieferdecker <spamless@gmx.de>
Date2018-05-04 15:08 +0200
Message-ID<pchm07UrnhuL1@news.in-ulm.de>
In reply to#243475
Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
> Holger Schieferdecker schrieb:
>> Am 03.05.2018 um 09:03 schrieb Edzard Egberts:
>>> Das funktioniert und sieht recht gut aus. Da wird sich der Ralf freuen,
>>> man muss nur noch die nächsten passenden Widerstände aus der R12-Reihe
>>> einsetzen. Das mit der Unterteilung ist mir jetzt so halbwegs klar, im
>>> Detail muss ich aber noch einmal drüber meditieren. ;o)
>>
>> Naja, wenn die E12-Reihe keine passenden Werte hergibt, dann kann man
>> sicher auch 2-3 Widerstände in Reihe dafür nehmen (160 Ohm = 150 Ohm +
>> 100 Ohm, 680 Ohm = (560+68+12) Ohm, etc.).
>
> Aber wenn man zufällig ein Brute-Force-Programm hat, für das eine
> Laufzeiteinschränkung gesucht wurde, kann man das auch umdengeln und
> nach E12-Kombinationen suchen, die eine möglichst geringe Abweichung
> haben! :o)
>
> Ich habe also den dummen Fehler im Linearitätstest korrigiert und die
> Werte vom Axel getestet: Relativer Linearitätsfehler 0.92 bei 4447
> Schritten.
>
> Für die E12-Reihe kam diese Kombination heraus, mit Fehler 0.91 bei 4338
> Schritten:
>
> 150 270 560 1500 2200 5600 12000 22000 47000 82000 150000 270000 680000
> 1.5e+06 2.7e+06 4.7e+06
>
> So, das musste ich doch einfach mal herausfinden! ;o)
>
> Die Idee, dauerhaft einen großen Widerstand parallel zu schalten, taugt
> übrigens nichts, sondern verschlechtert die Reihe.

Vermutlich stehe ich gerade auf dem Schlauch, aber kannst Du das bitte 
erklären? Wer kommt wo parallel? Und verschlechtert dann die Reihe?

Holger

[toc] | [prev] | [next] | [standalone]


#243521

FromEdzard Egberts <news@edzeg.net>
Date2018-05-04 15:39 +0200
Message-ID<pchnsj$mua$1@news2.open-news-network.org>
In reply to#243520
Holger Schieferdecker wrote:
> Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
>> Die Idee, dauerhaft einen großen Widerstand parallel zu schalten, taugt
>> übrigens nichts, sondern verschlechtert die Reihe.
> 
> Vermutlich stehe ich gerade auf dem Schlauch, aber kannst Du das bitte 
> erklären? Wer kommt wo parallel? Und verschlechtert dann die Reihe?

Ich hatte die Idee, dass man den größten Widerstand dauerhaft parallel 
schalten könnte, also 100k für "alle Schalter offen" und dann wird durch 
Parallelschalten verkleinert. Das ergab beim Ausprobieren allerdings 
einen größeren Fehler bei weniger Stufen im Vergleich zum Weglassen.

So komplett habe ich das noch nicht durchschaut. Ich habe zwar 
verstanden, warum die Reihe vom Axel die feinste Auflösung bietet (durch 
die Verdopplung werden die größten Widerstandswerte mit dem kleinsten 
Leitwert als Schrittweite erzeugt), aber nicht, warum ich immer noch so 
einen miesen Linearitätsfehler bekomme, der sollte eigentlich fast Null 
sein und den gesamten Bereich mit der feinsten Auflösung (größter 
Widerstand) abdecken. Weniger Schritte wären okay, dann wären 16 
Schalter für eine Schrittweite von einem Ohm (Rundung auf int) einfach 
nur überdimensioniert, aber der Fehler müsste dann Null sein.

Mal sehen, vielleicht am Wochenende - müsste mal die Ergebnisse plotten, 
die habe ich mir noch nicht genau angeschaut. Dabei ist das so ein 
simples Problem!

[toc] | [prev] | [next] | [standalone]


#243528

FromHolger Schieferdecker <spamless@gmx.de>
Date2018-05-04 16:27 +0200
Message-ID<pchqjqUrvbiL1@news.in-ulm.de>
In reply to#243521
Am 04.05.2018 um 15:39 schrieb Edzard Egberts:
> Holger Schieferdecker wrote:
>> Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
>>> Die Idee, dauerhaft einen großen Widerstand parallel zu schalten, taugt
>>> übrigens nichts, sondern verschlechtert die Reihe.
>>
>> Vermutlich stehe ich gerade auf dem Schlauch, aber kannst Du das bitte
>> erklären? Wer kommt wo parallel? Und verschlechtert dann die Reihe?
>
> Ich hatte die Idee, dass man den größten Widerstand dauerhaft parallel
> schalten könnte, also 100k für "alle Schalter offen" und dann wird durch
> Parallelschalten verkleinert. Das ergab beim Ausprobieren allerdings
> einen größeren Fehler bei weniger Stufen im Vergleich zum Weglassen.

Danke, jetzt ist mir klar, was Du meintest.

Wenn 100 k permanent parallel sind, hast Du insbesondere bei den hohen 
Widerständen ein Problem.

Wenn ich das richtig sehe, sollen doch zwischen 80 Ohm und 100 kOhm 
lineare Zwischenwerte erzeugt werden, mit 16 Bit Auflösung. Das macht 
pro Schritt etwa 1,5 Ohm. Der nächste Wert unterhalb des Maximums wäre 
also etwa 99998,5 Ohm. Um den zu erhalten, muß man 100.000 Ohm und 
6.666.566.667 Ohm parallel schalten. So einen hohen Wert hattest Du 
vermutlich nicht in der Simulation.

Mit den 4,7 MOhm aus Deinem letzten Programm parallel zu 100 kOhm 
ergeben sich 97916 Ohm, also einen ziemlich großen Fehler, und weitere 
parallel zu schalten verschlechtert es nur noch.

> So komplett habe ich das noch nicht durchschaut. Ich habe zwar
> verstanden, warum die Reihe vom Axel die feinste Auflösung bietet (durch
> die Verdopplung werden die größten Widerstandswerte mit dem kleinsten
> Leitwert als Schrittweite erzeugt), aber nicht, warum ich immer noch so
> einen miesen Linearitätsfehler bekomme, der sollte eigentlich fast Null
> sein und den gesamten Bereich mit der feinsten Auflösung (größter
> Widerstand) abdecken. Weniger Schritte wären okay, dann wären 16
> Schalter für eine Schrittweite von einem Ohm (Rundung auf int) einfach
> nur überdimensioniert, aber der Fehler müsste dann Null sein.

Hast Du Dein Programm mal mit den exakten Werten von Axel durchlaufen 
lassen, also 160, 320, 640 etc.? Wie sieht es dann mit dem Fehler aus?

> Mal sehen, vielleicht am Wochenende - müsste mal die Ergebnisse plotten,
> die habe ich mir noch nicht genau angeschaut. Dabei ist das so ein
> simples Problem!

Wo ist der Quantencomputer, der alle Berechnungen parallel ausführt? :-)

Holger

[toc] | [prev] | [next] | [standalone]


#243533

FromEdzard Egberts <news@edzeg.net>
Date2018-05-04 17:13 +0200
Message-ID<pchtbm$uel$1@news2.open-news-network.org>
In reply to#243528
Holger Schieferdecker wrote:
> Am 04.05.2018 um 15:39 schrieb Edzard Egberts:
>> Ich hatte die Idee, dass man den größten Widerstand dauerhaft parallel
>> schalten könnte, also 100k für "alle Schalter offen" und dann wird durch
>> Parallelschalten verkleinert. Das ergab beim Ausprobieren allerdings
>> einen größeren Fehler bei weniger Stufen im Vergleich zum Weglassen.
> 
> Danke, jetzt ist mir klar, was Du meintest.
> 
> Wenn 100 k permanent parallel sind, hast Du insbesondere bei den hohen 
> Widerständen ein Problem.

Das ist sogar ganz grundsätzlich sinnlos, auch wenn es auf den ersten 
Blick naheliegend erscheint.

> Wenn ich das richtig sehe, sollen doch zwischen 80 Ohm und 100 kOhm 
> lineare Zwischenwerte erzeugt werden, mit 16 Bit Auflösung. Das macht 
> pro Schritt etwa 1,5 Ohm. Der nächste Wert unterhalb des Maximums wäre 
> also etwa 99998,5 Ohm. Um den zu erhalten, muß man 100.000 Ohm und 
> 6.666.566.667 Ohm parallel schalten. So einen hohen Wert hattest Du 
> vermutlich nicht in der Simulation.

Wie schon gesagt, ich sollte vielleicht doch mal selber nachrechnen.

> Hast Du Dein Programm mal mit den exakten Werten von Axel durchlaufen 
> lassen, also 160, 320, 640 etc.? Wie sieht es dann mit dem Fehler aus?

Relativer Linearitätsfehler 0.92 bei 4447 Schritten und mit einer 
E12-Kombination einen Fehler von 0.91 bei 4338 Schritten. Wie Axel 
nebenan schreibt, die beste Reihe von Leitwerten muss nicht die beste 
Reihe von Widerständen ergeben...

>> Mal sehen, vielleicht am Wochenende - müsste mal die Ergebnisse plotten,
>> die habe ich mir noch nicht genau angeschaut. Dabei ist das so ein
>> simples Problem!
> 
> Wo ist der Quantencomputer, der alle Berechnungen parallel ausführt? :-)

Hehe, der würde mir gefallen, Exponenten sind echt fies!

[toc] | [prev] | [next] | [standalone]


#243529

FromAxel Berger <Spam@Berger-Odenthal.De>
Date2018-05-04 16:43 +0200
Message-ID<5AEC7191.9778F852@Berger-Odenthal.De>
In reply to#243521
Edzard Egberts wrote:
> aber nicht, warum ich immer noch so
> einen miesen Linearitätsfehler bekomme,

Na ja, halbwegs linear mit gleichen Schritten wird halt der Leitwert und
nicht dessen Kehrwert. Für Widerstände wäre eine Serienschaltung mit
überbrückenden Kurzzschlußschaltern passender, aber die hast Du ja vorab
aussortiert.

-- 
/¯\   No  |    Dipl.-Ing. F. Axel Berger    Tel: +49/ 221/ 7771 8067
\ /  HTML |    Roald-Amundsen-Straße 2a     Fax: +49/ 221/ 7771 8069
 X    in  |    D-50829 Köln-Ossendorf      http://berger-odenthal.de
/ \  Mail | -- No unannounced, large, binary attachments, please! --

[toc] | [prev] | [next] | [standalone]


#243536

FromHolger Schieferdecker <spamless@gmx.de>
Date2018-05-04 17:37 +0200
Message-ID<pchuoaUs67pL1@news.in-ulm.de>
In reply to#243475
Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
> Wer selber damit spielen will, noch mal der Code - selbst für die paar
> Kombinationen braucht der noch ordentlich Zeit! Diesmal etwas gekürzt
> und ohne Dateiausgabe, ggf. also in eine Datei pipen.

Wie lange läuft das Programm eigentlich?

> 			for (Pos= 0; Pos < N_Schalter; ++Pos)
> 			{	// Für alle Schalter von 0..N_Schalter
> 				if (s & Bit) Leitwert+= 1.0/R_Mat[Pos][Widerstand[Pos]];
> 					// Wenn der Schalter geschlossen ist (1) Leitwert des aktuellen
> Widerstands aufaddieren
> 				Bit <<= 1;	// Nächstes Bit prüfen
> 			}

Hier wäre es vielleicht effizienter, die Leitwerte aller 
Einzelwiderstände am Anfang einmal zu berechnen und dann nur diese zu 
summieren. Spart die oft gleichen Divisionen 1.0/R_Mat in jedem 
Schleifendurchlauf. Wobei vermutlich das ganze Drumrum den größeren 
Anteil an der Laufzeit hat.

Holger

[toc] | [prev] | [next] | [standalone]


#243642

FromEdzard Egberts <news@edzeg.net>
Date2018-05-07 08:09 +0200
Message-ID<pcoqjt$4sv$1@news2.open-news-network.org>
In reply to#243536
Holger Schieferdecker wrote:
> Am 03.05.2018 um 18:52 schrieb Edzard Egberts:
>> Wer selber damit spielen will, noch mal der Code - selbst für die paar
>> Kombinationen braucht der noch ordentlich Zeit! Diesmal etwas gekürzt
>> und ohne Dateiausgabe, ggf. also in eine Datei pipen.
> 
> Wie lange läuft das Programm eigentlich?

Für diese Kombinationen mit jeweils 2 Widerständen etwa eine halbe 
Stunde, ansonsten t(Innere Schleife) * Anzahl_Widerstände^16 - die 
jeweilige Gesamtlaufzeit lässt sich also leicht bestimmen, dieses 
Programm muss man nicht abwarten.

> Hier wäre es vielleicht effizienter, die Leitwerte aller 
> Einzelwiderstände am Anfang einmal zu berechnen und dann nur diese zu 
> summieren.

*Sicherlich* effizienter!

> Wobei vermutlich das ganze Drumrum den größeren Anteil an der Laufzeit hat.

Die ganzen Kombinationen sind es! Im Originalprogramm (4 Dekaden * 12 
Widerstände) ^ 16 Stellen -> 7.94072E+26 Kombinationen, da dauert reines 
Hochzählen ohne Berechnung schon sehr lange.

[toc] | [prev] | [next] | [standalone]


Page 2 of 4 — ← Prev page 1 [2] 3 4  Next page →

Back to top | Article view | de.sci.electronics


csiph-web