Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Gorynychzmey
0 / 0 / 0
Регистрация: 30.10.2014
Сообщений: 25
1

Алгоритм аппроксимации табличной функции степенным регрессионным полиномом M-ного порядка

04.05.2015, 01:38. Просмотров 833. Ответов 0
Метки нет (Все метки)

1. Составить алгоритм аппроксимации табличной функции степенным регрессионным полиномом M-ного порядка,используя метод наименьших квадратов.
2. Разработать программу, реализующую предложенный алгоритм на языке C++.
3. С помощью программы определить порядок и коэффициенты регрессионного полинома, аппроксимирующего градуировочную таблицу с заданной степенью точности
4. Используя алгоритм схемы Горнера, разработать программу вычисления полученного степенного полинома.


Помогите, пожалуйста, найти ошибку в коде, я брал его на просторах сети.
Выдает ошибку "Declaration terminated incorrectly"- где-то нужна скобка?
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
 float step(float base,int k); // прототип функции
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
static int N,M;
static float x1,x2,ym,A[10];
 
{
  float X[10],Y[10];
  int i;
  M=StrToInt(InputBox("Введите степерь полинома","M=",""));
  N=StrToInt(InputBox("Введите число экспериментов","N=",""));
  for(i=0;i<N;i++) {
    StringGrid1->Cells[1][i+1]=InputBox("Введите","x[i]=","");
    StringGrid1->Cells[2][i+1]=InputBox("Введите","y[i]=","");
    X[i]=StrToFloat(StringGrid1->Cells[1][i+1]);
    Y[i]=StrToFloat(StringGrid1->Cells[2][i+1]);
    Series1->AddXY(X[i],Y[i],"",clRed);
    x2=Series1->MinXValue();
    x1=Series1->MaxXValue();
    ym=Series1->MaxYValue();
  }
}
//---------------------------------------------------------------------------
float step(float base,int k) // или прототип в хидер
{
  int i ;float p = 1;
  for(i=1;i<=k;++i)
    p*=base;
  return(p);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  int i,j,L;
  float x1[10][10],xT[10][10],C[10][10],x[10],x2[10],y[10],y1[10],A[10];
  float S,E;
  M++;
// block 1 ?
  for(i=0;i<N;i++) {
    for(j=0;j<M;j++) {
      x1[i][j]=step(x[i],j);
      xT[j][i]=x1[i][j];
      StringGrid1->Cells[j+3][i+1]=FloatToStr(x1[j][i]);
    }
  }
// end - block 1 ?
  L=M; // где используется L ?
// block 2 ?
  void umat(float z[10][10], float y[10][10],
            float g[10][10],int n3,int m3,int l) { // Declaration syntax error
    int i,j,k;
    float S;
    for (k=0; k<n3;k++)
      for ( j=0; j <l; j++) {
        g[k][j]=0;
        for(i=0;i<m3;i++)
          g[k][j]+= z[k][i]*y[i][j];
      }
  }
// end - block 2 ?
// block 3 ?
  for(i=0;i<M;i++) {
    S=0;
    for(j=0;j<N;j++) {
      S=S+xT[i][j]*y[j];
    }
    y1[i]=S;
  }
// end - block 3 ?
// block 4 ?
  void omat(float A[10][10],int N) {
    float s,r;
    int i,j,k;
    for(i=0;i<N;i++) {
      for(j=N;j<2*N;j++) {
        A[i][j]=0;
      }
      A[i][i+N]=1;
    }
    for(k=0;k<N;k++) { // beg
      s=A[k][k];j=k;
      for(i=k;i<N;i++) {
        r=A[i][k];
        if (fabs(r)>fabs(s)) {
          s=r;j=i;
        }
      }
      if(j!=k) {
        for (i=k-1;i<2*N;i++) {
          r=A[k][i];
          A[k][i]=A[j][i];A[j][i]=r;
        }
      }
      for(j=k+1;j<N*2;j++) {
        A[k][j]=A[k][j]/(s);
      }
      for(i=k+1;i<N;i++) {
        r=A[i][k];
        for(j=k+1;j<N*2;j++) {
          A[i][j]=A[i][j]-A[k][j]*r;
        }
      }
    } // end - for(k=0;k<N;k++) ?
    for(j=N;j<N*2;j++) {
      for(i=N-2;i>=0;i--) {
        s=A[i][j];
        for(k=i+1;k<N;k++) {
          s=s-A[k][j]*A[i][k];
        }
        A[i][j]=s;
      }
    }
  }
// end - block 4 ?
// block 5 ?
  for(i=0;i<M;i++) {
    S=0;
    for(j=M;j<2*M;j++) {
      S=S+C[i][j]*y1[j-M];
    }
    A[i]=S;
// beg void graf
    void graf(float A[10],float x1,float x2,float ym,int M) {
      Form1->Series2->Clear();
      float y,h;int N,j ;
      h=(x1-x2)/100;
// block 6 ?
      for(int i=1;i<=200;i++) {
        float y1=A[M-1];
        for(int j=M-2;j>=0;j--) {
          y=y1*x2+ A[j];
          y1=y;
        }
// Form1->Memo1->Lines->Add("yz="+FloatToStr(y)+"ym="+FloatToStr(ym)+"i="+IntToStr(i));
        if( y<ym) {
          Form1->Series2->AddXY(x2, y,"",clRed);
          x2=x2+h;
        }
      }
// end - block 6 ?
    } // end - void  graf(float A[10],float x1,float x2,float ym,int M) ?
  }
// end - block 5 ?
} // end - void __fastcall TForm1::Button3Click(TObject *Sender) ?
//---------------------------------------------------------------------------
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2015, 01:38
Ответы с готовыми решениями:

Алгоритм аппроксимации произвольной функции
прошу помочь написать программу

Решение функции методом Квадратичной аппроксимации и Фибоначчи
Помогите решить данную функцию методом квадратичной аппроксимации и Фибоначчи ...

Программа аппроксимации таблично заданной функции полиномом Ньютона
ПРОВЕРИТЬ , ПРАВИЛЬНО ЛИ НАПИСАНА ПРОГРАММА ? Программа должна :...

Найти параметры аппроксимации табличной функции
Помогите с заданием, необходимо аппроксимировать функцией вида

Интерполяция функции y(x) полиномом Ньютона 3-го порядка N3(x)
N3(x)=a0 + a1*(x-x0) + a2*(x-x0)(x-x1) + a3*(x-x0)(x-x1)(x-x2) Ребят с...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2015, 01:38

В следующих заданиях получить квадратную матрицу задан- ного порядка n
В следующих заданиях получить квадратную матрицу заданного порядка n. 1 0 0...

Алгоритм перевода 16-ного числа в 10-ное
Мне надо в делфи написать алгоритм перевода 16 числа в 10. Алгоритм ...

Интерполировать функцию полиномом Лагранжа 3-го порядка
Добрый день! помогите пожалуйста проверить, правильно ли получилось у меня?...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru