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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Решить задачу с помощью метода сеток (численные методы) http://www.cyberforum.ru/cpp-beginners/thread529424.html
Добрый вечер!надо составить программу на С++,решив задачу с помощью метода сеток(численные методы) Пример: Du/dt=du*du/dx*dx,0<x<1,0<t<2 U(x,0)=sin(x),0<=x<=1 U(0,t)=0;u(1,t)=sin(1)*e exp(-t),0<=t<=2 Ответ:u(x,t)=sin(x)*e exp(-t).
C++ Компилирование программы на MAC Пытаюсь собрать krusader, выдает ошибку Building CXX object krusader/Dialogs/CMakeFiles/Dialogs.dir/checksumdlg.o /Users/hex/Downloads/krusader-2.4.0-beta1/krusader/Dialogs/checksumdlg.cpp:53:91: error: default arguments can only be specified for parameters in a function declaration ...const QString checksumFile, bool recursive, const QString& type = QString()); ... http://www.cyberforum.ru/cpp-beginners/thread529402.html
Установка Turbo C на windows 7 C++
Turbo C 2.01 именно.
C++ Игра в кости
Пользователь и компьютер бросают кубики, на бросок делается ставка(вводится с клавиатуры). Определить победителя и проигравшего, учесть возможность ничьей, за каждое выигранное очко победителю начисляется размер ставки, а у проигравшего отнимается, вывести сколько денег будет у каждого в конце игры, первоначало 100. Помогите решить задачу, только начинаю разбираться! Язык программирования С++!...
C++ Арифметические операции в консольном приложении http://www.cyberforum.ru/cpp-beginners/thread529375.html
program Project5; {$APPTYPE CONSOLE} uses SysUtils; Label 1; Var a,b,c,E,Fa,Fb,Fc:real; Lich:Integer;
C++ Классы и объекты в С++ помогите пожалуйста с программой Класс «Дата» должен включать поля данных: день, месяц, год; методы: вывод даты и времени года и перегруженные операции: добавление (+) к дате целого числа (количества дней), сравнение двух дат (< , >). подробнее

Показать сообщение отдельно
Happy_Gilmar
Сообщений: n/a
27.03.2012, 23:20     Вторая интерпол.ф-ла. Ньютона
Уважаемые форумчане
взгляните пожалуйста на творение и дайте пару советов по оптимизации
данного кода желательно наглядно))

Вычислить значение для 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;
         }

уже объединил в один цикл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru