MATEMÁTICA APLICADA ⇒ Como saber qual equação usar? Tópico resolvido
Moderador: [ Moderadores TTB ]
-
- Mensagens: 5
- Registrado em: Qui 10 Jul, 2014 21:53
- Última visita: 16-07-14
- Localização: São Paulo
- Contato:
Jul 2014
15
08:08
Como saber qual equação usar?
Olá,
Muito obrigado por me aceitarem no fórum, e vou ser cincero, estou aqui pois não consegui resolver um problema matemático que estou tendo para programar e usar no meu site. Bom, vamos para o que interessa.
Preciso converter um valor de experiencias que obtenho do jogo para leveis, e mostrar no meu site. Eu tenho as seguinter informações:
XP = Experiencias
LVL = Leveis
De XP 0 até 292, eu uso a equação: [tex3]\frac{XP}{17}=LVL[/tex3]
Exemplo: [tex3]\frac{272}{17}=16 LVLs[/tex3]
Então a progressão é de 17 em 17 de 0 até 272.
O problema é que depois de 292 até 825 LVLs, a equação muda, e de 887 até [tex3]\infty[/tex3] é outra! Porém, eu eu ja sei que:
Usando a equação adequada para o intervalo 292 até 825 LVLs tenho:
292 XPs = 17 LVLs
825 XPs = 30 LVLs
E para o intervalo 887 até [tex3]\infty[/tex3] sei que:
887 XPs = 31 LVLs
1760 XPs = 40 LVLs
Qual a lógica da progressão ou equação para os 2 casos? Usaria PA pra resolver? Tem tbm uma tabela do próprio wiki do jogo:
Coluna 1: LVLs | Coluna 2: XPs | Coluna 3: XPs para o próximo nivel
1 17 17
2 34 17
3 51 17
4 68 17
5 85 17
6 102 17
7 119 17
8 136 17
9 153 17
10 170 17
11 187 17
12 204 17
13 221 17
14 238 17
15 255 17
16 272 17
17 292 20
18 315 23
19 341 26
20 370 29
21 402 32
22 437 35
23 475 38
24 516 41
25 560 44
26 607 47
27 657 50
28 710 53
29 766 56
30 825 59
31 887 62
32 956 69
33 1032 76
34 1115 83
35 1205 90
36 1302 97
37 1406 104
38 1517 111
39 1635 118
40 1760 125
Obrigado desde já, e se o problema for bom da até pra usar em provas pois muitos players q eu dei pra tentar resolver não conseguiram..rsrs
Muito obrigado por me aceitarem no fórum, e vou ser cincero, estou aqui pois não consegui resolver um problema matemático que estou tendo para programar e usar no meu site. Bom, vamos para o que interessa.
Preciso converter um valor de experiencias que obtenho do jogo para leveis, e mostrar no meu site. Eu tenho as seguinter informações:
XP = Experiencias
LVL = Leveis
De XP 0 até 292, eu uso a equação: [tex3]\frac{XP}{17}=LVL[/tex3]
Exemplo: [tex3]\frac{272}{17}=16 LVLs[/tex3]
Então a progressão é de 17 em 17 de 0 até 272.
O problema é que depois de 292 até 825 LVLs, a equação muda, e de 887 até [tex3]\infty[/tex3] é outra! Porém, eu eu ja sei que:
Usando a equação adequada para o intervalo 292 até 825 LVLs tenho:
292 XPs = 17 LVLs
825 XPs = 30 LVLs
E para o intervalo 887 até [tex3]\infty[/tex3] sei que:
887 XPs = 31 LVLs
1760 XPs = 40 LVLs
Qual a lógica da progressão ou equação para os 2 casos? Usaria PA pra resolver? Tem tbm uma tabela do próprio wiki do jogo:
Coluna 1: LVLs | Coluna 2: XPs | Coluna 3: XPs para o próximo nivel
1 17 17
2 34 17
3 51 17
4 68 17
5 85 17
6 102 17
7 119 17
8 136 17
9 153 17
10 170 17
11 187 17
12 204 17
13 221 17
14 238 17
15 255 17
16 272 17
17 292 20
18 315 23
19 341 26
20 370 29
21 402 32
22 437 35
23 475 38
24 516 41
25 560 44
26 607 47
27 657 50
28 710 53
29 766 56
30 825 59
31 887 62
32 956 69
33 1032 76
34 1115 83
35 1205 90
36 1302 97
37 1406 104
38 1517 111
39 1635 118
40 1760 125
Obrigado desde já, e se o problema for bom da até pra usar em provas pois muitos players q eu dei pra tentar resolver não conseguiram..rsrs
Última edição: FabioZumbi12 (Ter 15 Jul, 2014 08:08). Total de 1 vez.
Jul 2014
15
10:36
Re: Como saber qual equação usar?
Estando no nível 16, é preciso de 20 pontos de experiência para evoluir para o nível 17. A partir daí, a quantidade de pontos por nível para cada nível aumenta de 3 pontos.
Temos, então, uma PA onde e .
Soma dos termos de uma PA = , sendo e .
O resultado da fórmula acima te dará a quantidade total de experiência necessária para chegar àquele nível a partir do nível 16. Então, para se ter a quantidade total de experiência necessária para ir do nível 0 ao nível em questão, faz-se:
No entanto, o que queremos é justamente o contrário, ou seja, saber o nível a partir do total de experiência acumulada. Logo, temos que isolar na equação, visto que
Ao tentar isolarmos , chegaremos à uma equação do segundo grau:
e, portanto,
Para o intervalo , o raciocínio é o mesmo. A diferença é que , e, ao invés de subtrairmos 272 na fórmula final, subtrairemos 825.
Temos, então, uma PA onde e .
Soma dos termos de uma PA = , sendo e .
O resultado da fórmula acima te dará a quantidade total de experiência necessária para chegar àquele nível a partir do nível 16. Então, para se ter a quantidade total de experiência necessária para ir do nível 0 ao nível em questão, faz-se:
No entanto, o que queremos é justamente o contrário, ou seja, saber o nível a partir do total de experiência acumulada. Logo, temos que isolar na equação, visto que
Ao tentar isolarmos , chegaremos à uma equação do segundo grau:
e, portanto,
Para o intervalo , o raciocínio é o mesmo. A diferença é que , e, ao invés de subtrairmos 272 na fórmula final, subtrairemos 825.
Última edição: csmarcelo (Ter 15 Jul, 2014 10:36). Total de 1 vez.
-
- Mensagens: 5
- Registrado em: Qui 10 Jul, 2014 21:53
- Última visita: 16-07-14
- Localização: São Paulo
- Contato:
Jul 2014
15
11:15
Re: Como saber qual equação usar?
Uau, então era complexo mesmo? Só para eu entender, ficamos assim:
De XP 0 até 272, eu uso a equação: [tex3]\frac{XP}{17}=LVLs[/tex3]
De 292 até 825, q=3, [tex3]a_{1}[/tex3] =20 , e eu uso: [tex3]\frac{(q-2\cdot a_1)+\sqrt{(2\cdot a_1-q)^2+8q(EXP-272)}}{2q}+16= LVLs[/tex3]
De 887 até [tex3]\infty[/tex3] , q=7 e [tex3]a_{1}=62[/tex3] , e eu uso: [tex3]\frac{(q-2\cdot a_1)+\sqrt{(2\cdot a_1-q)^2+8q(EXP-825)}}{2q}+16= LVLs[/tex3]
Me desculpe a dificuldade mas tem gente que nasce pra matemática,outros não, e eu sou um dos que não..rs
Parece que vc conseguiu solucionar, porém ainda preciso da sua ajuda para usá-la:
Tem como essa fórmula ser simplificada? Terei que usar em código php e não faço idéia de como usa-la usando a raiz quadrada e elevação;
Pelo que entendi, onde tiver q, terei que substituir por 3 na equação 2, e por 7 na terceira certo? Tem como vc exmeplificar ou simplificar pra eu precisar apenas colocar o XP?
Encontrei isso também no Wiki do jogo:
for x≤15: 17x
for 16≤x≤31: 1.5x² - 29.5x + 360
for x≥30: 3.5x² - 151.5x + 2220
Se servir pra alguma coisa...
Muito obrigado por ajudar a resolver Vou tentando usar ela aqui!
De XP 0 até 272, eu uso a equação: [tex3]\frac{XP}{17}=LVLs[/tex3]
De 292 até 825, q=3, [tex3]a_{1}[/tex3] =20 , e eu uso: [tex3]\frac{(q-2\cdot a_1)+\sqrt{(2\cdot a_1-q)^2+8q(EXP-272)}}{2q}+16= LVLs[/tex3]
De 887 até [tex3]\infty[/tex3] , q=7 e [tex3]a_{1}=62[/tex3] , e eu uso: [tex3]\frac{(q-2\cdot a_1)+\sqrt{(2\cdot a_1-q)^2+8q(EXP-825)}}{2q}+16= LVLs[/tex3]
Me desculpe a dificuldade mas tem gente que nasce pra matemática,outros não, e eu sou um dos que não..rs
Parece que vc conseguiu solucionar, porém ainda preciso da sua ajuda para usá-la:
Tem como essa fórmula ser simplificada? Terei que usar em código php e não faço idéia de como usa-la usando a raiz quadrada e elevação;
Pelo que entendi, onde tiver q, terei que substituir por 3 na equação 2, e por 7 na terceira certo? Tem como vc exmeplificar ou simplificar pra eu precisar apenas colocar o XP?
Encontrei isso também no Wiki do jogo:
for x≤15: 17x
for 16≤x≤31: 1.5x² - 29.5x + 360
for x≥30: 3.5x² - 151.5x + 2220
Se servir pra alguma coisa...
Muito obrigado por ajudar a resolver Vou tentando usar ela aqui!
Última edição: FabioZumbi12 (Ter 15 Jul, 2014 11:15). Total de 1 vez.
Jul 2014
15
12:07
Re: Como saber qual equação usar?
Fabio, nesse caso, não se soma 16, mas 30, que o nível anterior ao nível a partir do qual o novo cálculo passa a valer. Esqueci desse detalhe.De 887 até, e , e eu uso:
Essas fórmulas calculam a experiência em função do nível. A expressão da segunda linha equivale à seguinte expressão que coloquei no meu desenvolvimento:Encontrei isso também no Wiki do jogo:
for x≤15: 17x
for 16≤x≤31: 1.5x² - 29.5x + 360
for x≥30: 3.5x² - 151.5x + 2220
Se servir pra alguma coisa...
Se você expandir essa expressão e substituir as variáveis, ou seja, fizer , e , você chegará à expressão .
Se , então, e, então,
As minhas fórmulas são simplesmente generalizações.
Última edição: csmarcelo (Ter 15 Jul, 2014 12:07). Total de 1 vez.
Jul 2014
15
12:15
Re: Como saber qual equação usar?
Ah, e além disso não tem como simplificar, mas com certeza no PHP existem funções para o cálculo da raiz quadrada e para efetuação de potenciação.
Eu, particularmente, ficaria com as fórmula genéricas. Isso permitirá reaproveitamento de código e, consequentemente, melhor manutenção.
Você conhece Java? Se sim, eu posso implementar nessa linguagem para você ver como ficaria.
Eu, particularmente, ficaria com as fórmula genéricas. Isso permitirá reaproveitamento de código e, consequentemente, melhor manutenção.
Você conhece Java? Se sim, eu posso implementar nessa linguagem para você ver como ficaria.
-
- Mensagens: 5
- Registrado em: Qui 10 Jul, 2014 21:53
- Última visita: 16-07-14
- Localização: São Paulo
- Contato:
Jul 2014
15
12:20
Re: Como saber qual equação usar?
Realmente tem funções sim em PHP, vou tentar aplicar no meu código e ver os resultados. Faz muito tempo que não contato com estes calculos mais complicados por isso a dificuldade de aplicá-los.
Por hora, axo que terei que calcular os itens de dentro da raiz, depois resolver a raiz, depois as somas, depois a divisão de todos pelo 2q, e então somar 16(ou 30) no segundo caso. Essa será a solução né?
(estou fazendo enquanto isso)
Por hora, axo que terei que calcular os itens de dentro da raiz, depois resolver a raiz, depois as somas, depois a divisão de todos pelo 2q, e então somar 16(ou 30) no segundo caso. Essa será a solução né?
(estou fazendo enquanto isso)
Jul 2014
15
12:25
Re: Como saber qual equação usar?
Isso aí, basta substituir os valores e resolver a equação.
Jul 2014
15
12:52
Re: Como saber qual equação usar?
Fabio,
Veja abaixo como eu implementaria em Java.
O código começa a ser executado no procedimento main e a única coisa que ele faz é chamar 5 vezes a função nivel, que retorna o nível da personagem em função da experiência passada como parâmetro.
A função nivel, por sua vez, implementa a condicional para saber que cálculo utilizar, dependendo da quantidade de experiência que a personagem possui.
Nas fórmulas que postei anteriormente, o valor somado ao final da expressão (16 ou 30), assim como os valores de experiência necessários para se alcançar o último nível da classe de cálculo imediatamente anterior (272 ou 825) estavam fixos. Na implementação, eles são parâmetros e, assim, temos uma fórmula única, implementada na função calculoComplicadoDoNivel, para o cálculo do nível quando a experiência for acima de 272.
Veja abaixo como eu implementaria em Java.
O código começa a ser executado no procedimento main e a única coisa que ele faz é chamar 5 vezes a função nivel, que retorna o nível da personagem em função da experiência passada como parâmetro.
A função nivel, por sua vez, implementa a condicional para saber que cálculo utilizar, dependendo da quantidade de experiência que a personagem possui.
Nas fórmulas que postei anteriormente, o valor somado ao final da expressão (16 ou 30), assim como os valores de experiência necessários para se alcançar o último nível da classe de cálculo imediatamente anterior (272 ou 825) estavam fixos. Na implementação, eles são parâmetros e, assim, temos uma fórmula única, implementada na função calculoComplicadoDoNivel, para o cálculo do nível quando a experiência for acima de 272.
Código: Selecionar todos
public class CalculoDeNivel {
private static int calculoComplicadoDoNivel(int a1, int q, int EXP_ATUAL, int EXP_INICIAL, int LVL_INICIAL) {
return (int) ((q-2*a1)+Math.sqrt(Math.pow(2*a1-q, 2)+8*q*(EXP_ATUAL-EXP_INICIAL)))/(2*q)+LVL_INICIAL;
}
private static int nivel(int EXP_ATUAL) {
int nivel = 0;
if (EXP_ATUAL < 0) return 0;
if (EXP_ATUAL <= 272)
nivel = (int) EXP_ATUAL/17;
else if (EXP_ATUAL <= 825)
nivel = calculoComplicadoDoNivel(20, 3, EXP_ATUAL, 272, 16);
else
nivel = calculoComplicadoDoNivel(62, 7, EXP_ATUAL, 825, 30);
return nivel;
}
public static void main(String arg[]) {
System.out.println(nivel(154));
System.out.println(nivel(272));
System.out.println(nivel(705));
System.out.println(nivel(1200));
System.out.println(nivel(1517));
}
}
Última edição: csmarcelo (Ter 15 Jul, 2014 12:52). Total de 1 vez.
-
- Mensagens: 5
- Registrado em: Qui 10 Jul, 2014 21:53
- Última visita: 16-07-14
- Localização: São Paulo
- Contato:
Jul 2014
15
13:35
Re: Como saber qual equação usar?
Hummm, seu exemplo me ajudou a fazer minha função no PHP, pois as chamadas de raiz a elevação são as mesmas, apenas removendo o Math.:
Mas estou tendo o valor: -0,833333333333
E estou chamando usando:
O que será?
Código: Selecionar todos
function xptolvl( $a1, $q, $EXP_ATUAL, $EXP_INICIAL, $LVL_INICIAL) {
return ($q-2*$a1)+\sqrt(pow(2*$a1-$q, 2)+8*$q*($EXP_ATUAL-$EXP_INICIAL))/(2*$q)+$LVL_INICIAL;
}
E estou chamando usando:
Código: Selecionar todos
$lvl = xptolvl(20, 3, 825, 272, 16);
Última edição: FabioZumbi12 (Ter 15 Jul, 2014 13:35). Total de 1 vez.
Jul 2014
15
13:45
Re: Como saber qual equação usar?
Você "engoliu" um par de parênteses.
function xptolvl( $a1, $q, $EXP_ATUAL, $EXP_INICIAL, $LVL_INICIAL) {
return (($q-2*$a1)+\sqrt(pow(2*$a1-$q, 2)+8*$q*($EXP_ATUAL-$EXP_INICIAL)))/(2*$q)+$LVL_INICIAL;
}
Última edição: csmarcelo (Ter 15 Jul, 2014 13:45). Total de 1 vez.
-
- Tópicos Semelhantes
- Respostas
- Exibições
- Última msg
-
- 3 Respostas
- 954 Exibições
-
Última msg por geobson
-
- 1 Respostas
- 4387 Exibições
-
Última msg por petras
-
- 1 Respostas
- 3553 Exibições
-
Última msg por Carlosft57
-
- 1 Respostas
- 797 Exibições
-
Última msg por Jigsaw