Автор работы: Пользователь скрыл имя, 14 Декабря 2011 в 13:48, курсовая работа
При решении инженерных зaдaч встречaются aлгебрaические и трaнсцендентные урaвнения, решение которых может предстaвлять собой сaмостоятельную зaдaчу или быть состaвной чaстью более сложных зaдaч. В обоих случaях применение численного методa позволяет быстро и эффективно добиться решения зaдaчи.
Алгебрaические урaвнения имеют n решений, трaнсцендентные – неопределённое число решений. Урaвнения, содержaщие только суммы целых степеней x, нaзывaются aлгебрaическими. Их общий вид anxn+an-1xn-1+...+a1x+a0=0 .
1. Решение нелинейного уравнения методом хорд ………………..3
1.1. Математическое обоснование метода………………………........3
1.2. Блок-схема алгоритма решения задачи……………………….....5
2. Решение системы линейных уравнений методом Зейделя…….6
2.1. Математическое обоснование задачи…………………………….6
2.2. Блок-схема алгоритма решения задачи………………………….9
3. Вычисление определенного интеграла методом правых……...10 прямоугольников
3.1. Математическое обоснование задачи…………………………...10
3.2. Блок-схема алгоритма решения задачи………………………....13
Приложение 1. Листинг программы…………………………………14
Результат работы программы…………………………………………16
Приложение 2. Листинг программы…………………………………17
Результат работы программы……………………………………........20
Приложение 3. Листинг программы…………………………………22
Результат работы программы………………………………………....24
Cписок литературы……………………………………………………..25
3. Вычисление определенного интеграла методом правыхпрямоугольников
3.1Метод прямоугольников
Многие
инженерные задачи, задачи физики, геометрии
и многих других областей человеческой
деятельности приводят к необходимости
вычислять определенный интеграл вида
где f(x) -данная функция, непрерывная на
отрезке [a; b]. Если функция f(x) задана формулой
и мы умеем найти неопределенный интеграл
F(x), то определенный интеграл вычисляется
по формуле Ньютона-Лейбница:
Если же неопределенный интеграл данной
функции мы найти не умеем, или по какой-либо
причине не хотим воспользоваться формулой
Ньютона-Лейбница или если функция f(x)
задана графически или таблицей, то для
вычисления определенного интеграла применяют
приближенные формулы. Для приближенного
вычисления интеграла можно использовать
метод прямоугольников (правых, левых,
средних). При вычислении интеграла следует
помнить, каков геометрический смысл определенного
интеграла. Если f(x)>=0 на отрезке [a; b],
то
численно равен площади фигуры, ограниченной
графиком функции y=f(x), отрезком оси абсцисс,
прямой x=a и прямой x=b (рис. 1.1) Таким образом,
вычисление интеграла равносильно вычислению
площади криволинейной трапеции.
Разделим отрезок [a; b] на n равных частей, т.е. на n элементарных отрезков. Длина каждого элементарного отрезка .
Точки деления будут: x0=a; x1=a+h; x2=a+2*h, ... , xn-1=a+(n-1)*h; xn=b.
Числа y0, y1, y2, ... , yn являются ординатами точек графика функции, соответствующих абсциссам x0, x1, x2, ... , xn (рис. 1.2).
Строим
прямоугольники. Это можно делать
несколькими способами:
Левые
прямоугольники (слева
на право)
Правые
прямоугольники (построение
справа на лево)
Средние прямоугольники (посредине)
Из рис. 1.2
следует, что площадь криволинейной трапеции
приближенно заменяется площадью многоугольника,
составленного из n прямоугольников. Таким
образом, вычисление определенного интеграла
сводится к нахождению суммы n элементарных
прямоугольников.
h=(b-a)/n –ширина прямоугольников
Формула левых прямоугольников:
(1.3)
Формула правых прямоугольников:
(1.4)
Формула средних прямоугольников.
Sсредих= (Sправых + Sлевых) /2
(1.5)
3.2. Блок-схема алгоритма решения задачи
Приложение 1. Листинг программы
uses crt ;
const r:array[0..1] of string = (
'Готово',
'Ошибка произошла при расчете');
var epselon,x,a,b:double;
i:integer;
function f(x:double):double;
begin
f:=10.88*Ln(X+8.67)+18.73
end;
function getx(x1,x2,eps:double;var x:double):integer;
var err,i:integer;
a,b,c,ya,yb,yc:double;
begin
a:=x1;b:=x2;
ya:=f(a);
yb:=f(b);
i:=100;
err:=0;
repeat
c:=a-ya*(b-a)/(yb-ya);
yc:=f(c);
dec(i);
if (ya*yc>0) then begin
ya:=yc;a:=c
end else begin
yb:=yc;b:=c
end;
until (abs(yc)<eps) or (i<0);
x:=c;
if abs(yc)>eps then err:=1;
getx:=err;
end;
begin
clrscr;
writeln('Программа решения уравнения методом хорд');
writeln('10.88*Ln(X+8.67)+18.
a:=-8.66;b:=-4.25;
write('Точность = 0.0078');epselon:= 0.0078;
i:=getx(a,b,epselon,x);
writeln;
writeln(r[i]);
if i=0 then writeln('x = ',x:6:6);
readkey;
end.
Программа решения задач методом хорд
10.88 * Ln(x+8.67)+18.73=0 -8.67< x < -4.25
Точность = 0.0078
Готово
X = -8.491092
Приложение 2. Листинг программы
Uses CRT;
Type
AA = Array[1..7, 1..7] of Double;
BB = Array[1..7] of Double;
const
a:AA=((-14.3830, -1.1000, -4.0840, -3.5570, -0.3710, +4.5410, -4.4980),
(-0.2050, -107.3690, -7.2000, +2.8230, -0.4860, 3.7050, +1.8070),
(-8.3540, -2.6070, +4.3700, +0.3400, +5.7650, 2.1730, -6.2890),
(+4.7380, +2.9230, -4.8780, +73.5870, -6.6680, -3.9440, -6.6090),
(+0.3920, -1.5630, +2.1900, +0.5390, +8.0940, 5.7290, +8.7180),
(-5.0750, -6.1790, +1.3430, -2.7580, -4.7830, -84.1700, +6.1430),
(-5.0370, +3.7960, +5.9310, -2.1650, +3.3910, 7.2770, -36.6130));
b:BB=(358.6024, 268.4247, 287.6628, 831.9947, -611.1133, 1492.8992, 1408.9475);
Procedure p1(n:integer;var a: AA; var b: BB);
Var
i, j: Integer;
begin
writeln('Система уравнений:');
for i:=1 to n do begin
for j:=1 to n do begin
if (a[i, j]>0) then write('+');
write(a[i, j]:0:3,'*x',j);
end;
writeln('=',b[i]:0:4);
end;
end;
{ Функция реализующая метод Зейделя}
Function zeidel(n: Integer; a: AA; b: BB; var x: BB; e: Double) :Boolean;
Var
i, j: Integer;
s1, s2, s, v, m: Double;
Begin
Repeat
m := 0;
For i := 1 to n do begin
{ Вычисляем суммы }
s1 := 0;
s2 := 0;
For j := 1 to i - 1 do
s1 := s1 + a[i, j] * x[j];
For j := i to n do
s2 := s2 + a[i, j] * x[j];
{ Вычисляем новое приближение и погрешность }
v := x[i];
x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]);
If Abs(v - x[i]) > m then
m := Abs(v - x[i]);
end;
Until m < e;
zeidel := true;
End;
procedure p2(x:BB);
var i:integer;
m:Double;
begin
Writeln('Результат вычислений');
For i := 1 to 7 do begin
Writeln('x', i, ' = ', x[i]:6:6);
end;
{проверка }
{ m:=0;for i:=1 to 7 do m:=m+a[1,i]*x[i]; writeln(m:6:6);}
end;
Var
x: BB;
e: Double;
i: Integer;
Begin
{Очистим экран}
ClrScr;
Writeln('Программа решения систем линейных уравнений по методу Зейделя’);
Writeln;
{распечатаем уравнение}
p1(7,a,b);
e:=0.00572;
{решим уравнение...}
for i:=1 to 7 do x[i]:=1;
If zeidel(7, a, b, x , e) then begin
{... и если оно решилось, то выведем результат ...}
p2(x);
{... иначе сообщение о ошибке}
end else Writeln('Данную систему невозможно решить по методу Зейделя’);
Writeln;
repeat until keypressed;
End.
Программа решения системы линейных уравнений по методу Зейделя
Система уравнений:
-14.3830*x1-1.1000*x2-4.0840*
-0.2050*x1-107.3690*x2-7.2000*
-8.3540*x1-2.6070*x2+4.3700*
+4.7380*x1+2.9230*x2-4.8780*
+0.3920*x1-1.5630*x2+2.1900*
-5.0750*x1-6.1790*x2+1.3430*
-5.0370*x1+3.7960*x2+5.9310*
Результат вычислений
X1 = -18.312706
X2 = -3.530534
X3 = -0.704436
X4 = 6.260138
X5 = -16.944051
X6 = -18.699362
X7 = -42.099037
uses crt;
var a,b,e:double;
function f(x:double):double;
begin
f:=8.80 * X * X + 5.10;
end;
{---------Вычислить
интеграл методом правых
function irr(a,b:double;n:longint):
var i:longint;s,dx,y,x:double;
begin
dx:=(b-a)/n;
s:=0;
for i:=1 to n do begin
x:=a+i*dx;
y:=f(x);
s:=s+dx*y;
end;
irr:=s;
end;
procedure setabe;
begin
a:=0.700;
b:=1.250;
e:=0.000056;
Writeln('Пределы интегрирования: [',a:0:3,' .. ', b:0:3,'], ’точность: ',e:0:6);
end;
procedure res;
var y,z:double;n:longint;
begin
n:=2;
z:=irr(a,b,n);
repeat
n:=n*2;
y:=z;
z:=irr(a,b,n);
until (abs(z-y)<e) or (n>1000000);
writeln('Значение интеграла = ',z:0:6);
end;Begin
clrscr;
writeln('Программа решения интеграла методом правых прямоугольников’);
writeln('Подинтегральная функция: 8.80 * X ^ 2 + 5.10');
setabe;
res; readkey;end.
Результат работы программы
Программа решения интеграла методом правых прямоугольников
Подинтегральная функция: 8.80 * x ^ 2 + 5.10
Пределы интегрирования: [ 0.700 .. 1.250], Точность: 0.000056
Значение интеграла
= 7.528073
Информация о работе Решение линейных и нелинейных уравнений,вычисление определенного интеграла