1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Chương 8: Giải gần đúng phương trình đại số và siêu việt pdf

30 1K 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giải gần đúng phương trình đại số và siêu việt
Trường học Trường Đại Học Bách Khoa Hà Nội
Thể loại Tài liệu
Thành phố Hà Nội
Định dạng
Số trang 30
Dung lượng 230,11 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 8 : Giải gần đúng phương trình đại số và siêu việt Nếu phương trình đại số hay siêu việt khá phức tạp thì ít khi tìm được nghiệm đúng.Bởi vậy việc tìm nghiệm gần đúng và ước lượn

Trang 1

Chương 8 : Giải gần đúng phương trình đại số

và siêu việt

Nếu phương trình đại số hay siêu việt khá phức tạp thì ít khi tìm được nghiệm

đúng.Bởi vậy việc tìm nghiệm gần đúng và ước lượng sai số là rất cần thiết

Ta xét phương trình :

với f(x) là hàm cho trước của biến x.Chúng ta cần tìm giá trị gần đúng của nghiệm của phương trình này

Quá trình giải thường chia làm hai bước: bước sơ bộ và bước kiện toàn nghiệm

Bước giải sơ bộ có 3 nhiệm vụ:vây nghiệm, tách nghiệm và thu hẹp khoảng chứa nghiệm

Vây nghiệm là tìm xem các nghiệm của phương trình có thể nằm trên những đoạn nào của trục x.Tách nghiệm là tìm các khoảng chứa nghiệm soa cho trong mỗi khoảng chỉ

có đúng một nghiệm.Thu hẹp khoảng chứa nghiệm là làm cho khoảng chứa nghiệm càng nhỏ càng tốt.Sau bước sơ bộ ta có khoảng chứa nghiệm đủ nhỏ

Bước kiện toàn nghiệm tìm các nghiệm gần đúng theo yêu cầu đặt ra

Có rất nhiều phương pháp xác định nghiệm của (1).Sau đây chúng ta xét từng phương pháp

Ta có định lí:Xét phương pháp lặp (3),giả sử :

- [a,b] là khoảng phân li nghiệm α của phương trình (1) tức là của (2)

- mọi xn tính theo (3) đều thuộc [a,b]

- g(x) có đạo hàm thoả mãn :

Trang 2

g ′ ( x ) ≤ q < 1 , a < x < b (4)

trong đó q là một hằng số thì phương pháp lặp (3) hội tụ

Ta có thể minh hoạ phép lặp trên bằng hình vẽ a và b

Cách đưa phương trình f(x) = 0 về dạng x = g(x) được thực hiện như sau:ta thấy f(x)

= 0 có thể biến đổi thành x = x + λf(x) với λ ≠ 0.Sau đó đặt x + λf(x) = g(x) sao cho điều kiện (4) được thoả mãn

Ví dụ:xét phương trình

x3 + x - 1000 = 0 Sau bước giải sơ bộ ta có nghiệm x1 ∈ ( 9,10 )

Nếu đưa phương trình về dạng:

x = 1000 - x3 = g(x) thì dễ thấy | g'(x) | > 1 trong khoảng ( 9,10 ) nên không thoả mãn điều kiện (4)

Chúng ta đưa phương trình về dạng

3 1000 x

x = ưthì ta thấy điều kiện (4) được thoả mãn.Xây dựng dãy xấp xỉ

3

n

1 1000 x

x + = ưvới xo chọn bất kì trong ( 9,10 )

Trên cơ sở phương pháp này chúng ta có các chương trình tính toán sau:

Chương trình giải phương trình exp((1/3)*ln(1000-x)) với số lần lặp cho trước

Trang 3

Cho gi¸ trÞ ®Çu xo = 1.KÕt qu¶ tÝnh to¸n x = 9.966555

Trang 4

Giả sử cho phương trình f(x) = 0 với f(x)

liên tục trên đoạn [a,b] và f(a).f(b) < 0.Chia đoạn

[a,b] thành 2 phần bởi chính điểm chia (a + b)/2

1.Nếu f((a+b)/2) = 0 thì ξ = (a+b)/2

2.Nếu f((a+b)/2) ≠ 0 thì chọn [ a,(a + b)/2 ]

hay [ (a + b)/2,b ] mà giá trị hàm hai đầu trái dấu

và kí hiệu là [a1,b1].Đối với [a1,b1] ta lại tiến hành

như [a,b]

Cách làm trên được mô tả trong chương

trình sau dùng để tìm nghiệm của phương trình :

x4 + 2x3 - x - 1 = 0 trên đoạn [0,1]

printf("Tim nghiem cua phuong trinh phi tuyen");

printf("\nbang cach chia doi cung\n");

printf("Cho cac gia tri x0,x1,maxlap\n");

printf("Cho gia tri x0 = ");

y

x

ξ b1

Trang 5

Giả sử f(x) liên tục trên trên đoạn [a,b] và f(a).f(b) < 0.Cần tìm nghiệm của f(x) =

0.Để xác định ta xem f(a) < 0 và f(b) > 0.Khi đó thay vì chia đôi đoạn [a,b] ta chia [a,b] theo

tỉ lệ -f(a)/f(b).Điều đó cho ta nghiệm gần đúng :

Tiếp theo dùng cách đó với đoạn [ a,x1] hay [ x1,b] mà hai đầu hàm nhận giá trị trái dấu ta được nghiệm gần đúng x2 v.v

Về mặ hình học,phương pháp này có nghĩa là kẻ dây cung của đường cong f(x) qua hai điểm A[a,f(a)] và B[b,f(b)].Thật vậy phương trình dây cung AB có dạng :

Trang 6

)a()b(f

)a(fya

)a(a

printf("Tim nghiem cua phuong trinh phi tuyen\n");

printf("bang phuong phap day cung\n");

printf("Cho cac gia tri a,b\n");

printf("Cho gia tri cua a = ");

A

Trang 7

phương pháp tiếp tuyến) được dùng nhiều vì nó hội

tụ nhanh.Giả sử f(x) có nghiệm là ξ đã được tách

trên đoạn [a,b] đồng thời f'(x) và f"(x) liên tục và

giữ nguyên dấu trên đoạn [a,b].Khi đã tìm được

xấp xỉ nào đó xn ∈ [a,b] ta có thể kiện toàn nó theo

phương pháp Newton.Từ mút B ta vẽ tiếp tuyến với

đường cong.Phương trình đường tiếp tuyến là

)xx)(

b(f)x(

Tiếp tuyến này cắt trục hoành tại điểm có

y=0,nghĩa là :

)xx)(

b(f)x

( 0 = ′ 1ư 0

ư

hay :

)x(f

)x(x

x

0

0 0

Nếu f(a).f(b) < 0 ; f(x) và f"(x) khác không và giữ nguyên dấu xác định khi x [a,b] thì xuất phát từ x o [a,b] thoả mãn điều kiện f(x o ).f(x o ) > 0 có thể tính theo phương pháp Newton nghiệm ξ duy nhất với độ chính xác tuỳ ý

Khi dùng phương pháp Newton cần lấy xo là đầu mút của đoạn [a,b] để tại đó f(xo).f"(xo) > 0.áp dụng lí thuyết trên chúng ta xây dựng chương trình tính sau:

Trang 8

printf("Tim nghiem cua phuong trinh phi tuyen\n");

printf("bang phuong phap lap Newton\n");

printf("Cho gia tri cua x0 = ");

Trang 9

điểm đó có hoành độ lần lượt là a = x2,b = x1 và ta chọn thêm một điểm x0 nằm trong đoạn [x2,x1].Gọi

h1 = x1 - x0

h2 = x0 - x2

v = x - x0 f(x0) = f0f(x1) = f1f(x2) = f21

2 h

h

= γQua 3 điểm này ta có một đường parabol :

y = av2 + bv + c

Ta tìm các hệ số a,b,c từ các giá trị đã biết v:

2 2

2 2 2 2

1 1

2 1 1 1

0

2 0

fcbhah)xx(hv

fcbhah)xx(hv

fc)0(b)0(a)xx(0v

=++

2 1 0 1

2 1

2 0

1

fc

h

ahffb

)1(h

f)1(ffa

ư

=

γγ

γγ

Sau đó ta tìm nghiệm của phương trình av2 + bv + c = 0 và có :

ac4bb

c2x

n

2 0

2 , 1

Tiếp tục quá trình tính đến khi đạt độ chính xác yêu cầu thì dừng lại

Ta có : x0 = 2 f(x0) = -0.0907 h1 = 0.2

x1 = 2.2 f(x1) = -0.2915 h2 = 0.2 x2 = 1.8 f(x2) = 0.07385 γ = 1 Vậy thì :

Trang 10

91338.02

.0

2.0)45312.0()097.0(2915.0b

45312.0)

11(2.01

07385.0)11()0907.0()2915.0(1a

2 2

×

×

++

)0907.0(20

.2

4

2 4

2 4

109184.1c

81826.010474

.0

10474.0)4728.0(109184.10907.0b

4728.09095

.110474.09095.0

07385.09095.1)109184.1()0907.0(9095.0a

10 9184 1 2 89526

.

1

n

4 2

Ta cã thÓ lÊy n1 = 1.895494 lµm nghiÖm cña bµi to¸n

Ch−¬ng tr×nh gi¶i bµi to¸n b»ng ph−¬ng ph¸p Muller nh− sau:

printf("Cho khoang can tim nghiem [a,b]\n");

printf("Cho gia tri duoi a = ");

scanf("%f",&x2);

Trang 11

printf("Cho gia tri tren b = ");

b=(f(x1)-f(x0)-a*(h1*h1))/h1;

c=f(x0);

if ((a==0)&&(b!=0))

{ n1=-c/b;

n2=n1;

}

if ((a!=0)&&(b==0))

{ n1=(-sqrt(-c/a));

n2=(sqrt(-c/a));

}

if ((a!=0)&&(b!=0))

{ n1=x0-2*c/(b+(sqrt(b*b-4*a*c)));

x1=x0;

x0=xr;

Trang 12

} }

Phương pháp Bernoulli cho phép tính toán nghiệm lớn nhất α của một đa thức Pn(x)

có n nghiệm thực phân biệt.Sau khi tìm được nghiệm lớn nhất α ta chia đa thức Pn(x) cho (x

- α) và nhận được đa thức mới Qn-1(x).Tiếp tục dùng phương pháp Bernoulli để tìm nghiệm lớn nhất của Qn-1(x).Sau đó lại tiếp tục các bước trên cho đến khi tìm hết các nghiệm của

Pn(x)

Chúng ta khảo sát phương trình phương trình sai phân ϕ có dạng như sau :

ϕ = aoyk+n + a1yk+n-1 + + anyk= 0 (1)

Đây là một phương trình sai phân tuyên tính hệ số hằng.Khi cho trước các giá trị đầu

yo,y1, yn-1 ta tìm được các giá trị yn,yn+1, Chúng được gọi là nghiệm của phương trình sai phân tuyến tính (1)

Đa thức

Pn(x) = a0xn + a1xn-1 + +an-1x + an (2) với cùng một hệ số ai như (1) được gọi là đa thức đặc tính của phương trình sai phân tuyến tính (1).Nếu (2) có n nghiệm phân biệt x1,x2, ,xn thì (1) có các nghiệm riêng là

x

y k i

i =

Nếu yi là các nghiệm của phương trình sai phân là tuyến tính (1),thì

x c x c x c

n n k 2 2 k 1 1

với các hệ số ci bất kì cũng là nghiệm của phương trình sai phân tuyến tính hệ số hằng (1)

Nếu các nghiệm là sao cho :

| x1| ≥ | x2 | ≥ | xn| Vậy thì

2 2

1

1[ ( ) ]

])x

x(c

c1[xc

1 2 2 1 1 k 1 1

+

Trang 13

do đó :

])x

x(c

c1[

])x

x(c

c1[xy

y

k 1 2 1 2

1 k 1 2 1 2

1 k

1 k

+

+

=+

x( , k

1 2 k 1

kkhiy

yk 1

Nghĩa là :

y

ylimx

k 1 k 1

+

=

Nếu phương trình vi phân gồm n+1 hệ số,một nghiệm riêng yk có thể được xác định

từ n giá trị yk-1,yk-2, ,yn-1.Điều cho phép tính toán bằng cách truy hồi các

nghiệm riêng của phương trình vi phân

Để tính nghiệm lớn nhất của đa thức,ta xuất phát từ các nghiệm riêng y1 = 0,y1 = 0, ,yn =1 để tính yn+1.Cách tính này được tiếp tục để tính yn+2 xuất phát từ y1 = 0,y2 = 0, ,yn+1 và tiếp tục cho đến khi yk+1/yk không biến đổi nữa.Trị số của yk+n được tính theo công thức truy hồi :

) y a y

a ( a

yk+3 -10yk+2 + 31yk+1 - 30yk = 0

Ta cho trước các giá trị y1 = 0 ; y2 = 0 và y3 = 1.Theo (4) ta tính được :

y4 = - (-10y3 + 31y2 - 30y1) = 10

y5 = - (-10y4 + 31y3 - 30y2) = 69

y6 = - (-10y5 + 31y5 - 30y3) = 410

y7 = - (-10y6 + 31y5 - 30y4) = 2261

y8 = - (-10y7 + 31y6 - 30y5) = 11970

y9 = - (-10y8 + 31y7 - 30y6) = 61909

y10 = - (-10y9 + 31y8 - 30y8) = 315850

y11 = - (-10y10 + 31y9 - 30y8) = 1598421

y12 = - (-10y11 + 31y10 - 30y9) = 8050130

y13 = - (-10y12 + 31y11 - 30y10) = 40425749

y14 = - (-10y13 + 31y12 - 30y11) = 202656090

y15 = - (-10y14 + 31y13 - 30y12) = 1014866581

y16 = - (-10y15 + 31y14 - 30y13) = 5079099490

y17 = - (-10y16 + 31y15 - 30y14) = 24409813589

y18 = - (-10y17 + 31y16 - 30y15) = 127092049130

y19 = - (-10y18 + 31y17 - 30y16) = 635589254740

Tỉ số các số yk+1/yk lập thành dãy :

10 ; 6.9 ; 5.942 ; 5.5146 ; 5.2941 ; 5.172 ; 5.1018 ; 5.0607 ; 5.0363 ; 5.0218 ; 5.013 ; 5.0078 ; 5.0047 ; 5.0028 ; 5.0017 ; 5.001

nghĩa là chúng sẽ hội tụ tới nghiệm lớn nhất là 5 của đa thức

Chương trình 8-7

//phuong phap Bernoulli

#include <conio.h>

#include <stdio.h>

Trang 15

n i

i n i 1

1

n o

)x(Pxx

n o

o n o

1= − ′

)x(P

)x(Pxx

n 1

1 n 1

2= − ′Tiếp theo có thể đánh giá Pn(xi) theo thuật toán Horner :

P0 = a0

P2 = P1xi + a2

P3 = P2xi + a3

P(xi) = Pn = Pn-1xi + anMặt khác khi chia đa thức Pn(x) cho một nhị thức (x - xi) ta đ−ợc :

bk = ak + bk-1xi

Trang 16

bn = an + bn-1xi = Pn(xi)

Đạo hàm (3) ta được :

) x ( P ) x ( P ) x x ( ) x (

Pn′ = ư i n′ư1 + nư1

) x ( P ) x (

Như vậy với một giá trị xi nào đó theo (2) ta tính được Pn(xi) và kết hợp (6) với (7) tính được P′n(xi).Thay các kết quả này vào (1) ta tính được giá trị xi+1.Quá trình được tiếp tục cho đến khi | xi+1 - xi | < ε hay Pn(xi+1) ≈ 0 nên α1≈ xi+1 là một nghiệm của đa thức

Phép chia Pn(x) cho (x - α1) cho ta Pn-1(x) và một nghiệm mới khác được tìm theo cách trên khi chọn một giá trị xo mới hay chọn chính xo = α1.Khi bậc của đa thức giảm xuống còn bằng 2 ta dùng các công thức tìm nghiệm của tam thức để tìm các nghiệm còn lại

375 1 5 3 ) x ( P

) x ( P x x

0 n

0 n 0

ư

=Lặp lại bước tính trên cho x1 ta có:

096 0 6 3 ) x ( P

) x ( P x x

1 n

1 n 1

ư

=Quá trình cứ thế tiếp tục cho đến khi sai số chấp nhận được.Chương trình dưới đây mô tả thuật tính trên

Trang 17

d[k]=d[k-1]*x0+p[k-1];

} x1=x0-p[n]/d[n];

Trang 18

| xn+1- xn | ≤ q | xn - xn-1 | (6)

Trang 19

Do (6) đúng với mọi n nên cho n = 1 , 2 , 3 , ta có :

| x2 - x1 | ≤ q | x1 - xo |

| x3 - x2 | ≤ q | x2 - x1 |

yx

1 n 2 nxx

xx

2 1 n n n

xx2x

xxx

y

+ +

x = +

3xlnx

1)

x(f

Trang 20

if (z>20) printf("Khong hoi tu sau hai muoi lan lap\n");

x[1]=y;

} z=z+1;

Nguyên tắc của phương pháp Bairstow là trích từ đa thức Pn(x) một tam thức Q2(x) =

x2 - sx + p mà ta có thể tính nghiệm thực hay nghiệm phức của nó một cách đơn giản bằng các phương pháp đã biết

Việc chia đa thức Pn(x) cho tam thức Q2(x) đưa tới kết quả :

Pn(x) = Q2(x).Pn-2(x) + R1(x) với Pn(x) = aoxn+ a1xn-1+ a2xn-2+ + an

Q2(x) = x2 - sx + p

Trang 21

Pn-2(x) = boxn-2+ b1xn-3+ b2xn-4+ + bn-2

R1(x) = αx + β

Để có được một thương đúng,cần tìm các giá trị của s và p sao cho R1(x) = 0 (nghĩa là

α và β triệt tiêu).Với s và p đã cho,các hệ số b của đa thức Pn-2(x) và các hệ số α và β được tính bằng phương pháp truy hồi.Các công thức nhận được khi khai triển biểu thức Pn(x) =

s*x + p*x sẽ là nghiệm của đa thức Pn(x).Ta biết rằng bn-1 và bn là hàm của s và p :

bn-1 = f(s,p)

bn = g(s,p) Việc tìm s* và p*đưa đến việc giải hệ phương trình phi tuyến:

⎩⎨

=

=0)p,s(g0)p,s(

Phương trình này có thể giải dễ dàng nhờ phương pháp Newton.Thật vậy với một phương trình phi tuyến ta có công thức lặp :

xi+1 = xi - f(xi)/f'(xi) hay f'(xi)(xi+1 - xi) = -f(xi)

Với một hệ có hai phương trình,công thức lặp trở thành:

J(Xi)(Xi+1 - Xi) = -F(Xi) với Xi = { si,pi}T và Xi+1 = { si+1,pi+1}T

Trang 22

i i i i

i =

i

J X

fs

fpgs

gp( )=

∆p g

f

s f

gs

gp

fp

gs

pb s

( )

=0nên :

2 1

∂bs =b sb+ o

b3 = a3 + sb2- pb1 nên

3 2

Nếu chúng ta đặt :

k k

Trang 23

c2 = b2 + sc1 - pco

n 3

n 2

s

fc

s

fc

s

fc

3 n n 2 n 1 n

ccc

cbc

bs

2 n n 1 n 1 n

ccc

cbcbp

- Lặp lại bước 1 cho đến khi pi+1 = pi = p và si+1 = si = s

- Giải phương trình x2 - sx+ p để tìm 2 nghiệm của đa thức

- Bắt đầu quá trình trên cho đa thức Pn-2(x)

Với lần lặp ban đầu ta chọn s = -1 và p =1,nghĩa là tam thức có dạng x2 + x + 1

1.35.5

5.57.0

1.38.0

1.35.5

7.02.3

8.05.5

Trang 24

5.57.0

88.207.0

88.251.4

17.003.1

07.051.4

Chương trình sau áp dụng lí thuyết vừa nêu để tìm nghiệm của đa thức

Trang 25

e1=0.0001;

if (n==1)

{ printf("Nghiem cua he\n");

c[n-1]=b[n-1]+b[n]*p;

{ b[i]=b[i+2]*q+b[i+1]*p+a[i];

t=p1*p1+4*q1;

if(t<0)

{ printf("Nghiem phuc\n");

printf("%.8f+%.8fj\n",s,(sqrt(-t)/2));

printf("%.8f-%.8fj\n",s,(sqrt(-t)/2));

printf("\n");

}

Trang 26

else { printf("Nghiem thuc\n");

0)x, ,x,x,x(f

0)x, ,x,x,x(f

0)x, ,x,x,x(f

2 3 2 1 n

2 3 2 1 3

2 3 2 1 2

2 3 2 1 1

Trang 27

hay viết gọn hơn dưới dạng :

F(X) = 0 Trong đó : X = (x1,x2,x3, ,xn)

Với một phương trình một biến,công thức Newton là :

fx

fx

fxf

x

fx

fx

fx

fx

fx

fx

fx

( )

Dưới đây là chương trình giải hệ phương trình phi tuyến

1 3 2 3

1 2 4

1 2 3

Chương trình 8-11

//giai he pt phi tuyen

#include <conio.h>

#include <stdio.h>

Trang 28

if (s<=t) {

s=t;

l=i;

} }

{ s=a[k][j];

Trang 29

a[i][k]=0;

} y[n]=a[n][n+1]/a[n][n];

{ s=a[i][n+1];

} }

Ngày đăng: 13/12/2013, 11:15

HÌNH ẢNH LIÊN QUAN

Hìn ha Hình b Ta có định lí:Xét ph−ơng pháp lặp (3),giả sử :  - Tài liệu Chương 8: Giải gần đúng phương trình đại số và siêu việt pdf
n ha Hình b Ta có định lí:Xét ph−ơng pháp lặp (3),giả sử : (Trang 1)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm