Министерствообразования и науки российской федерации
Федеральноеагентство по образованию
Новосибирскийгосударственный технический университет
Бердскийфилиал
Расчетно-графическаяработа
по курсу: «Вычислительная математика»
Выполнила:
Студентка 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()
{
doublematr[100][100];
for(int i=1;i
{
for (int j=1;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
{
for( int i=1;i
printf("%10.4f",matr[j][i]);
printf("\n");
}
getchar();
}
Результат работы zapolnenie:
/> />
Найдем решение полученнойматрицы используя программу gauss.cpp(см приложение)
Исходный код gauss.cpp:
#include
#include
#include
#include
#include
#include
const intsz=6;
doubleA[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»);
}
/////////////// функциярешения методом Гаусса
voidResh(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(intj=k+1;j
{
for(inti=k;i
b[i]=A[k][i]*A[j][k];
b[sz]= F[k]*A[j][k];
for(inti=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 (по заданному закону)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
Для каждого из них найдемрешение матрицы, используя 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
Дляпродолжения нажмите любую клавишу… .
На основе полученныхзначений сформируем вектор d РЕШЕНИЯ С ПОГРЕШНОСТЯМИ точное в первой во втророй в третьей в четвёртой в пятой в шестой 872,1558 872,0758 874,1521 865,8094 874,2024 890,2064 847,7674 -16329,2479 -16327,2517 -16398,1998 -15962,1464 -16729,5553 -16885,5185 -15509,5234 10011,5914 10005,2450 10378,6929 7652,5019 12510,7770 13438,4082 5983,8076 111650,8013 111652,8478 111250,4939 114149,9868 111600,3777 102816,6260 117317,9674 -26697,8780 -26679,8274 -27254,1485 -23271,0612 -35532,0532 -16375,9315 -30807,2672 -144076,2960 -144100,6845 -143256,5715 -148104,0799 -138409,1299 -148185,6853 -140960,8622 x-xi ||x|| 0,0800 1,9962 6,3464 2,0466 18,0505 24,3884 111650,8013 1,9962 68,9519 367,1015 400,3074 556,2705 819,7245 6,3464 367,1015 2359,0895 2499,1856 3426,8168 4027,7838 2,0466 400,3074 2499,1855 50,4236 8834,1752 5667,1661 18,0505 556,2705 3426,8168 8834,1752 10321,9465 4109,3893 24,3884 819,7245 4027,7838 5667,1661 4109,3893 3115,4338 ||x-xi|| i:1…6 d 24,3884 0,000218435 819,7245 0,00734186 4027,7838 0,036074831 8834,1752 0,079123259 10321,9465 0,092448477 5667,1661 0,050757953
(см. файл «Вектор игистограмма.xls»)
Отсюда видим, что
/>
Строим гистограммуэлементов вектора относительных погрешностейd. (см. файл «Вектор и гистограмма»)
/>
По гистограмме видно,что наибольшее влияние на погрешность решения оказывает компонента /> вектора/>.
Найдемчислообусловленности /> матрицы A
Числообусловленности матрицы Aвычисляется по формуле
/>
Норма матрицы A: />=57,3638
Норма обратной матрицы />: />=129841,19
/>7448184,055
Теоретическаяоценка погрешности
/>
/>
/>
/>
Так как /> то матрица плохообусловлена, это значит, что незначительные изменения в правой части приведут кбольшой погрешности в решении.Задача 2 Метод хорд
Методом хорд найти кореньуравнения /> сточностью />.
Решение
Найдем интервал, вкотором находится корень:
/>
Корнем уравнения являетсяточка пересечения этих функций
/>
Из графика видно, чтокорень лежит в интервале />.
Найдем неподвижный конец:
/>
/>
Для определенияиспользуем horda.xls(см. приложение)y(a) -0,5 y(b) 0,493147 непод y'(a) 1,5 y'(b) 0,66 1 y''(a) -1,75 y''(b) -0,426
Неподвижный конец -1
Выполняем приближение,используя horda.xlsХ х0 1 2 xi F(xi) sigma 1,50345005 0,1010481 else 1,41881012 0,0179259 else 1,40431471 0,0030870 else 1,40183381 0,0005288 else 1,40140927 0,0000905 else 1,40133662 0,0000155 else 1,40132419 0,0000027 and
Окончание процесса – при />, это и есть нашкорень.Задача3 Решение СЛАУ
Решить систему уравнений ax=b, где
/>
Вычислить точностныеоценки методов по координатам: />, /> — координаты численного решения, /> - координатыточного решения.
/>
1. Метод простыхитераций
Сделаем расчет, используяSLAU.xlsх1 0,7500 -0,7500 -0,3333 -0,4375 -0,7708 0,7500 х2 1,0000 -0,3750 -0,4444 -0,5833 -0,4028 1,0000 1 х3 0,6667 -0,2500 -0,6667 -0,8750 -1,1250 0,6667 х4 1,7500 -0,1875 -0,5000 -0,5000 0,5625 1,7500 х1 0,7500 0,3021 0,5625 -0,1406 1,4740 -0,7708 х2 1,0000 0,3854 0,7500 -0,1875 1,9479 -0,4028 2 х3 0,6667 0,2569 0,2685 -0,2813 0,9109 -1,1250 х4 1,7500 0,1927 0,2014 0,8438 2,9879 0,5625 х1 0,7500 -1,4609 -0,4555 -0,7470 -1,9134 1,4740 х2 1,0000 -0,7370 -0,6073 -0,9960 -1,3402 1,9479 3 х3 0,6667 -0,4913 -1,2986 -1,4940 -2,6172 0,9109 х4 1,7500 -0,3685 -0,9740 -0,6832 -0,2756 2,9879 х1 0,7500 1,0052 1,3086 0,0689 3,1327 -1,9134 х2 1,0000 0,9567 1,7448 0,0919 3,7934 -1,3402 4 х3 0,6667 0,6378 0,8935 0,1378 2,3357 -2,6172 х4 1,7500 0,4784 0,6701 1,9629 4,8614 -0,2756
Решение, наиболее близкое к точному, получено из таблицы 3
Х1=1,4740
Х2=1,9479
Х3=0,9109
Х4=2,9879
Найдём/>:xi xi* |xi-xi*| 1,474 1,474 1 1,9479 0,9479 -1 0,9109 1,9109 2 2,9879 0,9879 max 1,9109
/>(МПИ)=1,9109
2. Метод Зейделя
Сделаем расчет, используяSLAU.xlsх1 0,7500 0,0000 0,0000 0,0000 0,7500 0,0000 х2 1,0000 -0,3750 0,0000 0,0000 0,6250 0,0000 1 х3 0,6667 -0,2500 0,0000 0,0000 0,4167 0,0000 х4 1,7500 -0,1875 -0,3125 -0,3125 0,9375 0,0000 х1 0,7500 -0,4688 -0,2084 -0,2344 -0,1615 0,7500 х2 1,0000 0,0807 -0,2778 -0,3125 0,4904 0,6250 2 х3 0,6667 0,0538 -0,4167 -0,4688 -0,1649 0,4167 х4 1,7500 0,0404 -0,2452 0,1237 1,6688 0,9375 х1 0,7500 -0,7499 0,5000 -0,5000 0,0000 0,0000 х2 1,0000 0,0000 0,6666 -0,6667 0,9999 0,9999 30 х3 0,6667 0,0000 -0,6666 -1,0000 -0,9999 -0,9999 х4 1,7500 0,0000 -0,5000 0,7500 2,0000 2,0000
Решение, наиболее близкоек точному, получено на 30 шаге вычислений
Х1=0
Х2=0,9999
Х3=0,9999
Х4=2
Найдём/>:xi xi* |xi-xi*| 0,0000 0,0000 1 0,9999 -0,0001 -1 -0,9999 0,0001 2 2,0000 0,0000 max 0,0001
/>=0,0001
Вывод: МПИ — быстреесходится, но обладает меньшей точностью, чем метод Зейделя, который дольшесходится.Задача 4 СплайнинтерполяцияХ У -2,00 -3,00 0,00 2,00 1,00 0,00 3,00 2,00 4,00 1,00 5,00 0,00
Для вычислений используемsplain.xls
Найдем />:hi=xi - xi-1 h0 2,00 h1 1,00 h2 2,00 h3 1,00 h4 1,00
Для вычисления q будем использовать метод прогонки.
Вычислим массивыкоэффициентов a,b,c и правой части d: a b c d 0,0000 1,0000 0,1667 -4,50 1 0,1667 1,0000 0,3333 3,00 2 0,3333 1,0000 0,1667 -2,00 3 0,1667 0,6667 0,0000 0,00
Вычисление прогоночныхкоэффициентов:A[ ] B[ ] 0,00 0,00 -0,16667 -4,5 -0,34286 3,857143 -0,18817 -3,70968 0,973202
Теперь вычисляем />x y -2 -3 -1,9 -2,62093 -1,8 -2,24381 -1,7 -1,87056 -1,6 -1,50314 -1,5 -1,14348 -1,4 -0,79353 -1,3 -0,45522 -1,2 -0,13049 -1,1 0,178702 -1 0,47043 -0,9 0,74275 -0,8 0,99372 -0,7 1,221401 -0,6 1,423849 -0,5 1,599126 -0,4 1,74529 -0,3 1,860401 -0,2 1,942516 -0,1 1,989696 2 0,1 1,852492 0,2 1,673571 0,3 1,470644 0,4 1,251116 0,5 1,02239 0,6 0,791874 0,7 0,566972 0,8 0,355088 0,9 0,163629 1 1,1 0,005772 1,2 0,043163 1,3 0,108555 1,4 0,198332 1,5 0,308877 1,6 0,436575 1,7 0,577807 1,8 0,728958 1,9 0,886412 2 1,046551 2,1 1,205759 2,2 1,360419 2,3 1,506916 2,4 1,641631 2,5 1,760949 2,6 1,861253 2,7 1,938927 2,8 1,990354 2,9 2,011917 3 2 3,1 1,989668 3,2 1,946922 3,3 1,876445 3,4 1,78292 3,5 1,67103 3,6 1,545457 3,7 1,410885 3,8 1,271996 3,9 1,133473 4 1 4,1 0,872264 4,2 0,753286 4,3 0,642094 4,4 0,537715 4,5 0,439175 4,6 0,345501 4,7 0,255719 4,8 0,168858 4,9 0,083942 5
/>Задача 5 Решениедифференциального уравнения
/>
Для расчета использованфайл diffur.xls
Мы выбираем шаг h,рассчитываем значения для точки х+2h с шагом h и 2h, если проверка на окончание процессапоказала {1,2} x y k1 0,00004000 k2 0,00004000 k3 0,00004000 k4 0,00004000 y(1)=1 1 1 1,00001 1,00002 ∆y 0,00004000 y1 1,00004000 1,00001 1,00002 1,00002 1,00004 0,00002 x y k1 0,00004018 k2 0,00004018 k3 0,00004018 k4 0,00004018 1,1 1,00004 1,10001 1,00006 ∆y 0,00004018 y2 1,00008018 1,10001 1,00006 1,10002 1,00008 0,00002 x y k1 0,00004066 k2 0,00004066 k3 0,00004066 k4 0,00004066 1,2 1,00008 1,20001 1,000101 ∆y 0,00004066 y2 1,00012084 1,20001 1,000101 1,20002 1,000121