Dodawanie logiczne w postaci algebraicznej

0

Czy jest jakiś gotowy algorytm/(biblioteka zawierająca odpowiednią funkcję), który zrealizuje dodawanie logiczne zmiennych ?

Chodzi mi o to aby otrzymać coś takiego:

x1 U x2 U x3 = x1 + x2 + x3 - x1x2 - x1x3 - x2x3 + x1x2x3

Oczywiście dla dowolnej liczby argumentów. Najlepiej żeby argumentem mógłby być iloczyn, np.

x1x2 U x2x3x4 U x2x3 = ...

Potrzebne mi to jest do obliczeń związanych z niezawodnością urządzeń elektronicznych. Może ktoś się spotkał z biblioteką przeznaczoną do obliczeń niezawodności ?

0

chcesz sumę wszystkich kombinacji na jakie możesz pomnożyć liczby ze zbioru {x1, x2, ..., xn}, przy czym kombinacje z parzystą liczbą czynników mają mieć ujemny znak?

#include <stdio.h>

typedef double TYP;

TYP suma_kombinacji(TYP *tab, int n, int k) {
	if (k == 0) return 1;
	
	int i;
	TYP result = 0;
	
	for (i=0; i<n-k+1; ++i) {
		result += tab[i]*suma_kombinacji(tab+i+1, n-i-1, k-1);
	}

	return result;
}

TYP suma(TYP *tab, int n) {
	TYP result = 0;
	int i;
	for (i=0; i<n; ++i) {
		result += (i%2 ? -1 : 1)*suma_kombinacji(tab, n, i+1);
	}
	return result;
}

int main(void) {
	TYP tab[] = {1, 2, 3};
	printf("%lf\n", suma(tab, 3));
	return 0;
}
0

Nie wiem czy to nie coś oczywistego/niepotrzebnego, ale szukana suma logiczna jest równa 1 - (1-x1)(1-x2)...(1-xn).

1 użytkowników online, w tym zalogowanych: 0, gości: 1