Контрольная работа по «Вычислительной математике»
Автор: Пользователь скрыл имя, 01 Апреля 2013 в 10:12, контрольная работа
Описание работы
Как известно, многие уравнения и системы уравнений не имеют аналитических решений.
В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл.
Работа содержит 1 файл
1.doc
— 851.50 Кб (Скачать)Федеральное агентство по образованию РФ
Государственное образовательное учреждение
высшего профессионального образования
«Владимирский государственный университет»
Кафедра физики и прикладной математики
Контрольная работа
по дисциплине «Вычислительная математика»
Вариант №1
Выполнил:
ст. гр. ЗЭВМ–107
.
Принял:
доцент каф. ФиПМ
Горлов В.Н.
Владимир 2009
Задание 1
Методы поиска решений нелинейных уравнений
Метод простых итераций
Отделить корни уравнения х - sinx = 0.25 графически и уточнить один из них методом простых итераций с точностью до 0,001
Теоретические сведения
Как известно, многие уравнения и системы уравнений не имеют аналитических решений.
В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл.
Для их решения используются итерационные методы с заданной степенью точности.
Пусть дано уравнение f(x)=0, где:
- Функция f(x) непрерывна на отрезке [а, Ь] вместе со своими производными 1-го и 2-го порядка;
- Значение f(x) на концах отрезка имеют разные знаки f(a)-f(b)< 0;
- Первая и вторая производные f (х) и f (х) сохраняют определённый знак на всем отрезке.
Условия 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 в исходной таблице с шестью строчками.