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 (1.82 MB, 138 trang )
syms t s;
I1=sym('I1(t)');
laplace(i,t,s)
dI1=sym('diff(I1(t),t)')
l=laplace(dI1,t,s) % chuyen dao ham I1(t) sang Laplace
Các lệnh phụ trợ cần chú ý để giải một bi toán ký thuyết mạch
1. Lệnh collect( f , x) : l lệnh nhóm thừa số chung theo biến
Ví dụ f= 2*x + 3*x;
>>f= collect(f,x)
f=
5*x
2. Lệnh thay thế subs( f,{ x,y,z},{ 1,2,3}) thay thế x , y , z bằng 1 2 3
>> syms x;
>> syms R1 R2 R3;
>> f= R1+R2 + R3*x;
>> subs(f,{R1,R2,R3},{1,2,3})
ans =
3+3*x
3. Trong khi giải phơng trình :
Chúng ta thay thế phần tử laplace(I1(t),t,s) bằng LI1 nh sau
>> syms t s;
>> sym(' diff( I1(t),t)');
>> l=sym(' diff( I1(t),t)');
>> l=laplace(l,t,s)
l=
s*laplace(I1(t),t,s)-I1(0)
(chú ý khi thay I1(0) bằng giá trị no đó thì ta phải gán nh sau
ví dụ subs( l , { 'I1(0)' ,'laplace(I1(t),t,s)' } , {2, LI1})
kết quả sẽ đợc nh sau: l= s* LI1 -2
4. Sau khi giải ra nghiệm dòng , áp theo laplace thì ta chuyển đổi ngợc lại dùng hm
biến đổi ngợc laplace( hm ngợc l illaplace)
Ví dụ cụ thể
Cho mạch điện có các phơng trình nh sau:(dI1/dt)*R1 + R2 = I1*R3
% giải hệ phong trình trên banừg cách biến đổi sang laplace
Trang 11
%chơng trình viết trong M-file v đợc ghi trong file C5.m
syms R1 R2 R3 real;
I1=sym('I1(t)');
dI1=sym('diff(I1(t),t)');
eq1= dI1*R1 +R2-I1*R3;
syms t s ;
q1=laplace(eq1,t,s)
syms I1p;
q2=subs(q1,{R1,R2,R3,'I1(0)','laplace(I1(t),t,s)'},{1,2,3,2,I1p})
q2=collect(q2,I1p);% nhóm lại thừa số chung l I1p
I1p=solve(q2,I1p)% Giải phơng trình trên với biến I1p
ilaplace(I1p)% biến đổi ngợc lại sang I1(t)
Kết quả khi thực hiện chơng trình trên l:
>>C5
q1 =
R1*(s*laplace(I1(t),t,s)-I1(0))+R2/s-R3*laplace(I1(t),t,s)
q2 =
s*I1p-2+2/s-3*I1p
I1p =
2*(s-1)/s/(s-3)
% kết quả I1(t)
ans=
2/3+4/3*exp(3*t) % kết quả I1(t)
Sau đây l một số bi tập để giải.
5.5 Giải hệ phơng trình đại số tuyến tính
Phần ny đã trình by ở chơng II 'Th viện toán học Symbolic'
Muốn giải trớc hết hm phải l hm symbolic của một hoặc nhiều biến no đó
>>syms x y;
>> [x,y]=solve('x+y=1','x-11*y=5',x,y)
x=
4/3
y=
-1/3
> syms x y;
>> n=solve('x+y=1','x-11*y=5',x,y) % kết quả dạng cấu trúc
n=
Trang 12
x: [1x1 sym]
y: [1x1 sym]
>> n.x % truy nhập cấu trúc biến x
ans =
4/3
>> n.y % Truy nhập cấu trúc biến y
ans =
-1/3
5.6 Phơng trình vi phân thờng
DSOLVE Symbolic tìm nghiệm của phơng trình vi phân DSOLVE('eqn1','eqn2', ...) chỉ
chấp nhận các biểu thức vi phân dạng symbolic ('eq1'....) v điều kiện đầu .Một số
phơng trình hoặc các điều kiện đầu có thể đợc nhóm lại với nhau v cách nhau bằng
dấu phẩy(comma), đối với một thông số đầu vo , mặc định l biến 't' biến độc lập ny có
thể đợc thay đổi từ 't' đến các biến symbolic khác bằng cách thêm biến đó nh l thông
số đầu vo cuối cùng
Ví dụ nh sau: giả sử ta cần giải phơng trình vi phân dy/dx= x*y biến lấy tích phân(phải
l) x cho nên ta coi x l thông số đầu vo cuối cùng ta viết nh sau
syms x
Thông
số cuối
y=dsolve('Dy=x*y','Dy(0)=1','x');
ký hiệu 'D' định nghĩa phơng trình vi phân tơng ứng với biến độc lập ví dụ thông
thờng sử dụng dy/dt . ''D'' đợc theo sau bởi một số ,thì số đó định nghĩa bậc vi phân ví
dụ D2y nghĩa l d2y/dt2 ví dụ sau:
y = dsolve('D2y+y=1','y(0) = 0')
kết quả: y = 1+C1*sin(t)-cos(t)
Còn D3y tức l d3y/dt3
chú ý rằng biến symbolic không đợc chứa trong D ví dụ nh không thể ghi nh sau :
syms y; dsolve('Dy') (sai)
Điều kiện đầu xác định bởi biểu thức 'y(a)=b' hoặc 'Dy(a)=b'
ở đó y l một trong những biếnphụ thuộc v a v b l số không đổi nếu số điều kiện đầu
nhỏ hơn số biến phụ thuộc thì Kết quả sẽ đợc cho trong mảng C1,C2
Có ba kiểu đầu ra .Đối với một phơng trình vi phân thì có một đầu ra , đối với hệ có
nhiều phơng trình vi phân thì có số đầu ra tơng ứng (đầu ra có thể l một structer)
Examples:
dsolve('Dx = -a*x') returns
ans = exp(-a*t)*C1
x = dsolve('Dx = -a*x','x(0) = 1','s') returns
Trang 13
x = exp(-a*s)
y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0') returns
y=
[ sin(t)]
[ -sin(t)]
S = dsolve('Df = f + g','Dg = -f + g','f(0) = 1','g(0) = 2')
returns a structure S with fields
S.f = exp(t)*cos(t)+2*exp(t)*sin(t)
S.g = -exp(t)*sin(t)+2*exp(t)*cos(t)
Y = dsolve('Dy = y^2*(1-y)')
Warning: Explicit solution could not be found; implicit solution returned.
Y=
t+1/y-log(y)+log(-1+y)+C1=0
dsolve('Df = f + sin(t)', 'f(pi/2) = 0')
dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0')
S = dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')
S = dsolve('Du=v, Dv=w, Dw=-u','u(0)=0, v(0)=0, w(0)=1')
w = dsolve('D3w = -w','w(0)=1, Dw(0)=0, D2w(0)=0')
y = dsolve('D2y = sin(y)'); pretty(y)
Sử dụng ode23 v ode45 dùng để giải phơng trình vi phân thờng
Cấu trúc
[T,Y] = ODE23(ODEFUN,TSPAN,Y0) với TSPAN = [T0 TFINAL] tổ hợp hệ phơng
trình vi phân y' = f(t,y) từ thời gian T0 đến TFINAL với giá trị ban đầu Y0( with initial
conditions Y0). Hm ODEFUN(T,Y) chắc chắn trả về một véc tor cột tơng ứng với
f(t,y). Mỗi hng trong mảng kết quả Y tơng ứng thời điểm(t) trả về trong column vector
T
Để lấy kết quả tại các thời điểm T0,T1,...,TFINAL(tất cả l tăng đều hoặc giảm đều) sử
dụng TSPAN = [T0 T1 ... TFINAL].
[T,Y] = ODE23(ODEFUN,TSPAN,Y0,OPTIONS) solves as above with default
integration properties replaced by values in OPTIONS, an argument created with the
ODESET function. See ODESET for details.
Thông thờng sủ dụng options l một số vô hớng để nói về sai số liên quan ('RelTol')
Nếu không có thông số trên thì mặc định sai số liên quan l =1-e3 v sai số tuyệt đối mặc
định với tất cả các phần tử l 1e-6
Example
[t,y]=ode23(@vdp1,[0 20],[2 0]);
Trang 14
plot(t,y(:,1));
solves the system y' = vdp1(t,y), using the default relative error
tolerance 1e-3 and the default absolute tolerance of 1e-6 for each
component, and plots the first component of the solution.
% giai phuong trinh vi phan bac hai sau
% L*d2q/dt2 + R * dq/dt + q/c = Eo* cos(w*t)
% nguyen tac giai
global R L C Eo omega
L=100;
R=100;
C=0.25;
Eo=10;
omega=1;
%t0=0;
%ta=3;
%x0=[1 1]'
tol=1e-3;
[t,x]=ode23(@Mach1,[0 3],[1 1],tol);
kq=[t x(:,1) x(:,2)]
plot(t,x(:,1));
%-------------- Ham Mach1-------------------------------function f= Mach1(t,x)
global R L C omega Eo
f=[(Eo/L)*cos(omega*t)-x(1)/(C*L)-R*x(2)/L x(2)]';
%-------------------ket qua thuc hien trong command window-----kq =
0 1.0000 1.0000
0.0800 0.9216 1.0833
0.3585 0.5926 1.4308
0.5589 0.2895 1.7484
0.7093 0.0171 2.0319
0.8596 -0.3011 2.3615
1.0069 -0.6642 2.7362
1.1900 -1.1987 3.2858
1.4006 -1.9498 4.0557
1.6323 -2.9833 5.1132
1.8804 -4.3902 6.5518
Trang 15
2.1408 -6.2933 8.4990
2.4104 -8.8576 11.1269
2.6868 -12.3044 14.6669
2.9682 -16.9303 19.4292
3.0000 -17.5398 20.0576
Nguyên tắc giải bi toán : Đa phơng trình vi phân cấp n về n phơng trình vi phân cấp
một trong ví dụ trên ta đặt x1=q ,x2=diff(x1) nh vậy ta có hai phơng trình vi phân(
giống nh phơng pháp đặt biến trạng thái trong lý thuyết điều khiển tự động )
Trang 16
Chơng 5
đồ hoạ trong matlab
5.1 Mn hình đồ thị:
Đây l nơi trình by mọi hình ảnh , độ thị . đã đợc giải trình từ khung của sổ
Command của Matlab để xử lý theo các lệnh , công cụ mn hình.
Có hai cách để hiện khung mn hình đồ thị trắng:
Từ khung cửa sổ command kích
File/New v chọn Figure từ menu
xổ.
Cũng trong khung cửa sổ
Command gõ lệnh figure v ấn
enter.
5.2 các lệnh menu đồ hoạ trong matlab:
Để giúp các bạn có thể nắm vững v sử dụng chơng trình Matlab; phần
ny giới thiệu cáclệnh trên thanh menu cùng với các chức năng v công dụng
của từng menu con nằm trong các menu chính.
5.2.1 File:
Hiện menu xổ chứa các lệnh con có chức năng tạo, quản lý, điều hnh cũng nh thay
đổi các thông tin các thông số mặc định của chơng trình cho phù hợp với từng công việc.
New Figure
New Figure dùng để mở trang mn hình đồ hoạ mới.
Trang 1
Để mở trang mn hình mới chồng lên mn hình đồ thị cũ trong khi đồ thị cũ vẫn còn
hiện diện trên mn hình, chọn New Figure từ menu xổ. Một cửa sổ mới sẽ xuất hiện ra
nằm chồng lên mn hình cũ
Open:
Mở tập tin đồ thị cũ trong khung mn hình đồ thị để xử lý theo nhu cầu công việc.
Các bớc thực hiện mở đồ thị đã lu:
Kích File/ Open từ menu xổ, xuất hiện màn hình thoại Open .
-
Look
in:
Nơi
chứa
các tập tin đồ thị của Matlab. Nơi chứa có thể l ổ đĩa, th mục hoặc chơng trình
khác.
-
File nane: Tên tập tin muốn mở trong khung mn hình đồ thị .
-
Files of type: Thể loại tập tin đồ thị l .fig
Kích đúp vào tên tập tin muốn mở hoặc đánh tên tập tin vào khung
File name hoặc kích một lần vào tên tập tin, kích Open. Tập tin đồ
thị vừa chọn sẽ hiện lên màn hình.
Close:
Đóng khung mn hình đồ thị để về khung cửa sổ nhập lệnh của Matlab ( Biểu tợng
có chức năng tơng đơng với lệnh Close trong menu File)
Save:
Trang 2
Lu lại những thay đổi trong khung mn hình đồ thị hiện hnh. Tuy nhiên, có một
điều khác biệt l lệnh ny lu lại ngay những thay đổi trong tập tin mới sau khi đã đợc
đặt tên v đang hiện diện trên mn hình để tiếp tục xử lý.
Nếu bạn mở tập tin cũ với lệnh Open để xử lý v nếu đã có những thay đổi bất kỳ
trong nội dung hiện hnh v sau khi kích lệnh save, mn hình hiện khung thoại save as.
Từ khung thoại ny bạn có thể lu lại nhữnh thay đổi theo tên tập tin cũ hoặc với một tên
mới.
Save As: Hiện khung thoại Save As để bạn lu tập tin đồ thị mới vẽ theo một tập tin mới
hoặc lu lại những thay đổi trong nội dung của tập tin cũ đợc mở với lệnh Open theo tên
cũ hoặc với tên mới. Các bớc thực hiện nh sau:
Sau khi thay đổi , kích File /
Save as
-
Save in Nơi cha các tập tin
muốn. Lu. Nơi chứa các tập tin
đồ thị của Matlab. Nơi chứa có
thể l ổ đĩa, th mục hoặc
chơng trình khác.
-
File name Tên tập tin tuỳ
chọn để lu cho đồ thị vừa tạo
-
Save as type Thể loại tập tin
muốn lu. Mặc định l .fig đối
với các tập tin đồ thị
Sau khi chọn nguồn chứa (nếu cần thiết), đặt tên mới cho đồ thị, kích vo Save để
lu.
Export:
Lu lại tập tin đồ thị hiện hnh thnh một
dạng tập tin khác để sau ny có thể chuyển
sang chơng trình ứng dụng khác.
Tạo một đồ thị mới hoặc mở tập tin đồ
thị cũ lên mn hình.
Kích menu File v chọn Export. Mn
hình hiện khung thoại Export.
Trang 3