No microsoft excel 2013, como você encontra onde um ponto de dados se cruzaria com uma linha já plotada?

0

Eu tenho um gráfico com uma série de dados, com uma linha de tendência e uma equação de linha de tendência associada (y = mx + b) . Eu tenho outra série de dados, mas apenas de valores y. Eu quero encontrar os valores x deste conjunto de dados, vendo onde o valor y se cruzaria na linha de tendência. Como faço isso no Excel?

    
por VicMTL 22.06.2014 / 21:20

1 resposta

-1

Embora não seja possível dizer especificamente como solicitar ao Excel para fazer isso, posso dizer como isso é feito em geral.

A primeira coisa que você precisa é de dois pontos de cada uma das linhas, então você terá quatro pontos no total. Com os valores xey para cada um desses pontos, você terá 8 valores no total. Se chamarmos dois pontos no primeiro ponto de linha 1 e no ponto 2, e os dois pontos no segundo ponto de linha 3 e ponto 4, terminamos com x1, y1, x2, y2, x3, y3, x4, y4. Agora você pode encontrar o ponto em que essas duas linhas poderiam se cruzar. Vamos chamar a coordenada x do ponto de interseção px e a coordenada y do ponto de interseção py. O seguinte irá fornecer-lhes:

px = ((x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));

py = ((x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));

Agora você só precisa testar para ver se esse ponto de interseção realmente cai em ambas as linhas em questão. Se as linhas forem infinitas, você encontrou sua resposta. Caso contrário, algo como o seguinte funcionará:

//check x
    if (x3 < x4) {
        if (px > x3 && px < x4) {
            xInRange1 = true;
        }
    } else {
        if (px > x4 && px < x3) {
            xInRange1 = true;
        }
    }
    //check y
    if (y3 < y4) {
        if (py > y3 && py < y4) {
            yInRange1 = true;
        }
    } else {
        if (py > y4 && py < y3) {
            yInRange1 = true;
        }
    }

    //same for other line
    //check x
    if (x1 < x2) {
        if (px > x1 && px < x2) {
            xInRange2 = true;
        }
    } else {
        if (px > x2 && px < x1) {
            xInRange2 = true;
        }
    }
    //check y
    if (y1 < y2) {
        if (py > y1 && py < y2) {
            yInRange2 = true;
        }
    } else {
        if (py > y2 && py < y1) {
            yInRange2 = true;
        }
    }

Finalmente, se todos os quatro valores InRange forem verdadeiros, você realmente terá um ponto de interseção. Caso contrário, há um ponto de interseção que está em algum lugar além dos pontos finais das linhas.

if (xInRange1 && yInRange2 && xInRange2 && yInRange2) --Hurray, intersection point!
    
por 23.06.2014 / 04:03