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

как написать этот алгоритм? - C++

Восстановить пароль Регистрация
 
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
06.02.2012, 06:56     как написать этот алгоритм? #1
нужно написать эту маленькую программу на C++ 6.00
Миниатюры
как написать этот алгоритм?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
06.02.2012, 07:44  [ТС]     как написать этот алгоритм? #2
*****************

h=1/n;
*****************
дробь не поставил.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
06.02.2012, 08:26     как написать этот алгоритм? #3
Так у Вас там алгоритм уже написан.

Заведите массивы для альфа, бета и у длинной n элементов
и в цикле их пересчитайте по указанным формулам.
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
06.02.2012, 08:36  [ТС]     как написать этот алгоритм? #4
если честно, то это трудно для меня. 1 семестр опыта на с++ и он не дает результата
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.02.2012, 08:44     как написать этот алгоритм? #5
Для такой фигни опыт вообще не нужен, можно за день изучить операторы и этого уже хватит. У меня студенты на первой практике по лазарусу синусоиду чертят, а на второй графический криворедактор пишут, азы же обоих языков имеют одинаковую сложность.
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
06.02.2012, 09:05  [ТС]     как написать этот алгоритм? #6
если кому не лень может поможете пожалуйста
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
06.02.2012, 09:45     как написать этот алгоритм? #7
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
#define _USE_MATH_DEFINES
#include <math.h>
void main()
{
    const int n=21;
    double h=1./n;
    double x=1.5;
    double alfa[n],beta[n],y[n],A[n],B[n],C[n],F[n];
    C[0]=1;B[0]=F[0]=A[0]=0;
    C[n-1]=1;B[n-1]=F[n-1]=A[n-1]=0;
    for(int i=1;i<n-1;i++)
    {
        A[i]=1./(h*h);
        B[i]=A[i];
        C[i]=2./(h*h);
        F[i]=4.*M_PI*M_PI*sin(2.*M_PI*x);
    }
    alfa[1]=B[0]/C[0];
    beta[1]=F[0]/C[0];
    for(int i=1;i<n-1;i++)
    {
        alfa[i+1]=B[i]/(C[i]-alfa[i]*A[i]);
        beta[i+1]=(F[i]+A[i]*beta[i])/(C[i]-alfa[i]*A[i]);
    }
    y[n-1]=(F[n-1]+A[n-1]*alfa[n-1])/(C[n-1]-alfa[n-1]*A[n-1]);
    for(int i=n-2;i>0;i--)
        y[i]=alfa[i+1]*y[i+1]+beta[i+1];
}
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
06.02.2012, 10:41  [ТС]     как написать этот алгоритм? #8
но ошибки выдает попытаюсь поправить

Добавлено через 49 минут
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
#define _USE_MATH_DEFINES
#include <math.h>
void main()
{
    const int n=20;
    double h=1./n;
    double x=1.5;
    double M_PI=3.14;
    double alfa[n],beta[n],y[n],A[n],B[n],C[n],F[n];
    C[0]=1;B[0]=F[0]=A[0]=0;
    C[n-1]=1;B[n-1]=F[n-1]=A[n-1]=0;
    for(int i=1;i<n-1;i++)
    {
        A[i]=1./(h*h);
        B[i]=A[i];
        C[i]=2./(h*h);
        F[i]=4.*M_PI*M_PI*sin(2.*M_PI*x);
    }
    alfa[1]=B[0]/C[0];
    beta[1]=F[0]/C[0];
    for(int j=1;j<n-1;j++)
    {
        alfa[j+1]=B[j]/(C[j]-alfa[j]*A[i]);
        beta[j+1]=(F[j]+A[j]*beta[j])/(C[j]-alfa[j]*A[j]);
    }
    y[n-1]=(F[n-1]+A[n-1]*alfa[n-1])/(C[n-1]-alfa[n-1]*A[n-1]);
    for(int k=n-2;k>0;k--)
        y[k]=alfa[k+1]*y[k+1]+beta[k+1];
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
06.02.2012, 12:37     как написать этот алгоритм? #9
1. M_PI определена в math.h,
строка
#define _USE_MATH_DEFINES
разрешает ее использование.
2. Чисел в массиве n+1 шт.(т.е. 21), т.к. отсчет начинается с нулевого.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
06.02.2012, 12:59     как написать этот алгоритм? #10
Цитата Сообщение от zss2 Посмотреть сообщение
1. M_PI определена в math.h,
строка
#define _USE_MATH_DEFINES
разрешает ее использование.
2. Чисел в массиве n+1 шт.(т.е. 21), т.к. отсчет начинается с нулевого.
как 21????
вы строкой const int N = 20 задаете 20 элементов, а не 21!!!
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
06.02.2012, 13:48     как написать этот алгоритм? #11
Цитата Сообщение от panicwassano Посмотреть сообщение
как 21????
вы строкой const int N = 20 задаете 20 элементов, а не 21!!!
Я то как раз задаю n=21,
это автор поста изменил на 20, вот я его и предупредил.
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
07.02.2012, 05:47  [ТС]     как написать этот алгоритм? #12
вот ниже код если кому нужно

Добавлено через 55 секунд
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
#include <stdio.h>
#include <math.h>
void main()
{
    const int MAX=101;
    const int n=100;
    double h=1./n;
    double x=1.5;
    double M_PI=3.1415926;
    double alfa[MAX],beta[MAX],y[MAX],A[MAX],B[MAX],C[MAX],F[MAX];
     C[0]=1; B[0]=0; F[0]=0;
     C[n]=1; F[n]=0; A[n]=0;
    for(int i=1;i<=n-1;i++)
    {   x=i*h; 
        A[i]=1./(h*h);
        B[i]=A[i];
        C[i]=2./(h*h);
        F[i]=4.*M_PI*M_PI*sin(2.*M_PI*x);
    }
    alfa[1]=B[0]/C[0];
    beta[1]=F[0]/C[0];
//  printf("alfa[%i]=%0.4lf | beta[%i]=%0.4lf\n",1,alfa[1],1,beta[1]);
    for(int j=1;j<=n-1;j++)
  
    {
        alfa[j+1]=B[j]/(C[j]-alfa[j]*A[j]);
        beta[j+1]=(F[j]+A[j]*beta[j])/(C[j]-alfa[j]*A[j]);
//      printf("alfa[%i]=%0.4lf | beta[%i]=%0.4lf\n",j+1,alfa[j+1],j+1,beta[j+1]);
    }
    y[n]=(F[n]+A[n]*alfa[n])/(C[n]-alfa[n]*A[n]);
//    printf("y[%i]=%0.4lf\n",n-1,y[n-1]);
    for(int k=n-1; k>=0;k--)
    
    {
     y[k]=alfa[k+1]*y[k+1]+beta[k+1];
     printf("%8.4lf",y[k]);
    }
 printf("\n");
    for(int k=n-1;k>=0;k--) printf("%8.4lf",sin(2*M_PI*k*h));
 
}
Добавлено через 6 минут
можно оказца задать и по больше тогда точнее будет результат
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
13.02.2012, 12:45  [ТС]     как написать этот алгоритм? #13
zss2, здраствуйте можете помочь? матричную прогонку не могу написать
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
13.02.2012, 19:36     как написать этот алгоритм? #14
Цитата Сообщение от andreev Посмотреть сообщение
zss2, здраствуйте можете помочь? матричную прогонку не могу написать
Поставьте задачу корректно.
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
14.02.2012, 04:48  [ТС]     как написать этот алгоритм? #15
вот то что пытался
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
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <math.h>
 
void main()
{
    int n;
    int matrix;
    const int i=4;
    double A[n],B[n],C[n],U[n],F[n],V[n],T[n],M[n],rou[n],P[n],delta[n],g[n];
    m=M; x=0;
    p=P; x=L;
    
    for(int i=1;i<=n-1;i++)
    {   
        A[i]*U[i-1]-C[i]*U[i]+B[i]*U[i+1]=-F[i];
        B[0]*U[1]-C[0]*U[0]=-F[0];
        A[n]*U[n-1]C[n]*U[n]=-F[n];
    }
  //    printf("-Fi[%i]=%0.4lf | -F0[%i]=%0.4lf | -Fn[%i]=%0.4lf\n",1,-F[i],1,-F[0],1,-F[n]);
    for(int j=1;j<=n-1;j++)
 
    {
        U[i]={M[i]/P[i]};
    
        A[i]={T*((V[i]-C[i])/2*h),T*((V[i]+C)/2*h)},-T*((V[i]*V[i]-C[i]*C[i])/((C[i]*C[i])*(2*h))),-T*(((V[i]*V[i])-(C*C))/((C*C)*(2*h)))};
 
        B[0]={T/n*(V[0]-C[0]),0,-(((V[0]*V[0])-(C*C))/(C*C))*T/n,0};
 
        F[0]={-rou*(g+(delta/20)*V(V),M};
 
        A[n]={(T/n)*(V[n]+C[n]),0,-(((V[n]*V[n])-(C*C))/C*C)*T/n,0};
 
        C[n]={1,0,-(V+C)/(C*C),1};
 
        F[n]={-rou*(g+(delta/20),P};
 
        U[i]={M[i],P[i]};
 
        A[i]={T*((V[i]-C[i])/(2*h)),T*((V[i]+C)/(2*h)),-T*(((V[i]*V[i])-(C[i]*C[i]))/((C[i]*C[i])*(2*h)),-T*(((V[i]*C[i])-(C*C))/((C*C)*(2*h))};
 
        B[i]={T*((V[i]-C)/(2*h)),T*((V+C)/(2*h)),-T*((V*V-C*C)/((C*C)*(2*h)),-T*((V*V-C*C)/(C*C*(2*h))};
 
        C[i]={1,1,-((V+C)/(C*C)),-((V-C)/(C*C))};
 
        C[0]={1,1,-((V+C)/(C*C)),0};
    }
{
 
((m[0]-m[0])/T)+(V[0]-C[0])*((m[1]-m[0])/n)-((V+C)/(C*C))*(((p[0]-p[0])/T)+(V-C)*((p[1]-p[0])/n)))=F[0];
 
((m[n]-m[n]/T)+(V[n]+C[n])*((m[n]-m[n])/n)-((V-C)/(C*C))*(((p[n]-p[n])/T)+(V+C)*((p[n]-p[n-1])/n)))=F[n];
 
for(int j=0;j<n-1;j++)
getch ();
}
Миниатюры
как написать этот алгоритм?  
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
14.02.2012, 04:53  [ТС]     как написать этот алгоритм? #16
задание вот в миниатюрах
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
14.02.2012, 12:40     как написать этот алгоритм? #17
С точки зрения синтаксиса Вы написали сплошную чепуху.
А это странно, поскольку ранее Вами же приведена корректная программа.
Сделайте для начала примерно также.
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
14.02.2012, 15:18  [ТС]     как написать этот алгоритм? #18
в том то и дело что мне это не под силу. избранные кажись разбираються в этом.или те кто с ранних лет пишут

Добавлено через 2 минуты
а вы профессор наук или преподаватель?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
14.02.2012, 20:15     как написать этот алгоритм? #19
Вот смотрите, например, в предыдущей программе Вы правильно писали
C++
1
2
3
4
const int MAX=101;
const int n=100;
... 
int i;
а сейчас вдруг стало
C++
1
2
3
int n;
...
const int i=4;
С чего бы такие изменения?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 06:08     как написать этот алгоритм?
Еще ссылки по теме:

C++ Надо написать программу на while или do while и написать алгоритм
Можно ли написать этот код более компактно? C++
Как написать алгоритм? C++

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

Или воспользуйтесь поиском по форуму:
andreev
 Аватар для andreev
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 43
15.02.2012, 06:08  [ТС]     как написать этот алгоритм? #20
ну думал в трехдиоганальной матрице это так.

а щас поправил.
нужно кажись всю прогу переделывать(
тупо как неизвестно что найти что задано
Yandex
Объявления
15.02.2012, 06:08     как написать этот алгоритм?
Ответ Создать тему
Опции темы

Текущее время: 05:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru