double n = -1/MathPow(5.5, 0.2); Print(n);
Preciso escrever uma função que funcione com poderes e, no processo, descobri algo interessante:
Se eu substituir um número fracionário negativo por um poder fracionário negativo, a MQL5 escreve -nan.
Verifiquei em C++ e obtive o mesmo resultado (não sei qual versão do idioma foi usada, porque eu era preguiçoso demais para compilar e acabei de testá-lo pelo cpp.sh).
Os prós dão a mesma resposta, não há erro na MQL5! Mas qual é a razão de tal resposta? Se utilizarmos a matemática, a resposta deve ser dada. Matematicamente, um número para o poder negativo é igual a um dividido pelo mesmo número para o poder positivo. Em outras palavras:
E a calculadora no computador o confirma. Então o que é isso de graus?
Em R:
(-5,5)^-0,2=NaN
-5.5^-0.2=-(5.5^-0.2)=-0.7110947
em R:
(-5,5)^-0,2=NaN
-5.5^-0.2=-(5.5^-0.2)=-0.7110947
Talvez as pernas estejam crescendo a partir do fato de que não se pode tirar uma raiz sequer de um número negativo ? Já estou um pouco confuso... E o mais importante, como contornar isso ?
E o mais importante, como contornar isso ?
m = 2
n = 10
double result = pow(pow(-5.5,2.0),-0.1); Print("result = ",result); //result = 0.7110947333604484sem parênteses, o sinal de menos pode ser interpretado de forma diferente, imho
Haverá um problema com os sinais. A raiz de um poder uniforme é sempre positiva.
Em calculadora onde o grau é fracionário
1/(-5.5 ^ -0.2) -0,7110947333604484236326007791589
Em mql onde o grau é fracionário
double n = 1/MathPow(-5.5, -0.2); Print(n); zero divide in 'Pow.mq5'
Em mql onde o grau é inteiro.
double n = 1/MathPow(-3.0, -3.0); Print(n); -27.0
Conclusão, a função não conta corretamente os poderes fracionários, e retorna divisão zero.
m = 2
n = 10
sem parênteses o sinal de menos pode ser interpretado de forma diferente, imhoObrigado pela resposta, mas em geral se tomarmos uma solução aritmeticamente correta, parece que apenas números complexos podem ser usados para implementar tal solução... Em seu método proposto, é necessário dividir o grau para que o valor subjacente tenha sempre um grau positivo e a resposta será sempre positiva. Mas se você tomar sem este ajuste - chegamos apenas a números complexos, porque de acordo com o modelo algébrico geralmente aceito, tanto quanto sei (não sou matemático por educação) - a raiz de um número negativo será um número complexo.
Em mql onde está o grau fracionário
Em mql onde o grau é fracionário
Em mql onde o grau é inteiro.
Conclusão, a função não conta corretamente os graus fracionários, e retorna divisão zero.
A função é correta. A matemática padrão simplesmente não funciona lá)
A função é correta. A matemática padrão simplesmente não cabe lá)
-0,2 não é zero para devolver um erro de divisão por zero.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Preciso escrever uma função que funcione com poderes e, no processo, descobri algo interessante:
Se eu substituir um número fracionário negativo por um poder fracionário negativo, a MQL5 escreve -nan.
Verifiquei em C++ e obtive o mesmo resultado (não sei qual versão do idioma foi usada, porque eu era preguiçoso demais para compilar e acabei de testá-lo pelo cpp.sh).
Eu acho que não há erro na MQL5 se a resposta for a mesma em pluses! Mas a questão é por que isso acontece dessa maneira? Se fizermos as contas, então a resposta deve estar lá. Matematicamente, um número negativo é igual a um dividido pelo mesmo número pelo poder positivo. Em outras palavras:
E a calculadora no computador o confirma. Então, qual é este truque com as notas?