Требуется найти все корни уравнения с точностью не ниже 10⁻¹². Уравнение имеет вид Вот...

0 голосов
42 просмотров

Требуется найти все корни уравнения с точностью не ниже 10⁻¹².
Уравнение имеет вид
\displaystyle \sqrt{|x+3|}-\cos{(0.387x)}=0

Вот решение на PascalABCNET 3.3, сборка 1627 от 27.01.2018:

uses NumLibABC;

begin
var f:real->real:=x->Sqrt(Abs(x+3))-Cos(0.387*x);
var oL:=new RootsIsolation(f,-10,10,0.1);
var oZ:=new Zeroin(f,1e-12);
foreach var r in oL.Value do
oZ.Value(r[0],r[1]).Println
end.

Найдены корни
-3.1250285461067
-2.77171087522778

Интересует решение другим путем (назовем его "школьным" или "студенческим") на любом из языков Pascal, C/C++/C#, Basic.


Информатика (150k баллов) | 42 просмотров
0

Студентом бы я мог использовать метод "вилки" достаточно прост для реализации (когда-то и делал). Правда сначала требуется "изолировать" все корни. Для любого уравнения автоматический гарантированный поиск всех корней не представляю. Н вот конкретно это. Достаточно рассмотреть только отрезок, являющийся решением неравенства |x+3|<=1.

0

Приветствую тебя, уважаемый. С большой неохотой вынужден признать своё бессилие в решении этой задачи. За два дня я не смог побороть её. Моих знаний, действительно хватает только для нахождения суммы цифр числа (((

Дан 1 ответ
0 голосов
Правильный ответ

Ну раз никто не решился, а может не захотел возиться, покажу я вам динозавра!
У меня когда-то была программа на QBASIC. (Первая личный комп вначале был без жёсткого диска. Под DOS грузили с дискеты. И там этот мелкий интерпретатор (ок 190 кБайт) был неплохим подспорьем.)
 Программа сохранилась. Она изначально только график рисовала. Потом я её дополнял. В том числе и решением уравнений вилкой. Было несколько версий Функцию я по-быстрому заменил на  требуемую в задаче. Перелопачивать и выяснять полностью состояние программы не стал.
  За требуемую точность не поручусь. Но 4-6 знаков после запятой выдам. Это был "Полуавтоматический" вариант с прорисовкой графика. Красной линией прочерчивалась прямая y=0. График можно было перерисовывать, задавая новые пределы изменения переменной х. Глядя на график можно было определить исходные отрезки для запуска метода вилки.
На скринах, естественно, проблемы с кириллицей. (Ненастроенный DosBox) Но текст программы загнал в pdf. Там можно прочесть все надписи.

На 3-м снимке видно, что, потребовав точность 10^{-12}, я получил ответ, отличающийся от ответа МАСТЕРА. Я так думаю, что у меня не все переменные, требуемые для расчёта объявлены с двойной точностью. (Изначально таких там вообще не было). Но 7 знаков после запятой в ответе совпадают. :) А может это ограничение демоверсии QBASIC интерпретатора.

x_1 \approx -3,1203 \\ \\ x_2 \approx -2,77171



Скачать вложение Adobe Acrobat (PDF)
image
image
image
(13.2k баллов)
0

Это понятно. Ладно, я хоть теперь знаю название алгоритма. При необходимости можно посмотреть хотя бы.

0

Руководство поABC? Давайте

0

Пусть так. Саму реализацию метода вы хотели предложить?