Серия Тейлора в Java с использованием floatJAVA

Программисты JAVA общаются здесь
Anonymous
Серия Тейлора в Java с использованием float

Сообщение Anonymous »

Я внедряю метод Berechnecosinus (float x, int ordnung) в Java, который должен аппроксимировать косинус X, используя серию Taylor до указанного порядка. < /p>
Мои вопросы: < /p>
Могу ли я оптимизировать вычисление внутри метода, не изменяя подписи, чтобы точно, чтобы точно соответствовать данным тестируемым результатам? Что у меня до сих пор: < /p>
public class Taylor {

public float berechneFak(float x) {
if (x 0) {
term *= -x * x / ((n - 1) * n);
}
summe += term;
}
return summe;
}
}
< /code>
Это назначение: < /p>
public class Taylor {

public float berechneFak(float x) {
// insert code here!
// drandenken: Vorlesung!
return 0.0f;
}

public float berechneCosinus(float x, int ordnung) {
float acc = 0.0f;
// Ihr Code hierher!
return acc;
}

}
< /code>
testfälle,
erwartet /erhaltenes ergebnis < /p>
I реализовал метод расчета косинуса с использованием серии Тейлора и нормализовал x в интервал [-π, π]. Однако результаты немного отличаются от ожидаемых значений в некоторых тестовых случаях. Поскольку мне не разрешают изменять подписи метода и могут работать только с поплавками, я ищу советы о том, как повысить точность. < /P>
Вот минимальный воспроизводимый пример < /p>
public class Taylor {
public float berechneCosinus(float x, int ordnung) {
if (ordnung == 0) return 0.0f;

float sum = 0.0f;
float term = 1.0f;
for (int i = 0; i < (ordnung + 1) / 2; i++) {
int n = 2 * i;
if (i > 0)
term *= -x * x / ((n - 1) * n);
sum += term;
}
return sum;
}

public static void main(String[] args) {
Taylor t = new Taylor();
float x = 3.14159265f; // approx. PI
System.out.printf("%.6f\n", t.berechneCosinus(x, 13));
System.out.printf("%.6f\n", t.berechneCosinus(x, 14));
}
}
< /code>
Вывод Actuall:

-0.999900

-0.999900

ожидаемый вывод должен быть:

-0,9998999 * Br />
-0,9999999999999999999999 гг. Проблема в том, что тесты проверяют ровно на -0,999899, ​​мне интересно, возможно ли реструктурировать расчет, чтобы получить ожидаемый результат. Тем не менее, я спрошу, что мой профессор также может быть возможным, что в коде тестирования есть ошибка/ошибка.

Подробнее здесь: https://stackoverflow.com/questions/796 ... sing-float

Вернуться в «JAVA»