ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHMở đầ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.. và nhiều chương trình chuyên dụng cho từng bộ môn của toán học
Trang 1ĐẠ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”
Trang 2ĐẠ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
Trang 3ĐẠ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');
Trang 4ĐẠ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);
Trang 5ĐẠ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;
Trang 6ĐẠ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;
Trang 7ĐẠ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;
Trang 8ĐẠ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;
Trang 9ĐẠ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);
Trang 10ĐẠ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];
Trang 11ĐẠ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);
Trang 12ĐẠ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);
Trang 13ĐẠ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
Trang 14ĐẠ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
Trang 15ĐẠ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Ế
>
Trang 16ĐẠ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
Trang 17ĐẠ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.
http://vi.wikipedia.org/wiki/Ph%C6%B0%C6%A1ng_tr%C3%ACnh_b
%E1%BA%ADc_ba