Автор: Пользователь скрыл имя, 01 Апреля 2013 в 10:12, контрольная работа
Как известно, многие уравнения и системы уравнений не имеют аналитических решений.
В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл.
Федеральное агентство по образованию РФ
Государственное образовательное учреждение
высшего профессионального образования
«Владимирский государственный университет»
Кафедра физики и прикладной математики
Контрольная работа
по дисциплине «Вычислительная математика»
Вариант №1
Выполнил:
ст. гр. ЗЭВМ–107
.
Принял:
доцент каф. ФиПМ
Горлов В.Н.
Владимир 2009
Задание 1
Методы поиска решений нелинейных уравнений
Метод простых итераций
Отделить корни уравнения х - sinx = 0.25 графически и уточнить один из них методом простых итераций с точностью до 0,001
Теоретические сведения
Как известно, многие уравнения и системы уравнений не имеют аналитических решений.
В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл.
Для их решения используются итерационные методы с заданной степенью точности.
Пусть дано уравнение f(x)=0, где:
Условия 1 и 2 гарантируют, что на интервале [а, Ь] находится хотя бы один корень, а из условия 3 следует, что f(x) на данном интервале монотонна и поэтому корень будет единственным.
Решить уравнение f(x)=0 итерационным методом значит установить, имеет ли оно корни, сколько корней и найти значения корней с нужной точностью.
Всякое значение ^ , обращающее функцию f(x) в нуль, т.е. такое, что f(Ј) =0, называется корнем уравнения f(x)=0 или нулем функции f(x).
Задача нахождения корня уравнения f(x)=0 итерационным методом состоит из двух этапов:
Расчет
Нормализуем уравнение, т.е. приводим к виду у=х. Дано уравнение: х - sinx = 0.25
Приводим его: x-0.25=sinx
Но корнем уравнения является абсцисса пересечения у = x-0.25 с функцией.
Соответственно у = sinx. Строим ее график.
Рисунок 1.
Из рисунка 1 видно, что точка пересечения графиков, т.е. корень уравнения лежит от 1,0 до 1,5.
Т.к. 0≤q≤1/2, то lxn-xn-1l≤0.001.
Данные для ввода в программу:
Начальное приближение = 1,0
Погрешность вычислений = 0,001
Количество итераций = 20
Текст программы
Program Korni;
Uses crt;
Var xi1, xi2, xn1,xn2:real;
Procedure iteracia (x1,x2:real);
Var x3,razn1:real;
Begin
x1:=1; x2:=1;
x2:=0.25+sin(x1);
repeat x3:=0.25+sin(x2);
razn1:=abs(x3)-abs(x2);
if x2>0 then begin
if x3<0 then break;
end;
if x2<0 then begin
if x3>0 then break;
end;
x1:=x2;x2:=x3;
until abs(razn1)<0.001;
xi1:=x3;
xi2:=x3;
x3:=x3+0.001;
xi2:=0.25+sin(x3);
end;
Begin
clrscr;
xi1:=1; xi2:=xi1;
xn1:=1; xn2:=xn1;
iteracia (xi1,xi2);
Writeln('---------------------
end.
Результат работы программы.
------------------------------
- корень методом интераций: 1.17091 и 1.17149
Метод Ньютона
Отделить корни уравнения x^3-3x^2+9x-8=0 графически и уточнить один из них методом Ньютона с точностью 0,001.
Теоретические сведения
Метод Ньютона – метод касательных. Пусть – начальное приближение к корню. Проведем касательную к графику функции в точке с координатами и за новое приближение примем абсциссу точки пересечения этой касательной с осью Ох. Продолжая эту процесс, получим последовательность приближений к корню .
Из уравнения касательной получим расчетную формулу .
Апостериорный критерий окончания итераций .
Для отделения корней уравнения x^3-3x^2+9x-8=0 графическим способом построим в одной координатной плоскости графики функций y=x^3 и y=x^2-9*x+8.
Рисунок 2.
Из рисунка 2 видно, что точка пересечения графиков, т.е. корень уравнения x^3-3x^2+9x-8=0 , расположен на отрезке [1;1,5]. В качестве начального приближения х возьмем середину отрезка, т.е x=1.25.
Текст программы
Program Korni;
Uses crt;
Var xn1,xn2,a,e:real;
begin
writeln(' a e ');
readln(a,e);
xn2:=a;
repeat xn1:=xn2;
xn2:=xn1- (xn1*xn1*xn1-3*xn1*xn1+9*xn1-
until abs(xn2-xn1)<e;
writeln('korni x1 x2');
writeln(' ',xn1:5:3,' ',xn2:5:3);
readkey
end.
Результат работы программы
a e
1 0.001
korni x1 x2
1.167 1.166
Задание 2
Методы решения систем линейных уравнений
Решить систему линейных уравнений с точностью
x1 = 0.23x1 – 0.04x2 + 0.21x3 – 0.18x4 + 1.24
x2 = 0.45x1 – 0.23x2 + 0.06x3 – 0.88
x3 = 0.26x1 + 0.34x2 – 0.11x3 + 0.62
x4 = 0.05x1 - 0.26x2 + 0.34x3 – 0.12x4 – 1.17
Приведем решаемую систему эквивалентным преобразованием к виду .
Это возможно сделать многими способами. Например, умножим слева обе части равенства на
произвольную невырожденную матрицу и прибавим вектор к правой и левой части полученного равенства:
Отсюда находим:
Матрицу нужно выбирать так, чтобы обладала определенными свойствами, о которых сказано ниже.
Для сходимости последовательных приближений метода простой итерации к точному
решению системы достаточно, чтобы .
Таким образом, если некоторая норма матрицы , то итерационный процесс, основанный на формуле
(1), гарантированно сходится к искомому решению при любом начальном приближении .
Итерационный процесс метода простой итерации описывается формулой:
(1)
где – некоторое начальное приближение к решению (обычно берут ).
В координатной форме метод простой итерации записывается следующим образом:
Таким образом –ая компонента –го приближения к решению вычисляется по формуле:
Program sistema;
Uses crt;
Var x1,xn1,x2,xn2,x3,xn3,x4,xn4,
e:real; n:integer;
Begin
clrscr;
n:=0;
x1:=-10; x2:=x1;x3:=x2;x4:=x3;
repeat xn1:=0.23*x1-0.04*x2+0.21*x3-
xn2:=0.45*x1-0.23*x2+0.06*x3-
xn3:=0.26*x1+0.34*x2-0.11*x3+
xn4:=0.05*x1-0.26*x2+0.34*x3-
p1:=abs(xn1)-abs(x1);
p2:=abs(xn2)-abs(x2);
p3:=abs(xn3)-abs(x3);
p4:=abs(xn4)-abs(x4);
n:=n+1;
e:=abs(p1)+abs(p2)+abs(p3)+
x1:=xn1; x2:=xn2; x3:=xn3; x4:=xn4;
until e<0.001;
Writeln('---------------ОТВЕТ:
writeln(' ');
write('Корни уравнения: ');
writeln (x1:1:3,'; ',x2:1:3,'; ',x3:1:3,'; ',x4:1:3);
writeln(' ');
write('Точность вычисления (значение предела): ');
writeln (p1:1:5,'; ',p2:1:5,'; ',p3:1:5,'; ',p4:1:5);
end.
Результат работы программы.
------------------------------
Корни уравнения: 2.048; 0.086; 1.065; -0.650
Точность вычисления (значение предела): -0.00005; 0.00026; 0.00022; 0.00017
Задание 3
Интерполяция
Интерполяция функции с помощью полинома Лагранжа
Найти приближённое значение функции при данном значении аргумента с помощью интерполяционного многочлена Лагранжа, если функция задана в неравноотстоящих узлах таблицы.
Количество узлов в таблице = 6, т.к. 6 строк в исходной таблице.
Количество точек интерполяции = 3, т.к. из условия только три точки (правая таблица в задании).
Интерполяция является частным случаем аппроксимации таблично заданной функции. Пусть функция задана таблицей значений. Выбранные значения аргумента называются узлами таблицы. Для функции требуется найти аппроксимирующую функцию такую, чтобы она совпадала с табличными значениями функции во всех узлах:
Свободные параметры определяются из системы.
Задаче интерполяции в узком смысле считается нахождение приближенных значений табличных функций при аргументах х, не совпадающих с узловыми.
Рассмотрим процесс построения интерполяционного полинома Лагранжа.
Пусть функция задана в узлах, произвольно расположенных на отрезке : , , …, .
Требуется найти многочлен степени не выше :
Будем искать в виде:
,
где
– коэффициенты, зависящие от узлов
и текущего значения
. Этим условиям отвечают коэффициенты
вида:
Для интерполяционного полинома Лагранжа получим:
Расчет
Program zad_Langranj;
Uses crt;
Type tv=array [1..6] of real;
itv=array [1..3] of real;
Var xtv, ytv, p:tv; ix,iy:itv; a,b:integer; l,p1,m:real;
Begin
clrscr;
for a:=1 to 6 do begin
write('Введите значение х[',a,']= ');
readln(l);
xtv[a]:=l;
end;
writeln(' ');
for a:=1 to 6 do begin
write('Введите значение y[',a,']= ');
readln(l);
ytv[a]:=l;
end;
writeln(' ');
for a:=1 to 3 do begin
write('Введите значение для х[',a,']= ');
readln(l);
ix[a]:=l;
end;
for a:=1 to 6 do begin
l:=xtv[a];
p1:=(l-xtv[2])*(l-xtv[3])*(l-
p1:=p1+(l-xtv[1])*(l-xtv[3])*(
p1:=p1+(l-xtv[1])*(l-xtv[2])*(
p1:=p1+(l-xtv[1])*(l-xtv[2])*(
p1:=p1+(l-xtv[1])*(l-xtv[2])*(
p1:=p1+(l-xtv[1])*(l-xtv[2])*(
p[a]:=p1;
end;
for a:=1 to 3 do begin
iy[a]:=0;
m:=(ix[a]-xtv[1])*(ix[a]-xtv[
m:=m*(ix[a]-xtv[5])*(ix[a]-
for b:=1 to 6 do begin
end;
clrscr;
writeln('---------------------
writeln(' ');
for a:=1 to 3 do begin
writeln('Значение х= ',ix[a]:2:3,'
соответствующее значение y= ',iy[a]:2:5);
end;
writeln(' ');
for a:=1 to 6 do begin
writeln('x[',a,']= ',xtv[a]:2:2,' y[',a,']= ',ytv[a]:2:4);
end;
end.
Результат работы программы.
------------------------------
Значение х= 0.702 соответствующее значение y= 2.23357
Значение х= 0.512 соответствующее значение y= 1.79697
Значение х= 0.645 соответствующее значение y= 2.09249
x[1]= 0.43 y[1]= 1.6360
x[2]= 0.48 y[2]= 1.7323
x[3]= 0.55 y[3]= 1.8769
x[4]= 0.62 y[4]= 2.0334
x[5]= 0.70 y[5]= 2.2285
x[6]= 0.75 y[6]= 2.3597
Интерполяция функции с помощью полинома Ньютона
Найти приближенное
значение функции при данном значении
аргумента с помощью
если функция задана в равноотстоящих узлах таблицы.
Начальное значение аргумента - первый элемент X в исходной таблице с шестью строчками.
Информация о работе Контрольная работа по «Вычислительной математике»