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

не могу понять почему ответ всегда нулевой

28.05.2013, 16:29. Просмотров 346. Ответов 0
Метки нет (Все метки)

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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#include <stdio.h>
#include <conio.h>
#include <math.h>
void gauss(int mm,int n,float e[n+1][n+1],float r[n+1][n+1]);
void slag(int mm,int n,float f[n+1]);
int main()
{
int n,m,k,i,j,a,i1,i2;
int n1;
float s0=0.0;
float r1=0;
i1=0.0; i2=0.0;
printf("\nPodbor zavisimosti metodom naimenshih kvadratov\n");
printf("\nVvedite chislo uzlov 1<m<100:\n");
scanf("%d", &m); 
printf("\nVvedite stepen polinoma 1<=n<=m:\n");
scanf("%d", &n); 
printf("\nVvedite kluch approksimacii 1 or 2:\n");
scanf("%d", &a); 
float x[m];
float y[m];
float r[n+1][n+1];
float f[n+1];
float e[n+1][n+1];
float q[n+1];
/*float d[m];*/
 
for (i=0;i<m;i++)
{       
printf("\nVvedite znacheniya x\n");      //ввод исходных данных
scanf("%f", &x[i]); 
printf("\nVvedite znacheniya y\n");
scanf("%f", &f[i]); 
}
n1=n+1;
 for (i=0;i<n1;i++)
    {
         for (j=0;j<n1;j++)
         {
              r[i][j]=0;
              f[i]=0; 
         }
    }
    
for (i=0;i<n1;i++)
{
  for (k=0;k<n1;k++)
       {
          for (j=0;j<m;j++)
           {
              if (a==2) 
                slag(m,n,f);
              else
              {
               f[1]=1;
               for (i1=2;i1<n1;i1++)
               {
                 i2=i1-1; 
                 f[i1]=f[i2]*x[j];
               }
               r1+=f[k]*f[i];
               if (k==1)
                 s0+=y[j]*f[i];
              }
              }
            
        r[i][k]=r1;
        }
    /*d[i]=s0; */
}
 
 
for (i=0;i<n1;i++)
{
    for (j=0;j<n1;j++)
    {
      f[i]=q[i];
      float w=0.0; int k1;
    float s[n+1][n+1];
    //прямой ход:
    n1=n+1; k1=k+1;
    for (k=0; k<m; k++)
    {
        s[i][j]=e[k][k];
    }
    for (j=k1; j<n1; j++)
    {
        e[k][j]=(r[k][j])/(s[i][j]);
        for (i=k1; i<m; i++)
        {
            w=e[i][k];
            for (j=k1; j<n1; j++)
            {
                e[i][j]=e[i][j]-e[k][j]*w;
            }
        }
        /*
        //обратный ход:
        for (i=0; i<m; i++)
        {
            s[i][j]=e[i][n1];
            for (j=i+1; i<m; j++)
            {
                s[i][j]-=e[i][j]*r[i][j];
                r[i][j]=s[i][j];
            }
        }*/
    }
      /*gauss(m,n,e,r); */
    }
}
 
for (i=0;i<n1;i++)
{
    q[i]=0;
    for (j=0;j<n1;j++)
    {
    
     q[i]+=e[i][j]*f[j]; //вычисление массива коэффициентов аппроксимации
     }
}
 
for (i=0;i<n1;i++)
    {
      f[i]=0;
    }
s0=0.0;
for (i=0;i<m;i++) //вычисление среднеквадратической погрешности
{
   if (a==2)
       slag(m,n,f);
   else
   {
       r1=q[n1];
       for (j=0;j<n;j++)
       {
          r1*=x[i]*q[j];
        }
        s0+=(y[i]-r1)*(y[i]-r1);
   }
    for (j=0;j<n1;j++)
    {
        r1+=q[j]*f[j];
    }
     s0+=(y[i]-r1)*(y[i]-r1);
}
 
s0=sqrt(s0)/m;
 
printf("\nKoeeficinti:");
for (i=0;i<n1;i++)
{
 printf("\n%5.3f", q[i]);
}
 printf("\nPogreshnost%f", s0);
 return 0;
} 
/*
void gauss(int mm,int n,float e[n+1][n+1],float r[n+1][n+1]) //вычисление обратной матрицы
{
    int i,j,k,l,k1,n1;
    float w=0.0;
    float s[n+1][n+1];
    //прямой ход:
    n1=n+1;
    for (k=0; k<mm; k++)
    {
        k1=k+1;
        s[i][j]=e[k][k];
    }
    for (j=k1; j<n1; j++)
    {
        e[k][j]=(r[k][j])/(s[i][j]);
        for (i=k1; i<mm; i++)
        {
            w=e[i][k];
            for (j=k1; j<n1; j++)
            {
                e[i][j]=e[i][j]-e[k][j]*w;
            }
        }
        //обратный ход:
        for (i=0; i<mm; i++)
        {
            s[i][j]=e[i][n1];
            for (j=i+1; i<mm; j++)
            {
                s[i][j]-=e[i][j]*r[i][j];
                r[i][j]=s[i][j];
            }
        }
    }
}
*/
void slag(int mm,int n,float f[n+1])
{
    float x;
    f[1]=1;
        f[2]=sin(x);
        f[3]=cos(x);
        f[4]=sin(2*x);
        f[5]=cos(2*x);
    
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 16:29
Ответы с готовыми решениями:

Почему при выполнении программы всегда получается нулевой вектор и DOMAIN error?
Ввести вектор цілих чисел. Виконати нормування елементів цього вектора, розділивши кожен з них на...

Ребята .не могу понять почему не переносит один массив в другой ? ничего не выводит.С
/*Используя два указателя на массив целых чисел, скопировать один массив в другой. Использовать в...

Не могу понять, почему всегда выводится 0
Парни, помогите разобраться, почему в Edit1 всегда выводится 0. Хотя там должно быть число... Вот...

Почему в приведенном коде всегда первым отрицательным элементом является нулевой элемент
Я туплю и не понимаю почему он всегда первым отрицательным элементом берёт нулевой элемент....

Не могу понять чего выдает всегда 0
int n = 0; char str1 = &quot;Текст текст текст Фиксатор текст текст текст&quot;; for(int i...

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

Не могу понять ошибку .Не выводит ответ задачи
#include &lt;iostream&gt; using namespace std; int main () { setlocale (LC_ALL,&quot; &quot;); int...

Не могу понять почему не могу считать символьный ряд через cin.getline
Не могу понять почему не могу считать символьный ряд через cin.getline.Помогите позязя. #define ...

Не могу понять, почему программа работает неправильно( Знаю, что где-то ошибки, но не могу найти
{Ввести последовательность натуральных чисел Aj j=1...n (n&lt;=1000). Упорядочить последовательность...


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

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

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