Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Happy_Gilmar
1

Вторая интерпол.ф-ла. Ньютона

27.03.2012, 23:20. Показов 547. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые форумчане
взгляните пожалуйста на творение и дайте пару советов по оптимизации
данного кода желательно наглядно))

Вычислить значение для 550 с помощью второй интер.ф-лы.Ньютона
Таблица 1
x 300 400 500 600
Y 52.88 65.61 78.07 99.24

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
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <locale.h>
#include <math.h>
using namespace std;
int factorial (int f);
 
int   main ()
{
    setlocale(LC_CTYPE,"Russian");
    
            float X[]={ 300,400,500,600 };
            float Y[]={52.88,65.61,78.07,99.24};
            
            int n=3;
 
    
            float testX;
            cout<<"Вводим проверяемый Х\n";
            cin>>testX;
            if(testX>X[3]||testX<X[0])
            {cout<<"Недопустимое значение\n";return 0;}
 
 
        float ** razn= new float *[n+n+1]; /*создание динамического массива для таблицы конечных разностей
                                          [n+n+1]столько у нас строк в таблице*/
        int k=0;
        for (int i=0;i<=n;++i)
        {
                razn[i] = new float [n+1+k];
                --k;// выделяем память для каждой строки определенное кол столбцов [n+n+1+k] 
                //к- уменьшает число столбцов в строчке на 1, т.к.
                //таблица разностей имеет диагональный вид
        }
        for ( int i=0;i<=n;++i)// заполняем нулевой столбец массива значениями функции в узлах
        {
                razn [i][0]=Y[i];
                cout<<razn[i][0]<<" "<<endl;
        }
        cout<<endl<<"----------------"<<endl;
        int r=n;
 
        for (int j=1;j<=n+n;++j)
        {
                for(int i=0;i<r;++i)
                {
                        int s=-i;
                        razn[i][j]=razn[-(s-1)][j-1]-razn[i][j-1];//получаем таблицу разностей
                        cout<<"r[ "<<i<<"][ "<<j<<"]"<<razn[i][j]<<" "<<endl;
                }
                cout<<endl<<"----------------"<<endl;
                r--;//это чтобы уменьшать число столбцов, в строке, приводить к диагональному виду таблицу разности
               if(r==0)break; 
        }
 
float sum,sum1,sum3,sum2;
float st=X[1]-X[0];
 
float *q = new float;
float tmp=1;
 
sum=Y[n];int p=1,u=n;
for(int i=0;i<=n;i++)
 
    {
            q[i]=(testX-X[u]);
            tmp*=q[i];
            sum1=razn[u-1][i+1]*tmp;
            sum2=pow(st,p)*factorial(p);
            sum3=sum1/sum2;
            sum=sum+sum3;
            cout<<"sum= "<<sum<<"\n";
            p++;u--;
            if(u-1<0)break;//чтобы не выйти за границы таблицы конечн.разностей
    }   
 
    cout<<"Результата вычислений Р("<<testX<<")= "<<sum<<endl;
    return 0;
}
    
int factorial (int f)
{
int product = 1;
while (f> 0) {product = f *product;f--;}
return product;
}
Добавлено через 24 минуты
инклуд иострим всем в печень

Добавлено через 22 минуты
Ну помощники..................

Добавлено через 1 час 34 минуты
на коднет люди активнее(((((

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i=0;i<=n;++i)
         {
                 razn[i] = new float [n+1+k];
                 --k;// выделяем память для каждой строки определенное кол столбцов [n+n+1+k] 
                 //к- уменьшает число столбцов в строчке на 1, т.к.
                 //таблица разностей имеет диагональный вид
         }
         for ( int i=0;i<=n;++i)// заполняем нулевой столбец массива значениями функции в узлах
         {
                 razn [i][0]=Y[i];
                 cout<<razn[i][0]<<" "<<endl;
         }

уже объединил в один цикл
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2012, 23:20
Ответы с готовыми решениями:

Интерпол будет использовать ПО Microsoft для сбора электронных доказательств
Интерпол планирует распространить и использовать специализированное аналитическое программное...

Есть строка определенной длины. Вторая строка меньше первой. Найти точку в которой вторая строка входит в первую
Условие: Есть строка определенной длины. Вторая строка меньше первой. Найти точку в которой...

Решение систем нелинейных уравнений – методы простой итерации, Ньютона, Ньютона-Рафсона
Помогите пожалуйста, ибо я совсем не знающая Mathcad, он мне в принципе не нужен, так как...

Решение систем нелинейных уравнений – методы простой итерации, Ньютона, Ньютона-Рафсона
Здравствуйте ребята! попыталась сама решить в MatCad уравнение, смотрела ваши примеры.. никак не...

0
27.03.2012, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2012, 23:20
Помогаю со студенческими работами здесь

Произвести интерполяцию для вольт-амперной характеристики транзистора методом Ньютона(полином Ньютона)
Напряжение на стоке, В|0|10|20|30|40|50 Ток стока, А|0,00|2,95|4,00|4,45|4,50|4,70 Текст...

Вторая видеокарта
Здравствуйте я в этом деле новичок, я бы хотел купить на свой комп вторую видеокарту и незнаю...

Вторая производная
Подскажите, пожалуйста, правильно ли понимаю. Пускай f(x1, ..., xn) - функция. Тогда её вторая...

Вторая половина
Она брела по огромному ночному городу одна... Одна всегда одна. Она понимала, что нельзя так...

Вторая оперативка
На старый комп хочу доставить 1 гб оперативной памяти, слот свободный есть. Вопрос следующий: Если...

Вторая производная
Проблема такая: У меня есть функция y=f(a,b,c) нужно вычислить вторую производную в точке d:...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru