Documente Academic
Documente Profesional
Documente Cultură
Rezolvare:
1. a) Calculul iterativ al soluţiilor algebrice şi transcendente prin
metoda bisecţiei:
Să se determine o rădăcină a ecuației x4+x3-x-1=0 pe segmentul
[0,1] pentru 16 divizări consecutive.
program P1;
var a,b,c: real;
i,n:integer;
function f(x:real):real;
begin f:=sqr(sqr(x))+x*sqr(x)-x-1;
end;
begin a:=0; b:=1; n:=16;
for i:=1 to n do
begin c:=(b+a)/2;
writeln ('i=',i:3,' x=',c:10:8,' f(x)=',f(c):12:8);
if f(c)=0 then break;
if f(c)*f(a)>0 then a:=c else b:=c;
end;
end.
Rezultatele:
i= 1 x=25.00000000 f(x)=406224.00000000
i= 2 x=12.50000000 f(x)=26353.68750000
i= 3 x=6.25000000 f(x)=1762.76953125
i= 4 x=3.12500000 f(x)=121.76000977
i= 5 x=1.56250000 f(x)= 7.21266174
i= 6 x=0.78125000 f(x)= -0.93188381
i= 7 x=1.17187500 f(x)= 1.32337862
i= 8 x=0.97656250 f(x)= -0.13574522
i= 9 x=1.07421875 f(x)= 0.49696279
i= 10 x=1.02539063 f(x)= 0.15822816
i= 11 x=1.00097656 f(x)= 0.00586796
i= 12 x=0.98876953 f(x)= -0.06625477
i= 13 x=0.99487305 f(x)= -0.03052582
i= 14 x=0.99792480 f(x)= -0.01241246
i= 15 x=0.99945068 f(x)= -0.00329318
i= 16 x=1.00021362 f(x)= 0.00128215
function f(x:real):real;
begin
f:=(x*x*x*x)+(x*x*x)-x-1;
end;
begin
n := 0;
eps := 0.000001;
a:= 0.5;
b:= 4;
repeat
c:=(f(b)*a-f(a)*b)/(f(b)-f(a));
if f(a)*f(c) > 0 then
a := c
else
b := c;
Inc(n);
if (n mod 10 = 0) then
writeln('x=', c:10:7, ' f(x)=', f(c):12:8, ' n=', n);
until abs((f(b)*a-f(a)*b)/(f(b)-f(a))-c)<eps;
writeln('x=', c:10:7, ' f(x)=', f(c):12:8, ' n=', n);
end.
Rezultatele:
x= 0.6388547 f(x)= -1.21154112 n=10
x= 0.7562853 f(x)= -0.99656790 n=20
x= 0.8453078 f(x)= -0.73072226 n=30
x= 0.9064260 f(x)= -0.48665924 n=40
x= 0.9452685 f(x)= -0.30223983 n=50
x= 0.9686701 f(x)= -0.17929806 n=60
x= 0.9822982 f(x)= -0.10341852 n=70
x= 0.9900740 f(x)= -0.05867421 n=80
x= 0.9944583 f(x)= -0.03297473 n=90
x= 0.9969136 f(x)= -0.01843267 n=100
x= 0.9982834 f(x)= -0.01027283 n=110
x= 0.9990460 f(x)= -0.00571562 n=120
x= 0.9994701 f(x)= -0.00317709 n=130
x= 0.9997057 f(x)= -0.00176511 n=140
x= 0.9998366 f(x)= -0.00098036 n=150
x= 0.9999093 f(x)= -0.00054442 n=160
x= 0.9999496 f(x)= -0.00030230 n=170
x= 0.9999720 f(x)= -0.00016785 n=180
x= 0.9999825 f(x)= -0.00010483 n=188
c)
Calculul iterativ al soluţiilor algebrice şi transcendente prin
metoda Newton:
Program Newton;
const
eps=0.000000001;
var
a,x,y,x1,func,proiz:real;
function f(x:real):real;
begin
f:=sqr(sqr(x))+x*sqr(x)-x-1;
end;
function p(x:real):real;
begin
p:=4*x*x*x+2*x-1;
end;
begin
x:=25;
repeat
x1:=x;
func:=f(x);
proiz:=p(x);
y:=func/proiz;
x:=x-y;
writeln('x=',x:12:9, ' f=',func:12:9, ' p=', proiz:12:9);
until abs(x-x1)<=eps;
writeln('x=',x:12:9);
end.
2
4 +5 x 2
∫ 3 x dx
2. Să se calculeze valoarea exactă a integralei I = 1 .
Точное значение 3.424196240746594
PROGRAM integral;
var n:INTEGER; a,b:REAL;
i1, i2: real;
i0: real;
{definirea functiei utilizator}
FUNCTION f(x:REAL):REAL;
BEGIN
f:=(4+5*x*x)/(3*x);
END;
{programul principal}
I=3.424196
I1=3.424405 I2=3.424092
|I-I1|=0.000208 |I-I2|=0.000104
begin
n:=3;
writeln('A:');
for i := 1 to n do
begin
for j := 1 to n do
begin
write(a[i,j]:5:2);
a1[i,j]:=a[i,j];
end;
writeln;
end;
writeln;
Writeln('B:');
for i:=1 to n do
writeln(b[i]);
for k := 1 to n do
begin
for j := k + 1 to n do
begin
r := a[j, k] / a[k, k];
for i := k to n do
begin
a[j, i] := a[j, i] - r * a[k, i];
end;
b[j] := b[j] - r * b[k];
end;
end;
for k := n downto 1 do
begin
r := 0;
for j := k + 1 to n do
begin
g := a[k, j] * x[j];
r := r + g;
end;
x[k] := (b[k] - r) / a[k, k];
end;
writeln('result:');
for i := 1 to n do
write('x[', i, ']=', x[i]:0:2, ' ');
end.
A:
3.00 2.00 1.00
8.00 1.00 2.00
1.00-6.00 7.00
B:
7.00000000000000E+000
-1.00000000000000E+001
-5.00000000000000E+000
result:
x[1]=-3.18 x[2]=5.88 x[3]=4.78