информатика / 1+2+3 +4+5 лаб работа ручной счет Excel Mcad СИ++
.pdf
в левой части оставим х, а в правую часть перенесем все остальное: x2 =5*x-6
.Затем выражаем = √ − (x=fi(x)).
На полученном в шаговом методе интервале изоляции корня [2,95 ; 3,1] выполним проверку условия сходимости метода для приведенной функции
fi(x)= √ − на концах интервала.
Условие сходимости |fi'(x0)| 1, где x0 = 2,95 или x0 = 3,1. Первая производная
( ) = |
|
|
( ) = |
|
|
|
. |
|
|
|
|||||
|
|
√ − |
|||||
fi1(2,95)=0,845 fi1(3,1)=0,811. Выбираем в качестве x0 ,то значение х в котором первая производная по модулю больше. В нашем случае x0=2,95.
|
|
|
|
|
|
|
Вычисляем первое |
приближение к корню x1=fi(x0) |
x1=√5 x0 − 6 = |
||||
|
|
|
|
|
|
|
√5 2,95 − 6 = 2,958 |
|
|
|
|||
Вычислим значение функции при x1=2,958 |
|
|
|
|||
f(x1)= x12-5 x1+6=2,9582-5*2,958+6=-0,040 |
|
|
|
|||
Проверяем |f(x1)|<eps |
|-0,040|<0,01 нет, |
|
|
|
||
точность не достигнута, следовательно, вычисляем следующее приближение к корню.
|
|
|
|
|
|
|
Вычисляем второе |
приближение к корню x2=fi(x1) |
x2=√5 x1 − 6 = |
||||
|
|
|
|
|
|
|
√5 2,958 − 6 = 2,965 |
|
|
|
|||
Вычислим значение функции при x2=2,965 |
|
|
|
|||
f(x2)= x22-5 x2+6=2,9582-5*2,959+6=-0,034 |
|
|
|
|||
Проверяем |f(x2)|<eps |
|-0,034|<0,01 нет, |
|
|
|
||
точность не достигнута, следовательно, вычисляем следующее приближение к корню.
|
|
|
|
|
|
|
Вычисляем третье |
приближение к корню x3=fi(x2) |
x3=√5 x2 − 6 = |
||||
|
|
|
|
|
|
|
√5 2,965 − 6 = 2,971 |
|
|
|
|||
Вычислим значение функции при x3=2,971 |
|
|
|
|||
f(x3)= x32-5 x3+6=2,9712-5*2,971+6=-0,029 |
|
|
|
|||
Проверяем |f(x3)|<eps |
|-0,029|<0,01 нет, |
|
|
|
||
точность не достигнута, следовательно, вычисляем следующее приближение к корню.
|
|
|
|
|
|
|
Вычисляем четвертое |
приближение к корню x4=fi(x3) |
x4=√5 x3 − 6 = |
||||
|
|
|
|
|
|
|
√5 2,971 − 6 = 2,975 |
|
|
|
|||
Вычислим значение функции при x4=2,975 |
|
|
|
|||
f(x4)= x42-5 x4+6=2,9752-5*2,975+6=-0,024 |
|
|
|
|||
Проверяем |f(x4)|<eps |
|-0,024|<0,01 нет, |
|
|
|
||
точность не достигнута, следовательно, вычисляем следующее приближение к корню.
Вычисляем пятое приближение к корню x5=fi(x4) x5=√5 x4 − 6 =
√5 2,975 − 6 = 2,979
Вычислим значение функции при x5=2,979
11
f(x5)= x52-5 x5+6=2,9792-5*2,979+6=-0,020 Проверяем |f(x4)|<eps |-0,020|<0,01 нет,
точность не достигнута, следовательно, вычисляем следующее приближение к корню.
|
|
|
|
|
|
|
Вычисляем шестое |
приближение к корню x6=fi(x5) |
x6=√5 x5 − 6 = |
||||
|
|
|
|
|
|
|
√5 2,979 − 6 = 2,983 |
|
|
|
|||
Вычислим значение функции при x4=2,983 |
|
|
|
|||
f(x6)= x62-5 x6+6=2,9832-5*2,983+6=-0,017 |
|
|
|
|||
Проверяем |f(x6)|<eps |
|-0,017|<0,01 нет, |
|
|
|
||
точность не достигнута, следовательно, вычисляем следующее приближение к корню.
И т.д. пока функция не достигнет точности.
Вывод: x= 2,992 можно считать приближенным корнем нашего уравнения с точностью 0,01, т.к. |f(2,992)|<0,01 |0,008|<0,01
Результат реализации в программе MSExcel (2 способ)
Реализация в программе Mcad (2 способ)
x |
|
f x |
|
i |
i |
|
i |
|
|
|
2.95 |
|
-0.047 |
0 |
|
|
1 |
||
|
2.958 |
|
-0.04 |
|
|
|
|
||
|
2.965 |
|
-0.034 |
2 |
|
|
|
||
|
2.971 |
|
-0.029 |
3 |
|
|
|
||
|
2.975 |
|
-0.024 |
4 |
|
|
|
||
|
2.979 |
|
-0.02 |
5 |
|
|
|
||
|
2.983 |
|
-0.017 |
6 |
|
|
|
||
|
2.986 |
|
-0.014 |
7 |
|
|
|
||
|
2.988 |
|
-0.012 |
8 |
|
|
|
||
|
2.99 |
-9.928·10-3 |
9 |
|
|
|
|||
|
2.992 |
-8.299·10-3 |
10 |
|
|
|
|||
13
Реализация Шагового метода
начало
f(x)=x2-5*x+6
a, b, h
“Таблица”
“x f(x)”
x[0]=a
y[0]=f(a)
x[0] y[0]
n=(b-a)/h
i=1
нет
i<=n
да
x[i]=a+i*h
y[i]=f(x[i])
x[i] y[i]
нет
f(x[i-1])*f(x[i])<0
да
x[i-1] x[i]
i=i+1
конец
Программа на языке CИ++
#include “stdafx.h” #include <iostream> #include <math.h> using namespace std; double f(double x) { double Y; Y=pow(x,2)-5*x+6; return Y;}
void main() {setlocale(LC_ALL,”Russian”); double a,b,x[11],y[11],h;
int i,n;
cout<<”Vvedite a, b, h”<<endl; cin>>a>>b>>h; cout<<”Таблица\n”; cout<<”\tx \tf(x)\n”;
x[0]=a;
y[0]=f(a); cout<<x[0]<<”\t”<<y[0]<<endl; n=(b-a)/h;
for(i=1;i<=n;i++)
{
x[i]=a+i*h;
y[i]=f(x[i]); cout<<”\t”<<x[i]<<”\t”<<y[i]<<endl;
if (f(x[i-1])*f(x[i])<0) cout<<”koren na interval [“<<x[i-
1]<<”,”<<x[i]<<”]\n”;
}
}
Реализация метода половинного деления
Программа на языке CИ
#include “stdafx.h” #include <iostream> #include <math.h> using namespace std; double f (double x)
{double Y; Y=pow(x,2)-5*x+6; return Y;}
void main()
{double a,b,xc,e;
cout<<”Vvedite a, b, e”<<endl; cin>>a>>b>>e; cout<<”\t”<<”a”<<”\t”<<”xc”<<”\t”<<”b”
<<”\t”<<”f(a)”<<”\t”<<”f(xc)”<<”\t”<<”f(b)\n”; xc=(a+b)/2;
while(fabs(f(xc))>e)
{xc=(a+b)/2; cout<<”\t”<<a<<”\t”<<xc<<”\t”<<b<<”\t”<<f(a)<<”\t”<<f(xc)
<<”\t”<<f(b)<<endl; if (f(a)*f(xc)<0)
b=xc; else
a=xc;
}
cout<<”koren=”<<xc<<” f(“<<xc<<”)=”<<f(xc)<<endl;
}
Реализация метода Ньютона
15
Программа на языке CИ
#include “stdafx.h” #include <iostream> #include <math.h> using namespace std; double f (double x)
{double Y; Y=pow(x,2)-5*x+6; return Y;}
double f1 (double x)
{double Y;
Y=2*x-5; return Y;} void main()
{ double x0,x1,e=0.0001; cout<<”Vvedite x0”<<endl; cin>>x0;
cout<<”\t”<<”x”<<”\t”<<”f(x)”<<”\t”<<”f1(x)\n”; cout<<”\t”<<x0<<”\t”<<f(x0)<<”\t”<<f1(x0)<<”\n”; while(fabs(f(x0))>e)
{
x1=x0-f(x0)/f1(x0); cout<<”\t”<<x1<<”\t”<<f(x1)<<”\t”<<f1(x1)<<endl; x0=x1;
}}
Метод простой итерации
Программа на языке CИ
#include “stdafx.h” #include <iostream> #include <math.h> using namespace std; double f (double x)
{double Y; Y=pow(x,2)-5*x+6; return Y;}
double fi (double x)
{double Y; Y=sqrt(5*x-6); return Y;} void main()
{double x0,x1,eps=0.01; cout<<”Vvedite x0”<<endl; cin>>x0;
cout<<”\t”<<”x”<<”\t”<<”f(x)”<<”\n”; cout<<”\t”<<x0<<”\t”<<f(x0)<<”\n”; while(fabs(f(x0))>eps)
x1=fi(x0); cout<<”\t”<<x1<<”\t”<<f(x1)<<endl; x0=x1;
}
}
Лабораторная работа №2 Решение систем линейных уравнений
1. Метод простой итерации Постановка задачи: Дана система линейных уравнений
8x1 -2x2 +x3 =3 -5x2 +2x3 =4 2x1 -x2 +6x3 =4
Найти приближенное решение с заданной степенью точности eps=0,1
Ручной счет |
|
|
|
|
8 |
−2 |
1 |
1 |
3 |
Запишем систему в матричном виде [0 |
−5 |
2] [ 2] = [4] (A*x=B) |
||
2 |
−1 |
6 |
3 |
4 |
1.Для того чтобы получить решение с помощью этого метода необходимо чтобы матрица A удовлетворяла следующим требования:
вматрице A абсолютные значения всех диагональных элементов были больше суммы модулей всех остальных элементов в соответствующей строке.
Aii |
Aij |
,что означает |8|>|-2|+|1| |
|8|>|3| |
|-5|>|0|+|2| |
|5|>|2| |
||
|
i 1,i j |
|6|>|2|+|-1| |
|6|>|3| |
|
|
Данное условие называется условием сходимости метода.
2.Если условие сходимости выполнено, то на следующем этапе необходимо задать начальное приближение неизвестных, в качестве которого обычно выбирается нулевые значения:
10 = 0 |
20 = 0 |
30 = 0 |
Верхний индекс - номер итерации (приближения).
3. Формируем циклический процесс, каждый цикл которого представляет собой одну итерацию. В результате каждой итерации получается новое значение неизвестных. Для организации итерационного процесса запишем нашу систему в приведенном виде – из 1-го уравнения выражаем x1, из 2-го уравнения выражаем x2, из 3-го уравнения выражаем x3.
Приведенная система уравнений имеет вид:
1 = |
3 + 2 2 − 3 |
||
|
8 |
|
|
|
|
|
|
2 = |
−4 + 2 3 |
||
5 |
|
||
|
|
|
|
{ 3 = |
4 − 2 1 + 2 |
||
|
|
|
|
|
6 |
|
|
Запишем итерационную формулу метода простой итерации:
17
|
|
|
|
1 +1 = |
|
3 + 2 2 − 3 |
|
|
|
|
|||||||||
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
2 +1 |
= |
−4 + 2 3 |
|
|
|
|
|||||||||
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
3 +1 |
= |
|
4 − 2 1 + 2 |
|
|
|
|
||||||||
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Переходим к вычислению 1-ой итерации: |
|
|
|
|
|
|
|
|
|
||||||||||
i=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
3 + 2 20 − 30 |
|
|
|
3 + 2 0 − 0 3 |
|
||||||||||||
= |
|
|
|
|
|
= |
|
|
|
|
|
|
|
= |
|
= 0,38 |
|||
|
|
8 |
|
|
|
|
8 |
|
|
|
|
8 |
|||||||
21 = |
−4 + 2 30 |
|
−4 + 2 0 −4 |
|
|||||||||||||||
|
|
|
= |
|
|
|
|
= |
|
|
= −0,80 |
||||||||
|
5 |
|
|
|
5 |
|
5 |
|
|||||||||||
31 |
|
4 − 2 10 + 20 |
|
|
|
4 − 2 0 + 0 4 |
|
||||||||||||
= |
|
|
|
|
|
= |
|
|
|
|
|
|
|
= |
|
= 0,67 |
|||
|
|
6 |
|
|
|
|
6 |
|
|
|
|
6 |
|||||||
Проверим достигнута ли точность: |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|x11-x10|<eps |
|0,38-0|<0,1 |
|
|
|
|0,38|<0,1 нет |
|
|
|
|
||||||||||
|x21-x20|<eps |
|-0,80-0|<0,1 |
|
|
|
|
|
|0,80|<0,1 нет |
|
|||||||||||
|x31-x30|<eps |0,67-0|<0,1 |
|0,67|<0,1 нет |
|
|
|
|
|
|
|
|
|
|||||||||
Точность не достигнута, следовательно продолжаем процесс вычисления.
Переходим к вычислению 2-ой итерации: |
|
||||||||
i=1 |
|
|
|
|
|
|
|
|
|
12 = |
3 + 2 21 − 31 |
= |
3 + 2 (−0,80) − 0,67 |
= 0,09 |
|||||
8 |
|
|
|
|
|||||
|
|
|
|
|
8 |
|
|
||
22 = |
−4 + 2 31 |
= |
−4 + 2 0,67 |
= −0,53 |
|||||
|
5 |
||||||||
|
5 |
|
|
|
|
|
|
||
32 = |
4 − 2 11 + 21 |
= |
4 − 2 0,38 + (−0,80) |
= 0,41 |
|||||
6 |
|
|
|||||||
|
|
|
|
|
6 |
|
|
||
Проверим достигнута ли точность: |
|
|
|
||||||
|x12-x11|<eps |
|0,09-0,38|<0,1 |
|
|
|
|0,28|<0,1 нет |
|
|||
|x22-x21|<eps |
|-0,53-(-0,80)|<0,1 |
|0,27|<0,1 нет |
|
||||||
|x32-x31|<eps |
|0,41-0,67|<0,1 |
|
|
|
|0,26|<0,1 нет |
|
|||
Точность не достигнута, следовательно, продолжаем процесс вычисления.
Переходим к вычислению 3-ой итерации: |
|
|
|
|||||||||||
i=2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
= |
3 + 2 22 |
− 32 |
= |
3 + 2 (−0,53) − 0,41 |
= 0,19 |
||||||||
|
8 |
|
|
|
8 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
23 |
|
−4 + 2 32 |
−4 + 2 0,41 |
|
|
|
|||||||
|
= |
|
|
|
|
= |
|
|
= −0,64 |
|||||
|
|
5 |
|
|
5 |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
33 |
= |
4 − 2 12 |
+ 22 |
= |
4 − 2 0,09 + (−0,53) |
= 0,55 |
||||||||
|
6 |
|
|
|
6 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
Проверим достигнута ли точность: |
|
|
|
|
|
|||||||||
|x13-x12|<eps |
|0,19-0,09|<0,1 |
|
|
|
|0,10|<0,1 нет |
|
||||||||
|x23-x22|<eps |
|-0,64-(-0,53)|<0,1 |
|0,11|<0,1 нет |
|
|||||||||||
|x33-x32|<eps |
|0,55-0,41|<0,1 |
|
|
|
|0,14|<0,1 нет |
|
||||||||
Точность не достигнута, следовательно, продолжаем процесс вычисления. Переходим к вычислению 4-ой итерации:
i=3
14 |
= |
3 + 2 23 |
− 33 |
= |
3 + 2 (−0,62) − 0,56 |
= 0,15 |
||||||||
|
8 |
|
|
|
8 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
24 |
|
−4 + 2 33 |
−4 + 2 0,56 |
|
|
|
|||||||
|
= |
|
|
|
|
= |
|
|
= −0,58 |
|||||
|
|
5 |
|
|
5 |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
34 |
= |
4 − 2 13 |
+ 23 |
= |
4 − 2 0,21 + (−0,62) |
= 0,50 |
||||||||
|
6 |
|
|
|
6 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
Проверим достигнута ли точность: |
|
|
|
|
|
|||||||||
|x13-x12|<eps |
|0,15-0,21|<0,1 |
|
|
|
|0,06|<0,1 да |
|
||||||||
|x23-x22|<eps |
|-0,58-(-0,64)|<0,1 |
|0,06|<0,1 да |
|
|||||||||||
|x33-x32|<eps |
|0,55-0,50|<0,1 |
|
|
|
|0,05|<0,1 да |
|
||||||||
Вывод: точность достигнута, следовательно значения x1=0,15 x2=-0,58 x3=0,50 можно считать приближенным решением системы линейных уравнений с точностью 0,1.
Реализация в MS Excel
19
Метод Гаусса(результат и формулы)
