Математическая функция для получения возрастающего / убывающего процента - PullRequest
0 голосов
/ 12 декабря 2011

Есть ли в php функция или набор функций, которые помогут мне решить строку 1 этой проблемы:

Noofdays factorial (for 5days) = 5+4+3+2+1
BasicValue = 200/ 15 =13.3
DailyDosage= Daynumber x basicValue

Уменьшение дозировки для 200-миллиграммового рецепта, например: День 1 - 67, День 2 - 53, День 3 - 40, День 4 - 27, День 5 - 13

Где 200 Должна быть переменной, а NoofDays должна быть переменной.

Ответы [ 3 ]

0 голосов
/ 12 декабря 2011

факториал будет 5 * 4 * 3 * 2 * 1 = 120, а не (сумма) 5 + 4 + 3 + 2 + 1 = 15.

$Noofdays = 5;
$totalAmount = 200;

$dayThreeAmount = calculateDosage(3, $Noofdays, $totalAmount);

function calculateDosage($day, $totalDays, $totalAmount)
{
   return ($totalAmount / ($totalDays * ($totalDays+1) / 2)) * ($totalDays - $day + 1);
}

Я предполагаю, что сумма - это то, чтоВы хотели ...

РЕДАКТИРОВАТЬ: Doh, делить не умножать ...

0 голосов
/ 12 декабря 2011

Не совсем уверен, с чем у вас здесь проблемы.Но ниже, кажется, делать то, что вы хотите.

$currentDay = 4;
$noOfDays = 5;
$milligram = 200;
$basicValue = $milligram / array_sum(range($noOfDays, 1,-1));
$dailyDosage = round($currentDay * $basicValue);
0 голосов
/ 12 декабря 2011

1 + 2 + ... + n = n⋅ (n + 1) / 2 , если это то, что вы спрашиваете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...