130 likes | 277 Views
Информатика. Часть 2. Лекций – 6 часов Лабораторных работ – 8 часов Экзамен. Применение численных методов при моделировании ХТП. Отделение корней уравнения. Метод «бисекций». Общие сведенья. f ( x ) = 0. f ( x ) = а 0 x n + а 1 х n -1 + ... + а n =0. х 3 + х 2 + 2 х = 0.
E N D
Информатика. Часть 2 • Лекций – 6 часов • Лабораторных работ – 8 часов Экзамен
Применение численных методов при моделировании ХТП. Отделение корней уравнения. Метод «бисекций».
Общие сведенья • f ( x ) = 0. • f (x) =а0xn+ а1хn-1 + ... + аn=0. • х3 + х2 + 2х = 0. • f()=0
Отделениекорней • f (x) = 1(x) – 2(x) = 0 • 1(x) = 2(x) • y1=1(x); y2=2(x)
f(x)= x∙lgx – 1 = 0 • y1 = lg x и y2 = 1/x
Метод деления отрезка пополам (метод бисекций)
[–3, –1]=0.1 • f(–3)= –27+18+2= –7;f(–1)= –1+6+2=+7 • (–3, –1)/2= –2 • f(–2)= –8+12+2=6 • (–3–2)/2= –2.5[–3,–2.5] • (–3–2.5)/2= –2.75[–2,75,–2,5] • (–2.75–2.5)/2= –2.625[–2.625, –2.5] • (–2.625–2.5)/2=–2.536 • |b–a|0.062<0.1
Программа решения уравнений методом деления отрезка пополам. Задание: решить уравнение ex - 10x = 0. PROGRAM del; LABEL 1,2; VAR a, b, x0, eps, r1, r2: Real; k: Integer; FUNCTION f(x:real): Real; { Исследуемаяфункция } BEGIN f:=exp(x)-(10*x); END; BEGIN read(a,b,eps); k:=0; 1:k:=k+1; x0:=(a+b)/2; IF f(x0)=0 THENGOTO 2; IF abs(b-a)<eps THENGOTO 2; r1:=f(x0); r2:=f(a); IF (r1*r2)<0 THEN b:=x0 ELSE a:=x0; GOTO 1; 2:writeln(X0:5:2); END.
Метод Ньютона (метод касательных) Пусть функция f(x) имеет первую и вторую производные на отрезке [a, b], причем выполнено условие знакопеременности функции f(a)f(b)<0, а производные f '(x), f ''(x) сохраняют знак на отрезке [a, b]. Тогда, исходя из начального приближения x0[a, b], удовлетворяющего неравенству f(x)f "(x)>0, можно построить итерационную последовательность
В данном методе процесс итераций состоит в том, что в качестве приближений к корню принимаются значения x0, x1 ,x2... точек пересечения касательной к кривой y = f(x) с осью абсцисс. То есть, геометрически метод Ньютона эквивалентен замене небольшой дуги кривой y = f(x) касательной. При этом не обязательно задавать отрезок [a, b], содержащий корень уравнения, а достаточно лишь найти некоторое начальное приближение корня х = х0
[4, 6]=0.001 • f’(x)=15x2 – 40x – 55; f’’(x)=30x – 40 • x=4f(4)= – 70;f(4)=80; x=6f(6)=180;f(6)=140. • x1 = x0– f(x0)/f '(x0); f(6) = 180;f(6)=245;x1 = 6 – 180/245=5.2653; • f(5.265) = 35.8;f ' (5.265)=150.2;x2 = 5.265 – 35.8/150.2=5.027; • f(5.027) = 3.281;f(5.027)=123;x3 = 5.027 – 3.281/123=5.0003; • f(5.0003)=0.0394;f ' (5.0003)=120;x4 = 5.0003 – 0.0394/120=5.000.
x3- 2x2 + 1.3x = 0 PROGRAM newton; LABEL m1, m2; VAR x, x0, eps:real; k:integer; FUNCTION f(x0:real):real; BEGIN f:=x*x*x-2*x*x+1.3*x-0.2; END; FUNCTION f1(x0:real):real; BEGIN f1:=3*x*x-4*x+1.3; END; BEGIN read(x0,eps); k:=0; m2: x:=x0; x0:=x-f(x)/f1(x); k:=k+1; IF abs(x-x0) <= eps THENGOTO m1 ELSEGOTO m2; m1: writeln('корень уравнения',x); END.