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

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

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

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

22.05.2013, 21:28. Просмотров 5756. Ответов 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.
Заранее Спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод наименьших квадратов! (с Pascal на C++) (C++):

Портировать программу с графиком из Pascal в С++ (метод наименьших квадратов) - C++
имеется код программы , которая реализует метод наименьших квадратов и строит графики. Может ли кто-то переписать код под С++ или ...

Метод наименьших квадратов - C++
В коде реализован метод наименьших квадратов. Помогите переделать в метод полиномов Чебышева. #include &lt;tchar.h&gt; #include &lt;iostream&gt;...

Метод наименьших квадратов - C++
Ребят,вот в чем беда. нужно для курсового решить задачу. нужно апроксимировать данные линейной зависимостью y=ax+b. В ручную все уже...

Метод наименьших квадратов - C++
Можете около сложных строчек написать что там происходит(комментарии) #include &quot;stdafx.h&quot; #include &lt;tchar.h&gt; #include &lt;iostream&gt; ...

МНК (Метод наименьших квадратов) - C++
Помогите с реализацией аппроксимации МНК. Есть экспериментальные данные, хочу аппроксимировать их МНК. Не хочу использовать мат пакеты,...

Метод наименьших квадратов/лаба 3 - аппроксимация/ С++ - C++
Добрый день! Помогите исправить неисправность программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; ...

10
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 39
22.05.2013, 22:21 #2
Что значит
Pascal
1
writeln ('P ', i ,'-ая ', P[i]:6:4);
конкретно интересно :6:4?
0
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
22.05.2013, 22:32  [ТС] #3
помоему я так полиномы определял))
0
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 39
22.05.2013, 22:34 #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 вместе)
0
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
22.05.2013, 22:40  [ТС] #5
вроде на Паскале у меня прога работала правильно)) но если у тебя есть другие варианты выхода из этого спорного положения то смело подставляй))
0
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 39
22.05.2013, 22:41 #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;
}
Вышло как то так) Я несколько не понял, что должно было получится, но что-то получилось) Проверь и скажи, если результаты не сходятся)
0
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
22.05.2013, 22:50  [ТС] #7
там должно было получиться так)) сумму полиномов делим на их кол-во и получаем среднеарифметическую))

Добавлено через 42 секунды
там в проге которую ты написал полиномы определяются?))
0
kondor1995
2 / 2 / 0
Регистрация: 21.05.2013
Сообщений: 39
22.05.2013, 23:02 #8
Гм... Ну.. Откровенно говоря.. С этим методом я раньше не сталкивался ( 1 курс еще))) Попробуй запусти проги на паскале и на с++) Если будет одинаковый результат - тыкай спасибку) Если нет - завтра с универа приду и посмотрю)) А пока что спокойной ночи))
0
Gellentwagen
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 5
23.05.2013, 18:36  [ТС] #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 минут
Есть у кого еще какие варианты сделать эту программу?
0
Juliastep
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 4
13.04.2015, 21:55 #10
А может кто-нибудь пожалуйста помочь эту программку на язык фортрана перевести?
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
13.04.2015, 22:03 #11
Цитата Сообщение от kondor1995 Посмотреть сообщение
конкретно интересно :6:4?
вроде указывает кол-во ширины для вывода, либо кол-во знаков после запятой
0
13.04.2015, 22:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2015, 22:03
Привет! Вот еще темы с ответами:

Линейный Метод Наименьших Квадратов, ошибка в расчетах - C++
Разработка программы аппроксимации табличной функции степенным рядом( линейный метод наименьших квадратов). использование глобальных...

Метод наименьших квадратов, решение системы Гауссом - C++
подскажите, пожалуйста, где ошибка. матрицу Грамма вычисляю правильно, а вот когда после вычисления прямого хода гаусса, пытаюсь вывести...

Линейная аппроксимация: метод наименьших квадратов (МНК) - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; // Задание начального набора значений double **...

Метод Рауз-Болла построения магических квадратов N-ого порядка - C++
Здравствуйте! Занялся проблемой построения всех возможных магических квадратов N-ого порядка. Пока работаю над N = 3 и N = 4. Для N = 3 -...


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

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

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