На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Метод Зейделя
    Братья спасайте строчно нужна прога :
    решение системы уравнений методом Зейделя,
    а самому пиать влом если есть у кого кинте на мыло
    please Заранее спасибо
      Тут есть, когда-то в инсте  по ЧМ писал

      //Метод наименьших квадратов
      #include <graphics.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <conio.h>
      #include <math.h>
      #include <iostream.h>
      #define n 20
      #define m 9
      double y[20]={5,6,8,10,12,13,12,10,8,10,8,11,7,9,11,10,9,12,11,6};
      double sum,f[m][m+1]={1,0.5,0.6666,0.5,0.3333,0.4};
      double a[m],old,tmp;
      int i,l,j;

      double mypow(double a, unsigned b)

      {
       if(!b) return 1;
       if(!a) return 0;
       double res = a;
       for(unsigned i=1;i<b;i++) res*=a;
       return res;
      };

      void show(void)
      {

      for(i=0;i<m;i++)
           {
           for(j=0;j<m+1;j++)
                 {
                   printf("\%13.2f",f[i][j]);
                 }
           cout<<endl;
           }
      }

      int main ()
      {

      for(i=0;i<m;i++)
           for(j=0;j<m;j++)
                 {
                       sum=0;
                       for(l=0;l<n;l++)
                             {
                                   sum+=mypow(l+1,j+i);
                             }
                       f[i][j]=sum/n;
                 }

      for(i=0;i<m;i++)
           {
                       sum=0;
                       for(l=0;l<n;l++)
                             {
                                   sum+=mypow(l+1,i)*y[l];
                             }
                       f[i][m]=sum/n;
           }

      show();

       // Метод Зейделя
       for(i=0;i<m;i++)
       {
            for(j=0;j<m+1;j++) if(i!=j) f[i][j] /= -f[i][i];
            f[i][i] = 0;
            f[i][m] = -f[i][m];
       };

       for(i=0;i<m;i++) a[i]=0;

       tmp = 1;
       old = 0;
       while(fabs(tmp-old)>0.0000001)
       {
            old = tmp;
            for(i=0;i<m;i++)
            {
                 a[i] = f[i][m];
                 for(j=0;j<m;j++) a[i] += f[i][j]*a[j];
            };
            tmp=0;
            for(i=0;i<m;i++) tmp+=a[i]*a[i];
            tmp = sqrt(tmp);
       };

                 for(j=0;j<m;j++)
                       cout <<a[j]<<"   "<<endl;
                 for(j=1;j<n+1;j++)
                 {
                             printf("\%3d \%3.0f ",j,y[j-1]);
                       for(double r=0;r<1;r+=0.2) {
                             sum=0;
                             for(i=0;i<m;i++) sum+=mypow(j+r,i)*a[i];
                             printf("\%6.1f",sum);
      //                        cout<<sum<<" ";

                       }
                       cout<<endl;
                 }
      getch();
      //show();
      int gdriver = DETECT, gmode, errorcode;
      int xmax, ymax;
      initgraph(&gdriver, &gmode, "ch_met\\");

                       setcolor(4);
                       line(0,400,640,400);
                       moveto(50+20,400-y[0]*20);
                       setcolor(3);
                 for(j=1;j<n+1;j++)
                 {
                       putpixel(50+j*20,400-y[j-1]*20,3);
      //                  lineto(50+j*20,400-y[j-1]*20);
                       for(double r=0;r<1;r+=0.05) {
                             sum=0;
                             for(i=0;i<m;i++) sum+=mypow(j+r,i)*a[i];
                             putpixel(50+(j+r)*20,400-20*sum,2);
                       }
                 }

      getch();
      closegraph();
      return 1;
      }
        Спасиба примерна это мне и надо было 8)
          достать бы ещё заголовочный файл graphics.h
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0.0893 ]   [ 15 queries used ]   [ Generated: 5.10.26, 23:33 GMT ]