Форум программистов, компьютерный форум CyberForum.ru

Метод Ньютона - C++

Восстановить пароль Регистрация
 
Pain'ka
 Аватар для Pain'ka
1 / 1 / 0
Регистрация: 23.11.2011
Сообщений: 54
25.02.2012, 21:03     Метод Ньютона #1
Привет всем! Найти 3 корня методом Ньютона: f(x)=tan(2.2082*x) - 3.2258*x.
Вроде программу написала по алгоритму, но что то не так. Подскажите, что, пожалуйста!!!!
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
#include <math.h>
#include <iostream>
#include <stdio.h>
#define q 2.2082
#define w 3.2258
#define n  10
 using namespace std;
 
double f(double x) {
 
        return  sin(x*q)/cos(q*x)-w*x;
}
 
double f1(double x) {
 
        return   q/(cos(x)*cos(x))-w;
}
 
double f2(double x) {
 
        return  (2*q*sin(x))/(cos(x)*cos(x)*cos(x));
}
 
int main() {
        double a,b,c,h,x1,x2,eps = 0.0000001;
        cout<<"a="; cin>>a;// левый конец отрезка
        cout<<"b="; cin>>b;// правый конец отрезка
       
        h=(b-a)/n;
        for(int i=1;i<=10;i++){
            x1=a+h*(i-1);
            x2=a+h*i;
            
        
        if(f(x1)*f2(x1)>0) c=x1;
        else c=x2;
        do {
                c=c-f(c)/f1(c);
             
        }
        while (fabs(f(c))>=eps);
                //cout<<"c="<<c<<"\n";
                printf("%e \n",c);
                }
               
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2012, 21:03     Метод Ньютона
Посмотрите здесь:

C++ метод ньютона !
Метод Ньютона C++
C++ Метод Ньютона
Уравнение метод ньютона? C++
Метод Ньютона C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
9-loh
2 / 2 / 0
Регистрация: 18.12.2010
Сообщений: 31
25.02.2012, 21:14     Метод Ньютона #2
в интервале [a,b] точно есть корень?

нужна только одна производная(первая)
Том Ардер
Модератор
 Аватар для Том Ардер
3617 / 2236 / 271
Регистрация: 15.06.2009
Сообщений: 3,911
25.02.2012, 21:17     Метод Ньютона #3
Ошибки в производных:

Цитата Сообщение от Pain'ka Посмотреть сообщение
double f1(double x)
{
return q/(cos(x)*cos(x))-w;
}
double f2(double x)
{
return (2*q*sin(x))/(cos(x)*cos(x)*cos(x));
}
Аргумент у sin, cos д.б. qx
Pain'ka
 Аватар для Pain'ka
1 / 1 / 0
Регистрация: 23.11.2011
Сообщений: 54
25.02.2012, 21:25  [ТС]     Метод Ньютона #4
Цитата Сообщение от 9-loh Посмотреть сообщение
в интервале [a,b] точно есть корень?
нужна только одна производная(первая)
условие выбора идет по второй производной,
интервал надо как то подобрать, а как я не знаю, примерный график накидала и по нему выбирала

Добавлено через 1 минуту
Цитата Сообщение от Том Ардер Посмотреть сообщение
Аргумент у sin, cos д.б. qx
точно! спасибо!

Добавлено через 3 минуты
а в остальном правильно?
Yandex
Объявления
25.02.2012, 21:25     Метод Ньютона
Ответ Создать тему
Опции темы

Текущее время: 07:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru