Algoritmo progresivo no lineal para aumentar el descuento

Un sistema debe admitir 100 usuarios y el precio del soporte es 3

Un sistema debe admitir 10 usuarios y el precio del soporte es 000

Tengo que idear un algoritmo que me dé el precio intermedio para que aumente gradualmente con el número de usuarios.

Intenté multiplicar el número de usuarios por 0.0002 para obtener el valor de descuento y obtuve

300 usuarios * 0.0002 = 0.06 de descuento, por lo que el precio de soporte = 2.94 ingresos totales = 300 * 2.94 = 882

5000 usuarios * 0.0002 = 1 descuento, por lo que el precio de soporte = 2 ingresos totales = 5000 * 2 = 10

8000 usuarios * 0.0002 = 1.6 descuento, por lo que el precio de soporte = 1.4 ingresos totales = 8000 * 1.4 = 11

10 usuarios * 000 = 0.0002 de descuento, por lo que el precio de soporte = 2 ingreso total = 1 * 8000 = 1.4

Entonces, después de un punto dado, en realidad tengo más usuarios pero recibo menos pago.

No soy matemático y ahora esto no es realmente una pregunta de programación, pero no sé dónde más preguntar esto. Agradeceré si alguien me puede ayudar con cualquier información. ¡Gracias!

preguntado el 08 de noviembre de 11 a las 10:11

¿Alguien puede mover esto a MathOverflow? -

@El ¿parece un problema a nivel de investigación? Matemáticas. quizás -

2 Respuestas

price = n * (5 - log10(n)) trabajará para 100 < n < 10000.

Solo asegúrate de usar un registro base 10 y no un registro natural (base e). Si su idioma no tiene un registro de base 10 normalmente, puede calcularlo así:
function log10(x) { return log(x)/log(10); }.

Para 100 usuarios, eso es 100 * (5 - log10(100)), que da 100 * (5 - 2), que es 300.

Para 1000 usuarios, eso es 1000 * (5 - log10(1000)), que da 1000 * (5 - 3), que es 2000.

Para 10000 usuarios, eso es 10000 * (5 - log10(10000)), que da 10000 * (5 - 4), que es 10000.

Escojamos algunas figuras más aleatorias.
2500 usuarios: 2500 * (5 - log10(2500)) nos da 2500 * (5 - 3.39794), que es 4005.
6500 usuarios: 6500 * (5 - log10(6500)) nos da 6500 * (5 - 3.81291), que es 7716.
8000 usuarios: 8000 * (5 - log10(8000)) nos da 8000 * (5 - 3.90309), que es 8775.

Debería funcionar bien para lo que estás modelando.

respondido 08 nov., 11:15

Aquí hay una gráfica del precio por usuario. Observe que 100 = 3, 1000 = 2, 10000 = 1. Aquí está el enlace: www3.wolframalpha.com/input/… - Polinomio

Solo ten en cuenta que como n -> 100000, price -> 0. Probablemente desee limitar el precio a un mínimo de 1 en su código. - Polinomio

¡Gracias Polynomial! Disfruto viendo gente que sabe lo que hace. ¡Esto funcionará perfectamente! - Boris Hamanov

Escalar el precio por usuario linealmente no funcionó como mostró, pero puede intentar escalar el ingreso total linealmente en su lugar.

  • ingresos totales para 100 usuarios = 300
  • ingresos totales para 10000 usuarios = 10000
  • ingresos totales para n usuarios = (n-100) / (10000-100) * (10000-300) + 300

Sabes que el ingreso total para n usuarios es el precio de soporte por usuario multiplicado por el número de usuarios, eso significa, ahora tienes que encontrar la función f(n) tal que f(n) * n = (n-100) / (10000-100) * (10000-300) + 300.

Y si tiene que demostrar que, dado que el ingreso total siempre aumenta, el precio de la manutención siempre disminuye, simplemente demuestre que f'(n) ≤ 0 cuando 100 ≤ n ≤ 10000.

respondido 08 nov., 11:15

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.