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

Метод Гаусса для решения СЛАУ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Error C4703: используется потенциально неинициализированная локальная переменная-указатель http://www.cyberforum.ru/cpp-beginners/thread1729522.html
#include <iostream> #include <cstdlib> using namespace std; class BinarySearchTree { private: struct tree_node { tree_node* left;
C++ Индексация элементов массива Всем привет! Есть следующий код: const double c = { // particle velocities {0, 0}, // zero {1, 0}, {0, 1}, // east, north {-1, 0}, {0, -1}, // west, south {1, 1}, {-1, 1}, // north-east, north-west {-1, -1}, {1, -1} // south-west, south-east }; http://www.cyberforum.ru/cpp-beginners/thread1729506.html
C++ Недопустимый неполный тип, не могу найти ошибку
#include<iostream> #include<locale> #include<string> #include<iomanip> #include<fstream> void Poisk_1(), Poisk_2(), Poisk_3(), Poisk_4(); using namespace std;
Что сделать, чтобы математический парсер заработал? C++
#include "stdafx.h" #ifndef PARSER_H_INCLUDED #define PARSER_H_INCLUDED #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <math.h> #include <iostream>
C++ Создание потоков http://www.cyberforum.ru/cpp-beginners/thread1729413.html
Нужно создать несколько потоков, используя библиотеку pthread. Программу написал и вроде все работает, но если запускать несколько раз подряд вылезает ошибка "Не удалось получить идентификатор подчинённого процесса: Параметр задан неверно." Подскажите в чем проблема. #include <pthread.h> #include <QVector> void* msg(void *n); int main() { const unsigned int MaxSize = 10;
C++ Перестали запускаться консольные приложения Сегодня открываю QtCreator, создаю консольное приложение, что-то там пишу, нажимаю F5. Build завершился, запускается отладчик - и тут начались проблемы. Отладчик почему-то запускаться не пожелал, открыв лишь окно консоли с мигающим в нем курсором. Окей, создал проект helloworld, то же самое(( Попробовал в Code::Blocks - опять то же самое. Попробовал скомпилировать helloworld через командную... подробнее

Показать сообщение отдельно
AutumnTrees
0 / 0 / 0
Регистрация: 08.05.2016
Сообщений: 2

Метод Гаусса для решения СЛАУ - C++

08.05.2016, 10:48. Просмотров 400. Ответов 2
Метки (Все метки)

Здравствуйте! У меня есть алгоритм решения СЛАУ методом Гаусса, но почему-то он не работает((( Я проверил промежуточные матрицы, все ОК! И корни правильно вычисляет (по правильным формулам т. е.), но... результат неверный. Можете посмотреть, пожалуйста?

На самом деле это лаб. работа по методу аппроксимации методом наименьших квадратов. Но проблема именно в решении СЛАУ, содержащем коэффициенты при х, а не в ее составлении, я проверил. Посмотрите, если нетрудно:
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
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
 
int main ()
{
    const int n = 5;
    double x[n], y[n], A[3][3], b[3], p[3], ai0, a21;
    int i, j, k;
 
    cout << "Vvedite pari x, y:\n";
    for (i = 0; i < n; i++)
        cin >> x[i] >> y[i];
 
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++) {
            A[i][j] = 0;
            for (k = 0; k < n; k++)
                A[i][j] += pow(x[k], i+j);
        }
 
    for (i = 0; i < 3; i++) {
        b[i] = 0;
        for (j = 0; j < n; j++)
            b[i] += y[j]*pow(x[j],i);
    }
 
    cout << "\nMatrica A:\n";
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++)
            cout << setw(16) << A[i][j];
        cout << setw(16) << b[i];
        cout << endl;
    }
 
    for (i = 1; i < 3; i++) {
        ai0 = A[i][0];
        for (j = 0; j < 3; j++)
            A[i][j] -= ai0*A[0][j]/A[0][0];
        b[i] -= ai0*b[0]/A[0][0];
    }
 
    a21 = A[2][1];
    A[2][1] -= a21*A[1][1]/A[1][1];
    A[2][2] -= a21*A[1][2]/A[1][1];
    b[2] -= a21*b[1]/A[1][1];
 
    p[2] = b[2]/A[2][2];
    p[1] = (b[1]-A[1][2]*x[2])/A[1][1];
    p[0] = (b[0]-A[0][2]*x[2]-A[0][1]*x[1])/A[0][0];
 
    cout << "\nY = " << p[2] << "*X^2  +  " << p[1] << "*X  +  " << p[0] << endl;
 
    return 0;
}
Еще спросить хотел: какая разница между аппроксимацией и интерполяцией?
Я так понял, что при интерполяции данные точки обязательно входят в сам график, а при аппроксимации дается характер функции и ищется наиболее подходящий график, не обязательно проходящий через заданные точки. Я правильно понял???
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru