Решение одновременных уравнений - PullRequest
0 голосов
/ 01 января 2011

Вот моя проблема:

Учитывая x, y, z и ratio, где z известно, а ratio известно и представляет собой число с плавающей точкой, представляющее относительное значение, мне нужно найти x и y.

Я знаю, что:

x / y == ratio
y - x == z

Я пытаюсь создать собственную панель прокрутки, и я выясняю параметры полосы прокрутки.

Так, например,

Если полоса прокрутки должна иметь возможность прокручивать 100 значений (z) и большой палец должен использовать 80% полосы (ratio = 0,8), тогда x будет 400, а y будет 500.

Спасибо

Ответы [ 4 ]

1 голос
/ 01 января 2011

Из алгебры:

y := z / (1 - ratio)
x := y - z

Используя ваш пример:

y := 100 / (1 - 0.8) = 100 / 0.2 = 500
x := 500 - 100 = 400
0 голосов
/ 01 января 2011

Вы должны использовать немного математики.

x=ratio*y
y=z/(1-ratio)

Так что вы можете просто рассчитать у, а затем х

0 голосов
/ 01 января 2011

Из вашего первого уравнения:

x / y = ratio
=> x = y.ratio

Из вашего второго уравнения:

y - x = z
=> y - y.ratio = z
=> y = z / (1 - ratio)

Подключение x = y.ratio:

=> x = z.ratio / (1 - ratio)

Таким образом, вы можете рассчитать x = z * ratio / (1 - ratio) и y = z / (1 - ratio). Для вашего примера x = 100 * 0.8 / (1 - 0.8) = 400 и y = 100 / (1 - 0.8) = 500.

0 голосов
/ 01 января 2011

У вас есть два уравнения с двумя неизвестными. Чтобы решить, нужно устранить одного из неизвестных путем подстановки. Например, мы можем исключить y, переставив первое уравнение как:

y = x / ratio

и затем подставляя во второе:

(x / ratio) - x = z

Это новое уравнение затем можно переставить в терминах x:

x = z . ratio / (1-ratio)

Это дает вам y:

y = z / (1-ratio)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...