
C/C++
Нужна помощь с С , можно и на С++
Отделить корни нелинейного уравнения аналитически и уточнить один из них (для всех методов рассматривать одинаковый отрезок) методом итераций, Ньютона, хорд, комбинированным с точностью вычисления до 0.001.


Причем тут язык программирования и обыкновенная математика.
Аъзамжон Собиров
ну сказали кодом написать
А делать тут что нужно? Какие корни? Зачем их отделять? Найдём сначала критические точки функции f(x)=x³-3x²+12x-12:
f'(x)=3x²-6x+12=0, квадратное уравнение х²-2х+4=0 не имеет действительных корней, а это значит, что у функции f нет ни максимумов, ни минимумов, ни вообще стационарных точек и как следствие -пересечение её графика с осью абсцисс возможно только в одной единственной точке! Так какие корни надо здесь сначала отделить, а потом найти рядом численных методов -комплексные, что ли?
Так как левая часть уравнения -это полином третьей степени без критических точек, то начальным приближением, например, в ньютоновском методе касательных, может быть любое вещественное число. Да, кстати, ещё надо добавить, что для него, для этого метода, и отрезков никаких рассматривать не нужно -достаточно одного любого введённого действительного числа (брать которое лучше всё таки в разумных пределах !): итерационный процесс всё равно в конечном итоге приведёт к корню, вычисляемого с машинной точностью очень и очень быстро и хотя бы поэтому точность ε=0,001 выглядит очень неказистой, так что сразу можно на неё наплевать. А все другие методы в данном случае -это вообще просто чья-то блажь! Я ещё понимаю, когда сравниваются алгоритмы с точки зрения их эффективности, а тут даже и сравнивать нечего -настолько всё ясно! А теперь сам код на Си:
#include <stdio.h>
double f(double x)
{ return -12. + x * (12. - x * (3. - x)); }
int main() { int i, n; double x, step = 1e-4,
twostep = 2. * step; while (true)
{ printf("x n: "); scanf("%lf%d", &x, &n);
for (i = 1; i <= n; i++)
{ x -= f(x) * twostep / (f(x + step) - f(x - step));
printf("%3d%22.16f\n", i, x); } } }

f'(x)=3x²-6x+12=0, квадратное уравнение х²-2х+4=0 не имеет действительных корней, а это значит, что у функции f нет ни максимумов, ни минимумов, ни вообще стационарных точек и как следствие -пересечение её графика с осью абсцисс возможно только в одной единственной точке! Так какие корни надо здесь сначала отделить, а потом найти рядом численных методов -комплексные, что ли?
Так как левая часть уравнения -это полином третьей степени без критических точек, то начальным приближением, например, в ньютоновском методе касательных, может быть любое вещественное число. Да, кстати, ещё надо добавить, что для него, для этого метода, и отрезков никаких рассматривать не нужно -достаточно одного любого введённого действительного числа (брать которое лучше всё таки в разумных пределах !): итерационный процесс всё равно в конечном итоге приведёт к корню, вычисляемого с машинной точностью очень и очень быстро и хотя бы поэтому точность ε=0,001 выглядит очень неказистой, так что сразу можно на неё наплевать. А все другие методы в данном случае -это вообще просто чья-то блажь! Я ещё понимаю, когда сравниваются алгоритмы с точки зрения их эффективности, а тут даже и сравнивать нечего -настолько всё ясно! А теперь сам код на Си:
#include <stdio.h>
double f(double x)
{ return -12. + x * (12. - x * (3. - x)); }
int main() { int i, n; double x, step = 1e-4,
twostep = 2. * step; while (true)
{ printf("x n: "); scanf("%lf%d", &x, &n);
for (i = 1; i <= n; i++)
{ x -= f(x) * twostep / (f(x + step) - f(x - step));
printf("%3d%22.16f\n", i, x); } } }

Похожие вопросы
- Нужна помощь с выполнением заданий в C++
- Нужна помощь в составлении одномерных массивов С++
- C++.Нужна помощь в написании кода.
- Очень нужна помощь. нужен код на C. Задачка будет в описании.
- Нужна помощь с написанием кода на языке "С"
- Программисты, нужна помощь
- Мне нужна помощь с одной задачкой по c++.
- Нужна помощь по шаблонам на C++
- Добрый день. Нужна помощь в реализации динамических структур. Нужно написать дек с использованием malloc.
- Нужна помощь с задачей на С++