Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97

Найти точно все корни уравнения указанными методами

10.02.2015, 21:52. Показов 3346. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найдены точно все корни уравнения указанными методами. Проведено сравнение результатов и методов.

Методы:
1) Метод Ньютона (Касательных)
2) Метод Стеффенсена

Уравнения:
Найти все точки пересечения графиков y(x)=ctg(x) и https://www.cyberforum.ru/cgi-bin/latex.cgi?{\left(\frac{y}{5} \right)}^{2} + {\left(\frac{x}{1.5\pi } \right)}^{2}=1 для положительных x, c точностью https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{-6}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2015, 21:52
Ответы с готовыми решениями:

Найти корни уравнения различными методами
Форумчане кто поможет с заданием или хотя бы примерами. Задание: Найти наименьший корень уравнения {x}^{5}-x-0.2=0 Найти...

Уточнить корни уравнения разными методами
Уточнить корни уравнения методом хорд, касательных, комбинированным методом хорд и касательных, методом простых итераций. И в каждом методе...

Найти все корни уравнения
х^3+0.77х^2-0/2513х+0.016995=0

20
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
10.02.2015, 22:03
Точно найти в принципе невозможно.
Можно найти с некоторой заданной точностью.
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
11.02.2015, 09:17  [ТС]
zss, с точностью https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{-6}
То есть с 0.000001
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
11.02.2015, 09:41
1. Подставьте ctg(x) вместо y во второе уравнение.
2.Приведите уравнение к виду x=f(x) перенеся множитель с ctg в правую часть.
3. Решайте методом итераций.
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
11.02.2015, 10:44  [ТС]
zss, к сожалению вся проблема именно в этом, я не знаю данный метод, искал по форому, видел кодировку, но там немного не то, да и сам я не очень понял(простите, что такой, я все же не программист и знаний у меня не так много). У меня все же тут 2 метода, как я понимаю все эти два метода нужно написать в одной программе. Вы не сможете мне помочь по кодированию на C++?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
11.02.2015, 11:28
Посмотрите вот этот материал.
Вложение 488624
Там ближе к концу рассмотрены методы решения уравнения.
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
11.02.2015, 20:29  [ТС]
zss, спасибо, алгоритм я более менее понял, но вопрос остается в коде на C++. Как будет выглядить данный алгоритм в написании С++?
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
12.02.2015, 11:21  [ТС]
zss, помогите,пожалуйста, написать программу

Добавлено через 12 часов 46 минут
Подьем

Добавлено через 28 секунд
Нужна программа на с++
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
12.02.2015, 18:04
Что не устроило в приведенных примерах.
Сделайте хотя бы одним методом и выложите сюда, обсудим, что не получается.
Например, возьмите код из поста
Отыскать все корни нелинейного уравнения f(x) = 0 с точностью до 10^-3
и замените в нем f(x) на Вашу функцию.
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
15.02.2015, 23:25  [ТС]
zss,пожалуйста, проверьте. И да, я подставил другие формулы, ибо если ставить свои, то он ругается. Попробуйте сами, может быть я что-то путаю и не так записываю формулу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <cmath>
using namespace std;
 
 
double F1(double x)
{
return 1/tan(1.01*x)-x*x;
}
 
double F2(double x)
{
return -1/(sin(1.01*x)*sin(1.01*x))-2*x;
}
 
void MN(double x, double h, double mf(double x), double dmf(double x))
{
int n=0;
double y, a=0.001;
 
while (fabs(mf(x)>h))
{
n++;
x=x-a*mf(x)/dmf(x);
}
cout << "X=" << x << '\t';
cout << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
void MSEC(double x, double h, double mf(double x))
{
int n=0;
double y, a=0.001, k;
k=x;
x=0.06;
y=a*mf(x);
while (fabs(mf(x)>h))
{
n++;
x=x-(x-k)*y/(y-mf(k));
}
cout << "X=" << x << '\t' << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
void Pr_Iter(double x, double h, double mf(double x))
{
int n=0;
double y, a=0.0001;
 
while (fabs(mf(x)>h))
{
n++;
x=x+a*mf(x);
}
cout << "X=" << x << '\t' << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
int main(void)
{
    cout << "Metod Nutona:\n";
    MN(0.05, 0.000001, F1, F2);
    cout << "\n";
    
    MN(3.2, 0.000001, F1, F2);
    cout << "\n";
// MN(6.1, 0.000001, F1, F2);
// printf("\n");
// MN(9.3, 0.000001, F1, F2);
// printf("\n");
 
 
cout << "Metod sekushih:\n";
MSEC(0.05, 0.000001, F1);
cout << "\n";
 
// MSEC(3.1, 0.000001, F1);
// printf("\n");
// MSEC(0.05, 0.000001, F1);
// printf("\n");
// MSEC(0.05, 0.000001, F1);
// printf("\n");
 
 
cout << "Prostye iteratsyy:\n";
Pr_Iter(0.05, 0.000001, F1);
cout << "\n";
 
Pr_Iter(3.2, 0.000001, F1);
cout << "\n";
 
// Pr_Iter(6.15, 0.000001, F1);
// printf("\n");
// Pr_Iter(9.0, 0.000001, F1);
// printf("\n");
return 0;
}
Добавлено через 57 минут
zss, правильно?

Добавлено через 4 часа 19 минут
zss, я написал метод ньютона и другие методы, но метод Стеффенсена я не могу найти нормальный.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <cmath>
using namespace std;
 
 
double F1(double x)//уравнение
{
return (1/(tan(x)))-5*sqrt(1-pow((x/(1.5*3.14)),2));
}
 
double F2(double x)//производная 
{
return ((-1/pow(sin(x),2))+((23.55*x)/(104.487111*sqrt(1-pow((x/(1.5*3.14)),2)))));
}
 
void MN(double x, double h, double mf(double x), double dmf(double x))
{
int n=0;
double y, a=0.001;
 
while (fabs(mf(x)>h))
{
n++;
x=x-a*mf(x)/dmf(x);
}
cout << "X=" << x << '\t';
cout << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
void MSEC(double x, double h, double mf(double x))
{
int n=0;
double y, a=0.001, k;
k=x;
x=0.06;
y=a*mf(x);
while (fabs(mf(x)>h))
{
n++;
x=x-(x-k)*y/(y-mf(k));
}
cout << "X=" << x << '\t' << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
void Pr_Iter(double x, double h, double mf(double x))
{
int n=0;
double y, a=0.0001;
 
while (fabs(mf(x)>h))
{
n++;
x=x+a*mf(x);
}
cout << "X=" << x << '\t' << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
int main(void)
{
    cout << "Metod Nutona:\n";
    MN(0.05, 0.000001, F1, F2);
    cout << "\n";
    
    MN(3.2, 0.000001, F1, F2);
    cout << "\n";
 
 
 
cout << "Metod sekushih:\n";
MSEC(0.05, 0.000001, F1);
cout << "\n";
 
 
 
 
cout << "Prostye iteratsyy:\n";
Pr_Iter(0.05, 0.000001, F1);
cout << "\n";
 
Pr_Iter(3.2, 0.000001, F1);
cout << "\n";
 
 
return 0;
}
Добавлено через 34 секунды
zss, к тому же я подставил те самые нужные уравнения
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
16.02.2015, 07:28
метод Стеффенсена
https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{n+1}={x}_{n}-\frac{f({x}_{n})}{f({x}_{n}+f({x}_{n}))-f({x}_{n})}f({x}_{n})
1
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
06.03.2015, 00:19  [ТС]
zss, Здравствуйте, не поверите, но я до сих пор не могу разобраться с методом стеффенсена, точнее правильно ли он работает, формулу, вроде, указал, как вы написали. Радует, что корни при втором значении подборки значений выходят положительными! Можете пожалуйста проверить правильность написания программы?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <cmath>
using namespace std;
 
 
double F1(double x)
{
return (sin(x));
}
 
 
 
void MS(double x, double h, double mf(double x))
{
int n=0,d;
double y, a=0.001;
 
while (fabs(mf(x))>h && n<20)
{
n++;
d=(x+mf(x));
x=x-(mf(x)*mf(x)/mf(d)-mf(x));
}
cout << "X=" << x << '\t';
cout << "n=" << n << endl;
y=mf(x);
cout << "y=" << y << '\n';
}
 
 
int main(void)
{
cout << "Metod Stefensena:\n";
    MS(0.05, 0.000001, F1);
    cout << "\n";
    
    MS(3.2, 0.000001, F1);
    cout << "\n";
 
return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
06.03.2015, 07:35
Цитата Сообщение от qwen1234 Посмотреть сообщение
x=x-(mf(x)*mf(x)/mf(d)-mf(x));
Со скобками напутали.
C++
1
2
3
double t=mf(x);
d=mf(x+t);
x-=t*t /(d-t);
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
06.03.2015, 12:19  [ТС]
zss, спасибо, но у меня возник другой вопрос, а как можно проверить работает ли данный способ верно?
Какое условие задать для проверки? И как ее лучше реализовать?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
06.03.2015, 12:25
Цитата Сообщение от qwen1234 Посмотреть сообщение
fabs(mf(x))>h
Означает что значение функции в этой точке достаточно близко к нулю.
Это называется "Невязка".
Еще можете вычислять "Погрешность" запоминая на каждом шаге старое значение x
C++
1
2
3
4
5
6
do
{
   xold=x;
... 
  x=...
}while (fabs(mf(x))>h && n<20 &&  fabs(x-old)>h);
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
06.03.2015, 12:58  [ТС]
zss, у вас там опечатка, вроде.
(fabs(mf(x))>h && n<20 && fabs(x-old)>h);

C++
1
(fabs(mf(x))>h && n<20 &&  fabs(x-xold)>h);
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
06.03.2015, 13:13
qwen1234,
А где опечатка?
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
06.03.2015, 13:21  [ТС]
zss, fabs(x-old)>h вот тут разве не должно быть fabs(x-xold)>h

x-xold должно же быть, а не x-old
Или я ошмбаюсь?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
06.03.2015, 13:55
Аааа, теперь разглядел!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2015, 13:55
Помогаю со студенческими работами здесь

Найти все корни уравнения f (x)
Для заданной функции y = f (x) графическим способом отделить корни, т.е. указать числовые интервалы, на которых находится ровно один корень...

Найти все корни уравнения
Всем привет. Помогите пожалуйста с этим заданием Это нужно сделать на подобии этого

Найти все корни уравнения
Строил график уравнения (x-3)*cosx=1 и искал его корни. Но отображается почему-то только один корень. x0=-10:0.01:10; b =...

Найти все корни уравнения
Здравствуйте, можете помочь мне с решением задачи: Найти все корни уравнения x^n=1+i для натуральных n&gt;1. Решение численными методами...

Найти все корни уравнения
Подскажите, пож-та, как найти все корни уравнения: x=5(1 +0.5*cos(x)) При использовании Solved находится только один, хотя их тут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru