Обусловленность матрицы
Министерство образования и науки российской федерации
Федеральное агентство по образованию
Новосибирский государственный технический университет
Бердский филиал
Расчетно-графическая работа
по курсу: ВлВычислительная математикаВ»
Выполнила:
Студентка II курса
Булгакова Н.
Группы ВТБ-81
Проверил:
Преподаватель
Голубева Елена Николаевна
г. 362964Бердск,
2010
Задание 1 Обусловленность матрицы
Задание: Дана системаВа уравнений ax=b порядка n. Исследовать зависимость погрешности решения x от погрешностей правой части системы b.
погрешность уравнение координата интерполяция дифференциальный
1. Задать матрицу системы A и вектор правой части b, найти решение x системы Ax=b с помощью метода Гаусса.
2. Принимая решение x, полученное в п.1, за точное,Ва вычислить вектор
относительных погрешностей решений Васистем ,где компоненты векторов Вавычисляются по формулам:
(-произвольная величина погрешности).
3. На основе вычисленного вектора dВа построить гистограмму. По гистограмме определить компоненту Ва, вектора b, которая оказывает наибольшее влияние на погрешность решения.
4. Вычислить число обусловленности cond(A) матрицы A.
5. Оценить теоретически погрешность решения Вапо формуле:
Сравнить значение Васо значением практической погрешности ВаОбъяснить полученные результаты.
Решение
1. Задаём матрицу А.
Для заполнения используем код программы zapolnenie.cpp (см. приложение)
#include
#include
#include
#include
#include
#include
main()
{
ВаВаВаВаВаВаВаВа double matr[100][100];
ВаВаВаВаВаВаВаВа for (int i=1;i<7;i++)
{
ВаВаВаВаВаВаВаВаВаВаВа for (int j=1;j<7;j++)
ВаВаВаВаВаВаВаВа ВаВа matr[i][j]= 1000/(3*(pow(0.1*21*i*j,2))+pow(0.1*21*i*j,3));
}
ВаВаВаВаВаВаВаВа for ( int j=1;j<7;j++)
{
ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа for ( int i=1;i<7;i++)
printf("%10.4f",matr[j][i]);
printf("\n");
}
ВаВа getchar();
}
Результат работы zapolnenie:
Найдем решение полученной матрицы используя программу gauss.cpp (см приложение)
ИсходныйВа кодВаВа gauss.cpp:
#include
#include
#include
#include
#include
#include
const int sz=6;
double A[sz][sz]={
ВаВаВаВаВаВаВаВаВаВаВа {44.4622,ВаВаВа 7.8735,ВаВаВа 2.7092,ВаВаВа 1.2432,ВаВаВа 0.6719,ВаВаВаВа 0.4038},
ВаВаВаВаВаВаВаВаВаВаВаВа {7.8735,ВаВаВа 1.2432,ВаВаВа 0.4038,ВаВаВа 0.1789,ВаВаВа 0.0945,ВаВаВаВа 0.0558},
ВаВаВаВаВаВаВаВаВаВаВаВа {2.7092,ВаВаВа 0.4038,ВаВаВа 0.1278,ВаВаВа 0.0558,ВаВаВа 0.0292,ВаВаВаВа 0.0172},
ВаВаВаВаВаВаВаВаВаВаВаВа {1.2432,ВаВаВа 0.1789,ВаВаВа 0.0558,ВаВаВа 0.0242,ВаВаВа 0.0126,ВаВаВаВа 0.0074},
ВаВаВаВаВаВаВаВаВаВаВаВа {0.6719,ВаВаВа 0.0945,ВаВаВа 0.0292,ВаВаВа 0.0126,ВаВаВа 0.0065,ВаВаВаВа 0.0038},
ВаВаВаВаВаВаВаВаВаВаВаВа {0.4038,ВаВаВа 0.0558,ВаВаВа 0.0172,ВаВаВа 0.0074,ВаВаВа 0.0038,ВаВаВаВа 0.0022}
ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа ВаВа }ВаВаВа ;
doubleВа F[sz]={21.00,21.00,21.00,21.00,21.00,21.00} ;
doubleВа X[sz];
doubleВа b[sz+1],par;
//ВаВа функция вывода матрицы на экран
void Viv(double A[sz][sz])
{
int i,j;
for( i=0;i { ВаВаВаВаВаВаВаВа for( j=0;j ВаВа printf(" %.4fВа ",A[i][j]); //вывод на экрам исходной матрицы с заданным количеством знаков после запятой (5f) ВаВа printf(" %.4fВа ",F[i]); ВаВа cout< } Ваsystem("pause"); } ///////////////Ва функция решения методом ГауссаВа void Resh(double A[sz][sz],double F[sz],double X[sz]) { int i,j,k; Ваfor (k=0;k ВаВаВаВаВаВаВаВа { ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа // проверяем первый элемент ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа if (A[k][k]==0) //проверка на неноль ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа { ВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа for (i=k;A[i][k]==0;i++);ВаВаВаВаВа // находим ненулевой 1й элемент ВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа for(j=k;j ВаВаВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа { ВаВаВаВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа par=A[k][j];ВаВаВа //смена строк в матрице ВаВаВаВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа A[k][j]=A[i][j]; //путем записи в par и извлечения из него ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа A[i][j]=par; ВаВаВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа } ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа par=F[k]; // смена строкВа в ответе ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа F[k]=F[i]; ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа F[i]=par; ВаВа ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа } ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа // получаем 1й элемент единицуВаВа (делим всю первую строку на a1,1Ва ) ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа par=A[k][k]; //пишем в par первый элемент ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа for(int i=k;i ВаВаВаВаВаВаВаВа A[k][i]=A[k][i]/par; ВаВаВаВаВаВаВаВа F[k]=F[k]/par;ВаВаВаВаВа // делим ответ на 1й ВаВаВаВаВа // нулевой столбец ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа for(int j=k+1;j ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа { ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа for(int i=k;i ВаВаВаВаВаВаВаВаВаВаВаВаВаВа b[i]=A[k][i]*A[j][k]; ВаВаВаВаВаВаВаВаВаВаВаВаВаВа b[sz]= F[k]*A[j][k]; ВаВаВаВаВаВаВаВаВаВаВаВа ВаВаВаВаВа for(int i=k;i ВаВаВаВаВаВаВаВаВаВаВаВаВаВа A[j][i]-=b[i]; ВаВаВаВаВаВаВаВаВаВаВаВаВаВа F[j]-=b[sz]; ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа } ВаВаВаВаВаВаВаВа } Ваfor(i=sz-1;i>=0;i--) //обратка ВаВаВаВаВаВаВаВа { ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа par=0; ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа forВаВаВаВа (j=0;j ВаВаВаВаВа par+=A[i][sz-j-1]*X[sz-1-j]; ВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВаВа X[i]=F[i]-par; ВаВаВаВаВаВаВаВа } } //функция - точка входа в программу void main() { Ва Viv(A);Ва ВаВаВаВаВаВаВаВаВаВаВа // выводим матрицу Ва Resh(A,F,X);ВаВа // решаем матрицу A методом Гаусса Ва for(int i=0;i Ваsystem("pause"); } Результат работы gauss: ==================================================== точное ==================================================== 44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 21.0000 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 21.0000 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 21.0000 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 21.0000 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038ВаВа 21.0000 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022ВаВа 21.0000 Для продолжения нажмите любую клавишу . . . X[0]= 872.15582 X[1]= -16329.24792 X[2]= 10011.59140 X[3]= 111650.80126 X[4]= -26697.87796 X[5]= -144076.29603 Для продолжения нажмите любую клавишу . . . ====================================================== 2. Вычисляем векторВа d. Величина погрешности, вносимой в правую часть системы тАУВа 1%. Сформируем векторы b (по заданному закону) Для каждого из них найдем решение матрицы, используя gauss С погрешностью в тАж. компоненте ====================================================== в первой ====================================================== Ва44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 20.7900 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 21.0000 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 21.0000 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 21.0000 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038ВаВа 21.0000 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022ВаВа 21.0000 Для продолжения нажмите любую клавишу . . . X[0]= 872.07580 X[1]= -16327.25169 X[2]= 10005.24500 X[3]= 111652.84781 X[4]= -26679.82743 X[5]= -144100.68447 Для продолжения нажмите любую клавишу . . . ====================================================== во второй ====================================================== Ва44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 21.0000 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 20.7900 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 21.0000 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 21.0000 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038ВаВа 21.0000 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022ВаВа 21.0000 Для продолжения нажмите любую клавишу . . . X[0]= 874.15205 X[1]= -16398.19981 X[2]= 10378.69292 X[3]= 111250.49388 X[4]= -27254.14851 X[5]= -143256.57148 Для продолжения нажмите любую клавишу . . . ====================================================== в третьей ====================================================== Ва44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 21.0000 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 21.0000 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 20.7900 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 21.0000 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038Ва Ва21.0000 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022ВаВа 21.0000 Для продолжения нажмите любую клавишу . . . X[0]= 865.80942 X[1]= -15962.14640 X[2]= 7652.50187 X[3]= 114149.98680 X[4]= -23271.06118 X[5]= -148104.07985 Для продолжения нажмите любую клавишу . . . ====================================================== в четвёртой ====================================================== Ва44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 21.0000 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 21.0000 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 21.0000 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 20.7900 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038ВаВа 21.0000 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022Ва Ва21.0000 Для продолжения нажмите любую клавишу . . . X[0]= 874.20237 X[1]= -16729.55530 X[2]= 12510.77695 X[3]= 111600.37766 X[4]= -35532.05319 X[5]= -138409.12992 Для продолжения нажмите любую клавишу . . . ====================================================== в пятой ====================================================== Ва44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 21.0000 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 21.0000 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 21.0000 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 21.0000 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038ВаВа 20.7900 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022ВаВа 21.0000 Для продолжения нажмите любую клавишу . . . X[0]= 890.20635 X[1]= -16885.51847 X[2]= 13438.40819 X[3]= 102816.62603 X[4]= -16375.93145 X[5]= -148185.68530 Для продолжения нажмите любую клавишу . . . ====================================================== в шестой ===================================================== Ва44.4622ВаВа 7.8735ВаВа 2.7092ВаВа 1.2432ВаВа 0.6719ВаВа 0.4038ВаВа 21.0000 Ва7.8735ВаВа 1.2432ВаВа 0.4038ВаВа 0.1789ВаВа 0.0945ВаВа 0.0558ВаВа 21.0000 Ва2.7092ВаВа 0.4038ВаВа 0.1278ВаВа 0.0558ВаВа 0.0292ВаВа 0.0172ВаВа 21.0000 Ва1.2432ВаВа 0.1789ВаВа 0.0558ВаВа 0.0242ВаВа 0.0126ВаВа 0.0074ВаВа 21.0000 Ва0.6719ВаВа 0.0945ВаВа 0.0292ВаВа 0.0126ВаВа 0.0065ВаВа 0.0038ВаВа 21.0000 Ва0.4038ВаВа 0.0558ВаВа 0.0172ВаВа 0.0074ВаВа 0.0038ВаВа 0.0022ВаВа 20.7900 Для продолжения нажмите любую клавишу . . . X[0]= 847.76738 X[1]= -15509.52337 X[2]= 5983.80758 X[3]= 117317.96737 X[4]= -30807.26724 X[5]= -140960.86219 Для продолжения нажмите любую клавишу . . . Вместе с этим смотрят: РЖнварiантнi пiдпростори. Власнi вектори i власнi значення лiнiйного оператора Автокорреляционная функция. Примеры расчётов Актуальные проблемы квантовой механики Алгебра и алгебраические системыb1 b2 b3 b4 b5 b6 20,79 21 21 21 21 21 21 20,79 21 21 21 21 21 21 20,79 21 21 21 21 21 21 20,79 21 21 21 21 21 21 20,79 21 21 21 21 21 21 20,79