Другие языки программирования и технологии

Решение уравнения методом Ньютона (в С++). Как задать в проге отрезок,содержащий корень?

25*(x^3)+x-1,25=0 методом Ньютона. Отрезок, содержащий корень [0;2].Приближённое значение корня 1.0001.Нужно составить прогу для нахождения корня с абс. погрешностью е=0.001. В проге предусмотерть подсчёт и выдачу на печать кол-ва итераций,необходимых для вычисления значения корня с заданной точностью.Проблема: хз как задать этот самый указанный отрезок с корнем,из-за этого прога уже 2ой час корни вычисляет о_ОПрога:#include<iostream.h>#include<conio.h>#include<math.h>void main()float x,y,x0,f1,f2;f1=0.25*pow(x,3)+x-1.25;f2=0.75*pow(x,2)+1;cout<<"\n x0=";cin>>x0;cout<<"\n e=";cin>>e;int n=0;y=x0;while (fabs(y-x)>e) {x=y; n=n+1; cout<<"\n n="; y=x-f1/f2; cout<<"\n y="<
Егор Щенин
Егор Щенин
172
Метод Ньютона или косательной заключается в постоянном приближении к значению корня, за очередное приближения взяв значение аргумента пересечения оси X и косательной к функции у прошлого приближения. Приблизительно можно оформить так:

float func(float X) - наша функция
{
return 25*(x * x * x)+x-1,25;
};

float derivation(float X) - производная нашей функции (тангенс угла касательной)
{
return 25*3*(x * x)+1;
};

Функция, считающая по Ньютону:
float Neuton()
{
float root = 1.0;
float e = 0.001;
while (true)
{
float temp = root - func(root) / derivation(root);
if (abs(temp - root) <= e)
return temp;
root = temp;
};
};

Попробуй так сделать.
Если 2 часа высчитывает - значит:
1. Либо функция не имеет корней
2. Либо задано неверное приближение
3. Либо не срабатывает проверка на достижение точности корня.

Можно задать такое условие:
Функция, считающая по Ньютону:

float Neuton()
{
float root = 1.0;
float e = 0.001;
while (true)
{
float temp = root - func(root) / derivation(root);
if (abs(temp - root) <= e)
return temp;
root = temp;
if (root < 0) return 0; - проверка на принадлежность диапазону
if (root > 2) return 0; - проверка на принадлежность диапазону
};
};
Дима Бирюков
Дима Бирюков
4 747
Лучший ответ
Лучшая проверка по функциям, это график!
Я пишу лабораторные работы по вычислительной математике, увы, метод касательных не писал, писал только метод половинного деления, графики делаю в MathCad'е.
Напиши, если что либо понадобится, дома имеется 5 книг по вычмату, и одна по алгоритмам, увы, на Сях не пишу, пишу на паскале, но скоро и Си осилить хочу.
P.S.: если все же напишешь, то с пометкой письма "Ответы. Маил. Вычмат".
Желаю успехов.

Похожие вопросы