ĐẠ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
> 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(%);
> 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
> 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 -
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;
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;
(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