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

Các phép tính đối với đa thức

7 485 1
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các phép tính đối với đa thức
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Toán học
Thể loại Giáo trình
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 7
Dung lượng 145,63 KB

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

Nội dung

CHUONG 14 14.1 Các nghiệm của đa thức Tìm nghiệm của đa thức là tìm giá trị để đa thức bằng không, một bải toán thưởng gặp trong thực tế.. Trong MATLAB một đa thức được biểu diễn bằng m

Trang 1

CHUONG 14

14.1 Các nghiệm của đa thức

Tìm nghiệm của đa thức là tìm giá trị để đa thức bằng không, một bải toán thưởng gặp

trong thực tế MATLAB có thể giải quyết những bài toán này và đồng thời cung cấp những công

cụ để tính toán đa thức Trong MATLAB một đa thức được biểu diễn bằng một vector hàng các

hệ số với bậc giảm dân Ví dụ đa thức

x4-12x°+25x+116 được nhập vào như sau:

>>p=[1 -12 0 25 116]

p=

1 -12 0 25 116

Nhớ rằng mục dành cho hệ số 0 cũng phải được gõ vào nếu không MATLAB sẽ không

hiểu được hệ số của biểu thức bậc mấy là không Sử dụng dạng này thì nghiệm của một đa thức

có thé tim duoc bang cach dung ham roots

>> r = roots(p)

r=

11.7374

2.7028

-1.2251 + 1.46721

-1.2251 - 1.4672I

Bởi vi trong MATLAB cả đa thức và các nghiệm của nó đều là vector nên MATLAB ngầm

quy ước rằng đa thức là vector hàng, còn các nghiệm là các vector cột Nếu biết trước nghiệm

Trang 2

của một đa thức thi ta dễ dàng biết được đa thức đó, Trong MATLAB lệnh øø# sẽ thực: hiện Công việc này:

>> pp = poly(r)

pp=

1 -12 -1.7764e-14 25 116

>> pp(abs(pp)< 1e-12 = 0 % Gán những phần tử quá nhỏ bằng không

Bởi vi trong tính toán thường gặp những sai số nên đôi khi kết quả của lệnh poly cho ra

các đa thức cô các hệ số gần bằng không và các đa thức có phần ảo rất nhỏ như được chỉ ra ở trên, các giá trị băng không có thế được làm tròn bằng các công cụ về máng Tương tự như vậy,

ta có thể làm tròn một số phức để trở thành một số thực bằng ham read

14.2 Nhân đa thức

Hàm cønv thực hiện nhân hai đa thức (thực ra là hai ma trận), xét tích của hai đa thức sau: a(x) = x°+2x2+3x+4 va b(x) = x°+4x?+9x+16

>>a=[i 2 3 4]:b=[1 4 9 16]

>>G= conv(a,b)

C=

Kết quá là c(x) = x® +6x° +20x4 +50x°+75x74+84x+64

Khi ta nhân nhiều đa thức với nhau thì ta phải sử dụng lệnh ønw nhiều lần

14.3 Phép công đa thức

MATLAB không cung cấp các hàm trực tiếp thực hiện phép cộng hai đa thức, dùng phép cộng ma trận chỉ có tác dụng khi hai đa thức là hai vector có cùng kích thước Ví dụ như cộng

hai đa thức a(x} và b(x) ở trên:

>>d=a+b

d=

150

Trang 3

Kết quả là d(x)=2x3+6x?+12x+20 Khi hai đa thức cĩ bậc khác nhau thì đa thức cĩ bậc

thấp hơn phải được thêm vào các hệ số 0 để cho bậc của nĩ cĩ cùng bậc với đa thức cĩ bậc cao hơn Xét phép cộng hai đa thức c và d ở trên:

>>e=c+r[0 00 dj

ẹ=

Kết quả là e(x)=xÊ+6x°+20x“+52x?+81x?+84 Các giá trị 0 can phải được thêm vào ở phía đầu của vector chứ khơng phải phía đuơi, bởi vì các hệ số đĩ phải tương ứng với các hệ số bậc CaO CỦa X

Nếu bạn muốn, bạn cĩ thể tạo một hàm M_ file để thực hiện phép cộng đa thức tổng quát:

function p=polyadd(a,b)

%POLYADD Polynomial addition

%POLYADD(A,B) adds the polynomials A and B

if nargin<2

error(Not enough input arguments’)

end

a=a(:).; | Ymake sureinputs are row vectors

b=b(;).;

na=length(a); %find lengths of a and b

nb=length(b);

p=[zeros(1,nb-na) a]+[zeros(1,na-nb) bị;

% pad with zeros as necessary Bay giờ cĩ thể minh hoạ cho việc dùng hàm øø//aØø, hãy xét ví dụ trước day:

>> f = polyadd(c,d)

f=

Kết quả cũng giống như đa thức e ở trên Tất nhiên polyađd cũng cĩ thể dùng để thực

hiện phép trừ

Trang 4

>> g = polyadd{c,-d)

g-

14.4 Chia hai đa thức

Trong một số trường hợp ta phải chia đa thức này cho một đa thức khác, trong MATLAB công việc này được thực hiện bởi hàm đecøøv, sử dụng các đa thức b và c ở trên ta có:

>>Íjqr] = deconv(cb)-

q=

Kết quá này chỉ ra rằng c đem chia cho b thi được đa thức là q và đa thức dư là r trong

trưởng hợp này đa thức dư là đa thức 0 bởi vi c là đa thức chia hết cho q (nhớ rằng trên đây ta

đã nhận được đa thức c bằng cách đem nhân đa thức a với đa thức b}

14.5 Dao ham

Bởi vì dễ dàng tính được vị phân của một đa thức nên MATLAB đưa ra hàm øojyder để

tính vị phân đa thức:

>> h = polyder(g)

hz

14.6 Tính giá trị của một đa thức

Rõ ràng rằng bạn có thể cộng, trừ, nhân, chia, đạo hàm một đa thức bất kỳ dựa trên các

hệ số của nó, bạn cũng có thể dễ dàng tính được giá trị các đa thức này Trong MATLAB hàm

polyvalsé thuc hién cong viéc nay:

>> X = linspace({-1,3):

Sẽ chọn 100 điểm dữ liệu giữa -1 và 3

>>p=[l 4 -ƒ -16Ị,

152

Trang 5

Dung da thttc p(x) = x°+4x?-7x-10

>> v = polyval(p,x):

Tính giá trị của p(x) tại các gia trị của x và lưu trữ kết quả vào trong mảng v Sau đó kết

quả sẽ được vẽ ra bằng lệnh plot (hình 14.1):

>> plot(x, v), title(x^3+4x^2-7x-10'), xlabel(x')

x)+4xˆ-7x-10

30+

25+

20r

x

Hinh 14.1

14.7 Phân thức hữu tỉ

Đôi khi bạn gặp những bài toán liên quan đến tỉ số của hai đa thức hay còn gọi là phân thức hữu tỉ, ví dụ như các hàm truyền hay các hàm xấp xỈ øađe có dạng như sau:

nx) _ Nx”+N;x”1+ +Nạ +

dx) D,x°+D;x”?+ +D,„

Trong MATLAB phân thức cũng được mô phỏng bằng hai đa thức riêng rẽ Ví dụ như:

>> n=[1 -10 100] % anumerator

n=

1 -10 100

>> d=[1 10 100 0] % a dimominator

d=

1 10 100 0

153

Trang 6

>> z=roots(n) % the zeros of n(x)/d(x)

z=

9.0000 + 8.66031I

5.0000 - 8.6603i

>> p=roots(d) % the poles of n(x)/d(x)

p=

0

-5.0000 + 8.6603:

-5.0000 - 8.6603:

Đạo hàm của phân thức này theo biên x được tính dựa trên hàm /p//đer

>> [nd,dd]Epolyder(n,d)

nd =

dd =

Columns 1 through 6

Column 7

0

ở đây nd và dd là tử thức và mẫu thức của đạo hàm Một thao tac thông thường khác là tìm

phần dư của phân thức

>> [r,p,k]=residue(n,d)

r=

0.0000 + 1.1547i

0.0000 - 1.1547i

1.0000

p=

-5.0000 + 8.6603:

-5.0000 - 8.6603i

0

154

Trang 7

k=

Trong trudng hop nay ham residue tra về các hệ số mở rộng phân thức từng phần r, các ngniệm của phân thức là p và phần thương chia hết của phân thức là k Nếu bậc của tử số nhỏ hơn bậc của mâu số thì phân thức chia hết sẽ bằng không Trong ví dụ trên thì mở rộng phân

thức từng phần của phân thức đã cho là:

d(x) x4+5-86603i x-5+86803i x

Nếu cho trước các đa thức này thì phân thức ban đầu sẽ tìm được bằng cách sử dụng hàm

residue

>> [nn,dd]=residue(r,p,k)

nn =

1.0000 -10.0000 100.0000

dd = |

1.0000 10.0000 100.0000 0

Vi vay trong trường hợp này, hàm zes/đưe có thể thực hiện được việc chuyển đổi hai chiều tuỳ thuộc vào số lượng các tham số vào và ra truyền cho nó

Ngày đăng: 02/10/2013, 20:20

HÌNH ẢNH LIÊN QUAN

quả sẽ được vẽ ra bằng lệnh plot (hình 14.1): - Các phép tính đối với đa thức
qu ả sẽ được vẽ ra bằng lệnh plot (hình 14.1): (Trang 5)

TỪ KHÓA LIÊN QUAN

w