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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 5.00
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
#1

Метод наименьших квадратов! (с Pascal на C++) - C++

22.05.2013, 21:28. Просмотров 5194. Ответов 10
Метки нет (Все метки)

Писал прогу на Паскале, так как не владею должными знаниями по С++ приходится просить помочь вас!!! Помогите перевести прогу написанную на Паскале в язык С++)) Пожалуйста!!!

Pascal
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
var
i,j,k,n,m           : integer ;
A                   : array [1..40,1..40] of real ;
B,X,Y,P             : array [1..20] of real ;
c,c1,F              : real ;
begin
writeln('Введите  размерность массива:');
read(n);
writeln('Введите  степень полинома:');
read(m);
writeln(' Введите массив X');
for i:=1 to n do
read(x[i]);
writeln(' Введите массив Y ');
for i:=1 to n do
read(y[i]);
for i:=1 to m+1 do begin
for j:=1 to m+1 do begin
A[i,j]:=0;
for k:=1 to n do
A[i,j]:=A[i,j]+exp((i+j-2)*ln((x[k]))) end;
A[i,m+2]:=0;
for k:=1 to n do
A[i,m+2]:=A[i,m+2]+y[k]*exp((i-1)*ln(x[k])) end;
for i:=1 to m+1 do begin  c:=A[i,i];
 for j:=1 to m+2 do
  A[i,j]:=A[i,j]/c;
 for k:= 1 to m+2 do
 if k<>i then begin
 C1:=A[k,i];
 for j:=1 to m+2 do
 A[k,j]:=A[k,j]-C1*A[i,j] end; end;
  writeln (  ' Параметры модели: '); 
   for i:=1 to m+1 do begin
   B[i]:=A[i,m+2];
   writeln ( i , ' –  ',  B[i]:6:4);   end;
writeln (  'Вычисленые значения для Р(х): '); 
F:=0;
for i:=1 to n do begin
P[i]:=0;
for k:=1 to m+1 do begin
P[i]:=P[i]+B[k]*exp((k-1)*ln(x[i])) end;
writeln ('P ', i ,'-ая  ', P[i]:6:4);
F:=F+((P[i]-Y[i])*(P[i]-Y[i]));end;
F:=SQRT(F/(n-1));
writeln('Среднеквадратичное отклонение =', F:6:4);
end.
Заранее Спасибо!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 21:28     Метод наименьших квадратов! (с Pascal на C++)
Посмотрите здесь:

Метод наименьших квадратов, решение системы Гауссом C++
C++ Подсчитать сумму квадратов четных и сумму квадратов нечетных чисел
Метод наименьших квадратов C++
C++ Портировать программу с графиком из Pascal в С++ (метод наименьших квадратов)
C++ Линейный Метод Наименьших Квадратов, ошибка в расчетах
МНК (Метод наименьших квадратов) C++
C++ Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 37
22.05.2013, 22:21     Метод наименьших квадратов! (с Pascal на C++) #2
Что значит
Pascal
1
writeln ('P ', i ,'-ая ', P[i]:6:4);
конкретно интересно :6:4?
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
22.05.2013, 22:32  [ТС]     Метод наименьших квадратов! (с Pascal на C++) #3
помоему я так полиномы определял))
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 37
22.05.2013, 22:34     Метод наименьших квадратов! (с Pascal на C++) #4
Pascal
1
2
for k:=1 to m+1 do begin
P[i]:=P[i]+B[k]*exp((k-1)*ln(x[i])) end;
В этом месте точно так? Ничего не пропущено? Потому что begin и end вместе)
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
22.05.2013, 22:40  [ТС]     Метод наименьших квадратов! (с Pascal на C++) #5
вроде на Паскале у меня прога работала правильно)) но если у тебя есть другие варианты выхода из этого спорного положения то смело подставляй))
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 37
22.05.2013, 22:41     Метод наименьших квадратов! (с Pascal на C++) #6
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
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int i,j,k,n,m;
    double A[40][40];
    double B[20], P[20];
    double c, c1, F;
    
    cout << "Vvedite razmernost massiva\n";
    cin >> n;
    cout << "Vvedite stepen polinoma\n";
    cin >> m;
    cout << "Vvedite massiv X\n";
    double *X = new double [n];
    double *Y = new double [n];
    for (i = 0; i < n; i++)
        cin >> X[i];
    cout << "Vvedite massiv Y\n";
    for (i = 0; i < n; i++)
        cin >> Y[i];
 
    for (i = 0; i < m; i++){
        for (j = 0; j < m; j++){
            A[i][j] = 0;
            for (k = 0; k < n; k++)
                A[i][j] = A[i][j] + exp((i+j)*log(X[k]));
        }
        A[i][m+2]=0;
        for (k = 0; k < n; k++)
            A[i][m+1] = A[i][m+1]+Y[k]*exp(i*log(X[k]));
    }
    for (i = 0; i < m; i++){
        c = A[i][i];
        for (j = 0; j < m+1; j++)
            A[i][j] = A[i][j]/c;
        for (k = 0; k < m+1; k++)
            if (k != i){
                c1 = A[k][i];
                for (j = 0; j < m+1; j++)
                    A[k][i] = A[k][j]- c1*A[i][j];
            }
    }
    cout << "Parametry modely: ";
    for (i = 1; i < m; i++){
        B[i] = A[i][m+1];
        cout << i << " - " << B[i]; //Я не понял что значат :6:4
    }
    cout << "\nVicheslennye znacheniya dlya P(x): ";
    F = 0;
    for (i = 0; i < n; i++){
        P[i] = 0;
        for (k = 0; k < m; k++)
            P[i] = P[i] + B[k]*exp(k+log(X[i]));
        cout << "P " << i << "-aya " << P[i];
    }
    F = F + (P[i] - Y[i])*(P[i] - Y[i]);
    F = sqrt(F/(n-1));
            cout << "\nSrednekvadratichnoye otklonenye =" << F;
    return 0;
}
Вышло как то так) Я несколько не понял, что должно было получится, но что-то получилось) Проверь и скажи, если результаты не сходятся)
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
22.05.2013, 22:50  [ТС]     Метод наименьших квадратов! (с Pascal на C++) #7
там должно было получиться так)) сумму полиномов делим на их кол-во и получаем среднеарифметическую))

Добавлено через 42 секунды
там в проге которую ты написал полиномы определяются?))
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 37
22.05.2013, 23:02     Метод наименьших квадратов! (с Pascal на C++) #8
Гм... Ну.. Откровенно говоря.. С этим методом я раньше не сталкивался ( 1 курс еще))) Попробуй запусти проги на паскале и на с++) Если будет одинаковый результат - тыкай спасибку) Если нет - завтра с универа приду и посмотрю)) А пока что спокойной ночи))
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
23.05.2013, 18:36  [ТС]     Метод наименьших квадратов! (с Pascal на C++) #9
Цитата Сообщение от kondor1995 Посмотреть сообщение
cout << "Vvedite massiv X\n";
* * double *X = new double [n];
* * double *Y = new double [n];
* * for (i = 0; i < n; i++)
* * * * cin >> X[i];
она тут встревает....

Добавлено через 2 минуты
тебе конечно огромное спасибо что откликнулся))!!! Спасибо что не поленился))и помог))

Добавлено через 19 часов 29 минут
Есть у кого еще какие варианты сделать эту программу?
Juliastep
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 4
13.04.2015, 21:55     Метод наименьших квадратов! (с Pascal на C++) #10
А может кто-нибудь пожалуйста помочь эту программку на язык фортрана перевести?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2015, 22:03     Метод наименьших квадратов! (с Pascal на C++)
Еще ссылки по теме:

Метод наименьших квадратов C++
Метод наименьших квадратов C++
C++ Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++)
C++ Подсчитать сумму квадратов четных и сумму квадратов нечетных элементов массива
Линейная аппроксимация: метод наименьших квадратов (МНК) C++

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

Или воспользуйтесь поиском по форуму:
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 371
Завершенные тесты: 2
13.04.2015, 22:03     Метод наименьших квадратов! (с Pascal на C++) #11
Цитата Сообщение от kondor1995 Посмотреть сообщение
конкретно интересно :6:4?
вроде указывает кол-во ширины для вывода, либо кол-во знаков после запятой
Yandex
Объявления
13.04.2015, 22:03     Метод наименьших квадратов! (с Pascal на C++)
Ответ Создать тему
Опции темы

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