Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Решение СНАУ методом Ньютона, исходник программы 
V
    Опции темы
Tinysik
  Дата 25.5.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



подскажите кто знает. smile 
необходимо решить пример x^3+2x^2+3x+5=0 задав точность e=0,001
 
вот код программы:


#include <iostream.h>
#include <math.h>
double Nuton(double*p,int n,double*x,double X)
{
    double s=p[n-1];
    for(int i=n-2;i>=0;i--) s=p[i]+(X-x[i])*s;
    return s;
}
void Nuton1(double*x,double*y,int n,double*p)
{
    for(int j=0;j<n-1;j++) {
        p[j]=(y[j+1]-y[j])/(x[j+1]-x[j]);
//        cout<<p[j]<<"\t";
    }
//    cout<<"\n";
    int m=n-1;
    int l=2;
    int k;
    for(int i=n-2;i>=1;i--)
    {
        k=0;
        for(j=1;j<=i;j++) 
        {
            p[m]=(p[m-i]-p[m-i-1])/(x[k+l]-x[k]);
//          cout<<p[m]<<"\t";
            m++;
            k++;
        }
//        cout<<"\n";
    l++;
    }
    j=0;
    for(i=1;i<n;i++)
    {
        y[i]=p[j];
        j=j+(n-i);
    }

}
void main()
{
    int const n=5,N=(n-1)*n/2;
    double x[]={1,2,3,4};
    double y[n];
    for(int i=0; i<n; i++) y[i]=pow(x[i],3)+2*pow(x[i],2)+3*x[i]+5;
    double *p=new double[N];
    Nuton1(x,y,n,p);
    //for (i=0;i<n;i++) cout<<y[i]<<'\t';
    double z=-2;
    cout<<Nuton(y,n,x,z)<<'\t'<<pow(z,3)+2*pow(z,2)+3*z+5<<'\n';
    
}




программа все считает,но в коде нужно  прописать эту точность е=0,001.   как это сделать?





PM MAIL   Вверх
bronislav
Дата 25.5.2008, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Тебе надо считать разницу между предидушим решением и текущим и когда она будет меньше заданной точности (в товем случае 0.001) - решение найдено.


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
maxim1000
Дата 25.5.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



Цитата(bronislav @  25.5.2008,  21:01 Найти цитируемый пост)
Тебе надо считать разницу между предидушим решением и текущим

совсем необязательно последовательность может и медленно сходиться

для начала нужно определиться, какая точность имеется в виду
1. точность равенства функции нулю - тогда просто сравниваем модуль значения полинома с точностью
2. точность решения: тут нужно попробовать оценить расстояние до настоящего решения
во втором слуаче нужно детальнее изучать функцию



--------------------
qqq
PM WWW   Вверх
Tinysik
  Дата 25.5.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



эййй..ну вы чего? все не так сложно.

просто код расчитан был как тестовый.

я подставила туда пример.   теперь только необходимо,чтобы он считался с заданной точностью
PM MAIL   Вверх
bronislav
Дата 26.5.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Цитата(Tinysik @  25.5.2008,  20:52 Найти цитируемый пост)
просто код расчитан был как тестовый.

Ну теперь напиши другой код

Если сегодня будет время напишу.


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Ziggyrat
Дата 11.4.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.4.2009
Где: Омск

Репутация: нет
Всего: нет



Код

//Mh Dihotomii
#include "stdafx.h"
#include <math.h>
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
   

     double  a=-5,b=5,d=0,E,Za=0,u,Zd=0;
    cout<<"================================================================================\n"<<'\n';
     cout<<"f(x)=x^3+2x^2+3x+5"<<'\n'<<'\n';
     cout<<"Vozmсm tochnostм  ravny E=";
     cin>>E;
        cout<<'\n'<<'\n';
    
          
     do
     {
             d=(a+b)/2;
          
             Zd=(d*d*d+2*d*d+3*d+5);
            

             Za=(a*a*a+2*a*a+3*a+5);
            

             if(Zd*Za>0) 
             {
                 a=d;
             }
          
             else 
             {
                 b=d;
             }
          
             
     }
     while(  (d*d*d+2*d*d+3*d+5)>E || ( (b-a)>E ) );  
          
     cout<<"Korenм yravnenue x="<<d<<'\n'<<'\n'<<'\n'<<'\n';
     
     cout<<"================================================================================\n"<<'\n';
     cin>>u;
}
   



Это сообщение отредактировал(а) Ziggyrat - 11.4.2009, 19:00
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1131 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.