#maple #numerical-analysis
#maple #численный анализ
Вопрос:
Я работаю над некоторым численным анализом с помощью Maple в рамках своего курса, и я не уверен, где моя ошибка в коде, который я использую.. Если кто-нибудь может указать на мой недостаток, это было бы очень ценно, поскольку я, похоже, неправильно понимаю ответ.
f(x) = sqrt((cosh (x)) ^ 2 1) — sinh(x). Найдите хорошее приближение к f(4.86), используя 6-значную арифметику. Затем используйте 20-значную арифметику для вычисления относительной ошибки. Наконец, округлите его до 6 (значащих) цифр
f := sqrt(cosh(x)^2 1)-sinh(x);
f1 := evalf[6](f(4.86));
f1 := 0.0155
f2 := evalf(f(4.86));
f2 := 0.01550004
Digits := 20;
Digits := 20
Q4 := abs((f2-f1)/f2);
Q4 := 0.0000025806385015780604437
Digits := 6;
Digits := 6
evalf[6](Q4);
0.00000258064
Спасибо всем
Ответ №1:
Вы допустили одну ошибку в синтаксической транскрипции и одну ошибку в программировании Maple.
Ваша первая строка
f := sqrt(cosh(x)^2 1)-sinh(x);
но впоследствии вы вызываете его как оператор (процедуру), например. f(4.86)
и получите числовое значение. Поэтому вы, должно быть, изначально использовали что-то вроде этой процедуры.
f := x -> sqrt(cosh(x)^2 1)-sinh(x);
Так что, вероятно, это была просто ошибка транскрипции при публикации здесь.
Вы допустили ошибку в программировании при вычислении
f2 := evalf(f(4.86));
перед установкой переменной среды рабочей точности Digits
в 20
. Таким образом, вы вычислили f2
только Digits=10
рабочую точность по умолчанию. Но из формулировки вопроса кажется, что вас просят вычислить f2
также с 20 цифрами рабочей точности.
Ваш код может быть изменен следующим образом:
restart;
f := x -> sqrt(cosh(x)^2 1)-sinh(x):
f1 := evalf[6](f(4.86));
f1 := 0.0155
Digits := 20:
f2 := evalf(f(4.86));
f2 := 0.015500036806894590
Q4 := abs((f2-f1)/f2);
Q4 := 0.0000023746327217512077767
evalf[6](Q4);
0.00000237463
Вы использовали два разных механизма для определения рабочей точности. Вы могли бы также сделать это (немного более последовательно в методологии) следующим образом:
restart;
f := x -> sqrt(cosh(x)^2 1)-sinh(x):
f1 := evalf[6]( f(4.86) );
f1 := 0.0155
f2 := evalf[20](f(4.86));
f2 := 0.015500036806894590
rel := evalf[20]( abs((f2-f1)/f2) );
rel := 0.0000023746327217512077767
evalf[6]( rel );
0.00000237463
Всегда есть вероятность, что я неправильно понял вопрос. Каков желаемый ответ?
Комментарии:
1. Был
0.00000237463
ли ожидаемый ответ?2. Да, Acer. Спасибо за вашу помощь в этом. действительно ценю это!