Tải bản đầy đủ (.doc) (17 trang)

ỨNG DỤNG TRONG GIẢI PHƯƠNG TRÌNH BẬC BA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (894.1 KB, 17 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Mở đầu
Ngày nay máy tính đã thâm nhập vào hầu hết các lĩnh vực khoa học và đời
sống. Nhiều chương trình ứng dụng đã được phát triển liên quan tới quản lý dữ liệu,
in ấn, đồ họa sử lý ảnh Riêng đối với ngành toán đã có những sản phẩm phần
mềm mang tính phổ dụng như Mathematica, Matlab, Maple, và nhiều chương
trình chuyên dụng cho từng bộ môn của toán học. Những phần mềm trên giúp ích
rất nhiều cho việc giảng dạy toán, học toán cũng như việc ứng dụng toán trong các
ngành kỹ thuật, kinh tế, và vì thế tại các nước phát triển chúng trở thành cẩm nang
của nhiều sinh viên, kỹ sư và các ngành nghiên cứu khoa học.
Trong phạm vi của bài thu hoạch nhỏ này, em sẽ giới thiệu về lập trình
Symbolic được ứng dụng qua giải phương trình bậc 3. Qua đây, chúng em cũng xin
được gửi lời cảm ơn đến Giáo sư - Tiến sỹ Đỗ Văn Nhơn, người đã tận tâm truyền
đạt những kiến thức nền tảng cơ bản cho chúng em về môn học “Lập trình
Symbolic”.
MÔN HỌC : Lập trình Symbolic - 1 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
MỤC LỤC
Mở đầu 1
TÍNH TOÁN TRONG MAPLE 3
I. TÍNH TOÁN CƠ BẢN 3
Tính toán biểu thức chính xác dạng số hữu tỉ, căn thức, số phức 3
Các tính toán số nguyên gồm: 3
II. CÁC KIỂU CẤU TRÚC CƠ BẢN 8
Sequences 8
Lists 9
Sets 10
Arrays 10
Tables 11
Strings 11
Lệnh type và whattype 11


PHẦN II : ỨNG DỤNG TRONG GIẢI PHƯƠNG TRÌNH BẬC BA 13
I. TÓM TẮT CÁCH GIẢI 13
13
II. VIẾT PROCEDURE 14
III. KIỂM NGHIỆM VÀ HẠN CHẾ 15
Tài liệu tham khảo 16
MÔN HỌC : Lập trình Symbolic - 2 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
PHẦN I :
TÍNH TOÁN TRONG MAPLE
I. TÍNH TOÁN CƠ BẢN
Tính toán biểu thức chính xác dạng số hữu tỉ, căn thức, số phức
>
- Lệnh evalf =""evaluate to a floating-point number"."
>
> sqrt(2) * sqrt(2);
> sqrt(2.) * sqrt(2.); # Notice the decimal points.
> 1./3 + 1./3 - 2./3;
Các tính toán số nguyên gồm:
+ biểu thức thông thường
+ giai thừa, hàm length
+ Các hàm: abs, ifactor, iquo, irem, igcd, isprime, max, min, mod, v.v
+ hàm convert.
> 2*5; 2^5: 100/4; 100
/6
;
> number := 10^39 - 10^19 - 1;
>
> (ifactor(number)); # factorize the integer
> nextprime(number); # determine the next largest prime

> isqrt(number);
>
> iperfpow(64,'p');
MÔN HỌC : Lập trình Symbolic - 3 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
> p;
> 100!;
> 1000000!;
> length(%);
> kernelopts(maxdigits);
- Các tính toán số thực gồm:
> (1/2+1/2*sqrt(5))^2;
> expand(%);
> 1/%;
> simplify(%);
> rationalize(%);
> (4+2*3^(1/2))^(1/2);simplify(%);
> sqrt(4+2*sqrt(3));
> evalf(Pi);
> Digits;
> Digits:=15;evalf(sqrt(15));
> sin(2);
MÔN HỌC : Lập trình Symbolic - 4 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
> sin(2.0);
- Tính toán số phức.
> restart;
> Complex(0,1); Complex(2,3);
> (2+3*I) * (4+5*I);
> Re(%), Im(%), conjugate(%), abs(%), argument(%);

> 1/(2+p-q*I);
> evalc(%);
> restart;
> interface(imaginaryunit=J);
> J^2;
- Các hàm toán học:
+ sin, cos, tan,
+ sinh, cosh, tanh,
+ arcsin, arccos, arctan,
+ exp
+ ln, log[10]
+ sqrt
+ round, trunc
+ Zeta
v.v
- Số Pi
>
> sin( Pi/15 );
> convert( %, radical );
Maple is case sensitive
> PI;
MÔN HỌC : Lập trình Symbolic - 5 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
> pi;
> Pi;
Tính toán Symbolic
- Biến và phép gán
> x;
> x:=3;
> x;

> x:='x';
> x;
> p := x^2+2*x+1;
> p;
> x:=3;
> p;
> p := a*t^2+b*t+c;
> t:=2;
> p;
> a:=5;
> p;
> t:=z;
> p;
> x, y := 1, 2;
MÔN HỌC : Lập trình Symbolic - 6 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
So sánh bằng và evalb
> restart;
> a=5;
> a;
> a:=5;
> a;
> x^2-2*x-1 = 0;
> solve( %, x );
> a := b = 2;
> evalb(2+2=5);
> x:=5;y:=6;
> evalb(x=y);
>
- Lệnh assign

> restart;
> solve(3*x-4,{x});
> x;
> solve(3*x-4,{x});
> assign(%);
> x;
> x := 'x';
> y:=1;
> y:=y+x;
MÔN HỌC : Lập trình Symbolic - 7 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
> s := 0;
> s:=s,s;
- sum, add, product
- series, taylor
> restart;
> sum(i,i=1 10);
> add(i,i=1 10);
> taylor( exp(x), x=0, 4 );
> type(series( exp(x), x=0, 4 ),taylor);
II. CÁC KIỂU CẤU TRÚC CƠ BẢN
Sequences
> restart;
> S := 1,2,3,4;
a || S;
> x,y,z := 3,6, a1;
z;
> seq1 := a, b, c, d;
> seq2 := u, v, w, x, y, z;
> seq3 := seq1, seq2;

> seq4 := seq1, 'seq2';
> seq5 := 'seq1', 'seq2';
> seq6 := 'seq1, seq2';
> seq3;
MÔN HỌC : Lập trình Symbolic - 8 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
> seq4;
> seq5;
> seq6;
- Hàm seq, và ký toán tử $.
> seq(a^n,n=0 10);
a$4;
> seq( x^i, i=-2 5 );
> seq( Pi, i=-2 2 );
> seq( 1/n, n=1 10 );
> seq( evalf(1/n), n=1 10 );
>
Lists
- Cú pháp
> L := [1,2,3,a,b];
x := 'x':
polys := [1,x,x^2];
- Các lệnh: nops, op,
> nops(L);
op(L);
L[2];
L[2 4];
map(x->x^2,L);
member(3,L);
MÔN HỌC : Lập trình Symbolic - 9 -

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
>
Sets
- Cú pháp
> A := {1,2,3,x};
- Các toán tử: union, intersect, minus
>
- Các lệnh: nops, op
>
- Chuyển đổi kiểu giữa sequence, set, list
> S := 1,2,3;
A := {S};
L := [S];
L1 := [op(A)];
convert(L, set);
>
Arrays
> squares := array(1 3);
squares := array(1 3, [1,8,127]);
squares[2];
> P := array(1 3,1 3);
P[1,2];
P := array(1 3,1 3, [[m,1,1],[1,m,1],[1,1,m]]);
P[1,2];
MÔN HỌC : Lập trình Symbolic - 10 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Tables
- Table là sự mở rộng khái niệm Array: cho phép sử dụng chỉ số là bất kỳ loại gì,
không nhất thiết là số nguyên.
>

Strings
- Chuỗi gồm các ký tự giữa 2 nháy kép (").
> s := "hello.";
length(s);
s[2 4];
- Các hàm: (xem trong StringTools)
> ?StringTools
- Lệnh parse.
> expr := parse("x^2+y^2=1");
>
Lệnh type và whattype.
>
> restart;
> whattype(5.0);
> whattype(I);
> whattype(`an example of a long name`);
> whattype("an example of a long string");
> whattype({1, 2, 3});
> whattype(1, 2, 3);
>
> restart;
> type(5.0, float);
> type(x+1, `+`);
> type(a[1], symbol);
MÔN HỌC : Lập trình Symbolic - 11 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
> type(a[1], indexed);
> hastype(x+1, `+`);
> typematch(x+1, (a::symbol) &+ (b::integer));
> a, b;

> hastype(x+1/2*y, fraction);
> hastype(x+2*y, fraction);
> type(x^2+x+1, polynom);
> type({x^2+x+1, x^2-x}, set(polynom));
> type(x^2+x+Pi, polynom(integer,x));
>
> restart;
> typematch(exp(x), a::exp(b::name));
> a, b;
> number := 1: whattype(number);
> number := 0.75: whattype(number);
MÔN HỌC : Lập trình Symbolic - 12 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
PHẦN II : ỨNG DỤNG TRONG GIẢI
PHƯƠNG TRÌNH BẬC BA
I. TÓM TẮT CÁCH GIẢI
MÔN HỌC : Lập trình Symbolic - 13 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
II. VIẾT PROCEDURE
ptbacba := proc (pt, bienm)
local tr, k, i, j, g, v, a, b, c, d, vt, m1, x1, x2, x3, isConst;
isConst := false;
vt := lhs(pt);
printf("Phuong trinh co : vt= %a\n", vt);
a := coeff(vt, x^3);
printf("Phuong trinh co: a= %a\n", a);
b := coeff(vt, x^2);
printf("Phuong trinh co : b = %a\n", b);
c := coeff(vt, x);
printf("Phuong trinh co : c = %a\n", c);

d := coeff(vt, x, 0);
printf("Phuong trinh co : d = %a\n", d);
tr := simplify(b^2-3*a*c);
printf("Phuong trinh co : delta= %a\n", tr);
i := 9*a*b*c-2*b^3-27*a^2*d;
printf("Tu so cua k: i = %a,\n", i);
g := abs(tr.tr.tr+0.);
printf("Tri tuyet doi cua delta mu 3: g = %a,\n", g);
v := g^(1/2);
printf("Can cua delta: v = %a,\n", v);
j := 2*v;
printf("Mau so cua k: j = %a,\n", j);
k := i/j;
printf("Phuong trinh co: k = %a,\n", k);
if type(tr, `*`) = false and type(tr, `+`) = false and type(tr, symbol) = false then
isConst := true
end if;
if isConst = true then
if 0 < tr then
if abs(k) <= 1 then
x1 := (1/3)*(2*tr*cos((1/3)*arccos(k))-b)/a;
x2 := (1/3)*(2*tr*cos((1/3)*arccos(k)+(-2)*3.14/3)-b)/a;
x3 := (1/3)*(2*tr*cos((1/3)*arccos(k)+2*3.14/3)-b)/a;
printf("Phuong trinh co ba nghiem phan biet: x1 = %a, x2 = %a, x3 = %a\n",
x1, x2, x3)
else
MÔN HỌC : Lập trình Symbolic - 14 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
x1 := (1/3)*tr*abs(k)*(sqrt[3](abs(k)+sqrt(k^2-1))+sqrt[3](abs(k)-sqrt(k^2-
1)))/(a*k)-(1/3)*b/a;

printf("Phuong trinh co nghiem duy nhat: x1 = %a\n", x1)
end if
end if;
if tr = 0 then
x1 := (1/3)*(-b+sqrt[3](b^3-27*a^2*d))/a;
printf("Phuong trinh co nghiem boi : x1 = %a\n", x1)
end if;
if tr < 0 then
x1 := (1/3)*tr*(sqrt[3](k+sqrt(k^2-1))+sqrt[3](k-sqrt(k^2-1)))/a-(1/3)*b/a;
printf("Phuong trinh co nghiem duy nhat: x1 = %a\n", x1)
end if;
return ;
end if;
m1 := solve(tr = 0, bienm);
if m1 <> NULL then
x1 := subs(bienm = m1[1], (1/3)*(-b+sqrt[3](b^3-27*a^2*d))/a);
x2 := subs(bienm = m1[2], (1/3)*(-b+sqrt[3](b^3-27*a^2*d))/a);
printf("Khi %s bang %a ", bienm, m1[1]); printf("thi phuong trinh nghiem boi %a \n", x1);
printf("Khi %s bang %a ", bienm, m1[2]); printf("thi phuong trinh nghiem boi %a \n\n", x2)
end if;
m1 := solve(0 < tr, bienm);
if m1 <> NULL and abs(k) <= 1 then
printf("Khi %s thuoc %a hoac %a", bienm, m1[1], m1[2]);
x1 := (1/3)*(2*sqrt*(tr, symbolic)*cos((1/3)*arccos(k))-b)/a;
x2 := (1/3)*(2*sqrt*(tr, symbolic)*cos((1/3)*arccos(k)+(-2)*3.14/3)-b)/a;
x3 := (1/3)*(2*sqrt*(tr, symbolic)*cos((1/3)*arccos(k)+2*3.14/3)-b)/a;
printf("thi phuong trinh co 3 nghiem la: %a va %a va %a \n\n", x1, x2, x3)
end if;
if m1 <> NULL and 1 < abs(k) then
x1 := (1/3)*tr*abs(k)*(sqrt[3](abs(k)+sqrt(k^2-1))+sqrt[3](abs(k)-sqrt(k^2-1)))/(a*k)-

(1/3)*b/a;
printf("thi phuong trinh co nghiem la: %a \n", x1)
end if;
m1 := solve(tr < 0, bienm);
if m1 <> NULL then
x1 := (1/3)*tr*(sqrt[3](k+sqrt(k^2-1))+sqrt[3](k-sqrt(k^2-1)))/a-(1/3)*b/a;
printf("Khi %s thuoc doan %a hoac %a ", bienm, m1[1], m1[2]);
printf("Phuong trinh co nghiem duy nhat: x1 = %a\n", x1)
end if ;
end proc;
III. KIỂM NGHIỆM VÀ HẠN CHẾ
>
MÔN HỌC : Lập trình Symbolic - 15 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Phuong trinh co: vt= x^3+7*x^2-5*x-3
Phuong trinh co: a= 1
Phuong trinh co: b = 7
Phuong trinh co: c = -5
Phuong trinh co: d = -3
Phuong trinh co: delta= 64
Tu so cua k: i = -920,
Tri tuyet doi cua delta mu 3: g = 262144.,
Can cua delta: v = 512.0000000,
Mau so cua k: j = 1024.000000,
Phuong trinh co: k = 8984375000,
Phuong trinh co ba nghiem phan biet: x1 = 24.33333333, x2 =
13.21993730, x3 = -44.50421457
>
Phuong trinh co: vt= x^3+2*x^2-5*x-3
Phuong trinh co: a= 1

Phuong trinh co: b = 2
Phuong trinh co: c = -5
Phuong trinh co: d = -3
Phuong trinh co: delta= 19
Tu so cua k: i = -25,
Tri tuyet doi cua delta mu 3: g = 6859.,
Can cua delta: v = 82.81907993,
Mau so cua k: j = 165.6381599,
Phuong trinh co: k = 1509314038,
Phuong trinh co ba nghiem phan biet: x1 = 9.969282480, x2 =
1379641767e-1, x3 = -11.93592015
HẠN CHẾ : Chương trình chưa giải được phương trình bậc 3 có hệ số m .
Tài liệu tham khảo
1. Bài giảng môn học “Lập trình Symbolic” .
MÔN HỌC : Lập trình Symbolic - 16 -
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Giảng viên : GS.TS Đỗ Văn Nhơn
Chương trình đào tạo thac sĩ CNTT qua mạng.
2. Wikipedia
/>%E1%BA%ADc_ba
MÔN HỌC : Lập trình Symbolic - 17 -

×