Как написать теорему косинуса, используя Java? - PullRequest
0 голосов
/ 02 мая 2019

Как правильно написать эту теорему, как написано в формуле?

package com.company;

public class Exercise8 {

    public static void main(String[] args) {
        double AB = 6;
        double AC = 16;
        double Angle = 60;
        double CosOfAngle = 0.5;
        // Почему-то значение косинуса 60 градусов вместо 0.5, пишет
        // -0.9524129804151563 ?  ?  ? (Do not  pay  attention)
        // Formula is  BC^2 = AB^2 + AC^2 - 2AB*AC * cos A
        double bc = (2 * (Math.pow(AB, 2) + Math.pow(AC, 2) - ((AB * AC))) * CosOfAngle);
        double BC = Math.sqrt(bc);
        double P = AB + BC + AC;
        double p = 0.5 * P; // Где p - полупериметр
        double S0 = (p * ((p - AB) * (p - BC) * (p - AC)));
        double S1 = Math.sqrt(S0);
        double S = Math.round(S1);

        System.out.println("Perimeter of triangle is : " + P + " cm ");
        System.out.println("Area of triangle is : " + S + " cm^2 ");
    }

}

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Ошибка в этой строке:

double bc = (2 * (Math.pow(AB, 2) + Math.pow(AC, 2) - ((AB * AC))) * CosOfAngle);

, которая должна быть:

double bc = Math.pow(AB, 2) + Math.pow(AC, 2) - 2 * AB * AC * CosOfAngle;

Вы умножали всю формулуна 2, тогда как только косинусную часть нужно умножить на два.Было слишком много запутанных скобок.Удаление их сделало это намного яснее.

1 голос
/ 02 мая 2019

Мне кажется, это просто:

// https://www.mathsisfun.com/algebra/trig-cosine-law.html
public double lawOfCosines(double a, double b, double angleInRadians) {
    return Math.sqrt(a*a + b*b - 2.0*a*b*Math.cos(angleInRadians)); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...