Cho phương trình ax 2 bx c 0 giải phương trình dùng hàm roots

BỘ GIÁO DỤC VÀ ĐÀO TẠOĐẠI HỌC CÔNG NGHỆ TP.HCMBÁO CÁO THỰC HÀNH TINHỌC KỸ THUẬTSV:Lớp:www.hutech.edu.vnTRANG 2| BÁO CÁO THỰC HÀNH TIN HỌC KỸ THUẬTBÁO CÁO THỰC HÀNH TIN HỌC KỸ THUẬTẤn bản 2019IIIMỤC LỤCMỤC LỤC4BÀI 4: SIMULINKBÀI 1: CƠ SỞ VỀ MATLABBài 1.1 Cho ma trận A = [2 7 9 7; 3 1 5 6; 8 1 2 5], giải thích kết quả của các lệnh sau:a. A'b. A(:,[1 4])c. A([2 3],[3 1])d. reshape(A,2,6)e. A(:)f. [A;A(end,:)]g. A(1:3,:)h. [A ; A(1:2,:)]i. sum(A)j. sum(A')k. [ [ A ; sum(A) ] [ sum(A,2) ; sum(A(:)) ] ]Bài 1.2 Cho ma trận A = [2 4 1; 6 7 2; 3 5 9], các lệnh cần thiết để:a. Lấy dòng đầu tiên của ma trận A.BÀI 4: SIMULINK5b. Tạo ma trận B bằng 2 dòng cuối cùng của A.c. Tính tổng các phần tử trên các cột của A. (gợi ý: tính tổng các phần tử trên cột 1:sum(A(:,1))).d. Tính tổng các phần tử trên các dòng của A.Bài 1.3 Giải hệ phương trình sau:2x1 + 4x2 + 6x3 – 2x4 = 0x1 + 2x2 + x3 + 2x4 = 12x2 + 4x3 + 2x4 = 23x1 - x2 + 10x4 = 10.Mã lệnh:Kết quả:Bài 1.4 Chứng tỏ rằng (A+B)C=AC+BC, với:Mã lệnh:Kết quả:Bài 1.5 Cho vector x = [3 1 5 7 9 2 6], giải thích kết quả của các lệnh sau:a. x(3)b. x(1:7)6BÀI 4: SIMULINKc. x(1:end)d. x(1:end-1)e. x(6:-2:1)f. x([1 6 2 1 1])g. sum(x)Bài 1.6 Tạo một vector x có 100 phần tử, sao cho: x(n) = (-1) n+1/(2n+1) với n = 0 –99.Mã lệnh:Bài 1.7 Cho phương trình ax2+bx+c=0, giải phương trình dùng hàm roots.Mã lệnh:Kết quả:Bài 1.8 Giải phương trình x3- 2x2+4x+5=0. Kiểm chứng kết quả thu được bằng hàmpolyval. Sinh viên có nhận xét gì về kết quả kiểm chứng.Mã lệnh:Kết quả:Nhận xét:Bài 1.9 Lặp lại bài 1.8 cho phương trình x7-2=0.BÀI 4: SIMULINK7Mã lệnh:Kết quả:Nhận xét:Bài 1.10 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.11 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.12 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.13 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.14 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.15 Thực hiện ghi các công thức toán học.Mã lệnh:Bài 1.16 Thực hiện đoạn chương trình và ghi nhận kết quả.Mã lệnh:Bài 1.17 Vẽ đồ thị hàm số y1=sinx.cos2x và hàm số y2=sinx 2 trong [0-2π], trêncùng hệ trục tọa độ:Kết quả:8BÀI 4: SIMULINKBài 1.18 Dùng các hàm semilogx, semilogy, loglog thay thế cho plot.Mã lệnh:Kết quả:Bài 1.19 Thực hiện như trên cho hàm số y =Mã lệnh:Kết quả:Bài 1.20 Vẽ hàm số r = sin (5θ) trong toạ độ cực:Kết quả:Bài 1.21 Vẽ hàm số r = 2sin(θ) + 3cos(θ)Mã lệnh:Kết quả:Bài 1.22 Vẽ hàm số 2x2 + y2 = 10 ở dạng toạ độ cực.Mã lệnh:Kết quả:Bài 1.23 Vẽ đồ thị 3D bằng hàm plot3:Kết quả:Bài 1.24 Vẽ mặt paraboloid z=x2+y2 trong không gian 3 chiều:Kết quả:BÀI 4: SIMULINK9Bài 1.25 Vẽ mặt dùng hàm surf và mesh.Mã lệnh:Kết quả:Bài 1.26 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.27 Thực hiện đoạn chương trình và ghi nhận kết quả.Kết quả:Bài 1.28 Kiểm tra kết quả hàm gptb2 để giải phương trình bậc hai ax2+bx+c=0.>>[x1,x2]=gptb2(1,6,-7)Kết quả:>>[x1,x2]=gptb2(2,7,14)Kết quả:>>[x1,x2]=gptb2(0,4,3)Kết quả:>>[x1,x2]=gptb2(1,6)Kết quả:Bài 1.29 Hàm vdcongdb(a,m,method) để vẽ một số đường cong trong hệ tọa độcực, với a là bán kính và m là số đường cong vẽ trên cùng trục tọa độ. Kiểm tra lại hoạtđộng của hàm, ví dụ:>>vdcongdb(1,5,’Becnulli’)Kết quả:10BÀI 4: SIMULINK>>vdcongdb(1,5,’ Astroit’)Kết quả:>>vdcongdb(1,5,’Xoanoc’)Kết quả:>> vdcongdb(1,5,’saikieu’)Kết quả:>> vdcongdb(5,’becnulli’)Kết quả:Bài 1.30 Hàm dudoan() để dự đoán kết quả sau mỗi lần tung một xúc xắc đồngnhất, 6 mặt.Kết quả:Kết luận về sự khác nhau giữa script file và hàm không có tham số vào.Bài 1.31 Viết function xuất ra màn hình bảng cửu chương.Mã lệnh:Kết quả:Bài 1.32 Viết function giaimach(E1,E2,J,R1,R2,C,R3) xuất ra công suất trên E1,E2, J; dòng điện trên R3.Viết script md1 nhập các giá trị E1, E2, J, R1, R2, C, R3; dùng function giaimach đểtính và xuất ra các giá trị công suất trên E1, E2, J; dòng điện trên R3.Mã lệnh:BÀI 4: SIMULINKKết quả:11BÀI 2: GUI(GRAPHICALINTERFACE)Bài 2.33 Thiết kế giao diện và kiểm tra kết quả.Kết quả:40 oF = ? 0C40 oF = ? 0R40 oF = ? KBài 2.34 Thiết kế giao diện và viết mã lệnh.Mã lệnh:Kết quả:n = 4, 2D:n = 4, 3D:Bài 2.35 Thiết kế giao diện và viết mã lệnh.Mã lệnh:Kết quả:Bien do = 4:Bien do = 0.1, sin:USERBien do = 0.2, sinc:Bien do = 0.3, sa:Bien do = 0.4, sa^2:Bài 2.36 Thiết kế giao diện và viết mã lệnh.Mã lệnh:Kết quả:Bài 2.37 Thiết kế giao diện và viết mã lệnh.Giao diện:Mã lệnh:Kết quả:BÀI 3: SYMBOLICBài 3.38 Dùng hàm dif để xác định đạo hàm của một hàm số.Kết quả:Bài 3.39 Tính đạo hàm cấp 2 của hàm số sau:Mã lệnh:Kết quả:Bài 3.40 Dùng hàm int để tính tích phân.Kết quả:Bài 3.41 Tính tích phân:Mã lệnh:Kết quả:Bài 3.42 Dùng hàm finverse để tìm hàm ngược.Kết quả:Bài 3.43 Vẽ đồ thịKết quả:Bài 3.44 Tính và vẽ đạo hàm của hàm số y = sinx3Mã lệnh:Kết quả:Bài 3.45 Vẽ mặt có phương trình sau:Mã lệnh:Kết quả:Bài 3.46 Dùng hàm solve giải phương trình và hệ phương trình.Kết quả:Bài 3.47 Giải phương trình:Mã lệnh:Kết quả:Bài 3.48 Giải hệ phương trình:Mã lệnh:Kết quả:Bài 3.49 Dùng hàm dsolve giải phương trình và hệ phương trình vi phân.Kết quả:Bài 3.50 Giải phương trình y’’ + 3y’ - 4y = e-4x +xe-xMã lệnh:Kết quả:Bài 3.51 Giải phương trình y’’ - 3y’ + 2y = 3x +5sin2x với điều kiện đầu y(0) = 1 vày’(0) = 1.Mã lệnh:Kết quả:Bài 3.52 Giải hệ phương trình:với ngõ vào V là hàm bước (hàm heaviside(x)).Mã lệnh:Kết quả:Bài 3.53 Giải phương trình với ngõ vào F(t) là hàm bước.Mã lệnh:Kết quả:Bài 3.54 Giải hệ phương trình:với ngõ vào u là hàm bước.Mã lệnh:Kết quả:BÀI 4: SIMULINKBài 4.55 Tính và vẽ DTFT có dạng:Kết quả:Bài 4.56 Mô phỏng tín hiệu AM:Sơ đồ khối:Kết quả:Bài 4.57 Giải hệ phương trình:Sơ đồ khối:Kết quả:Bài 4.58 Giải phương trình: x2 + 3x + 1 = 0Sơ đồ khối:Kết quả:Bài 4.59 Giải phương trình: x′(t) = −2x(t) + u(t)Sơ đồ khối:Kết quả:Bài 4.60 Mô phỏng hệ thống v' = (u – bv)/mKết quả:Bài 4.61 Mô phỏng hệ thống điều khiển tốc độ động cơ DC.Kết quả:Bài 4.62Sơ đồ khối:Kết quả:Bài 4.63Sơ đồ khối:Kết quả:

Theo bài giảng của Danilo Šćepanović - MIT Opencourseware
Nội dung

1. Đại số tuyến tính2. Đa thức3. Bài toán tối ưu4. Tính đạo hàm và tích phân số

5. Giải phương trình vi phân


1. Đại số tuyến tính
    a/ Hệ phương trình tuyến tính Với một hệ phương trình tuyến tính            x+2y - 3z = 5            -3x - y + z = -8             x - y + z = 0 Hệ này được biểu diễn dưới dạng ma trân : Ax=b. Trong MATLAB, thực hiện giải hệ này như sau:            >> A=[1 2 -3;-3 -1 1;1 -1 1];
           >> b=[5;-8;0];
           >> X=A\b; % X là một vector 3x1 chứa giá trị của x,y và z thỏa mãn phương trình.
           % Phép \ sẽ làm việc với hệ phương trình có A là ma trận vuông hoặc ma trận chữ nhật
           % Phép \ đưa ra một nghiệm khi hệ có vô số nghiệm.
           % Nếu hệ vô nghiệm, khi thực hiện MATLAB sẽ đưa ra một cảnh báo và vẫn trả về một vector 3x1.
     b/ Các phép toán khác với ma trận
>> mat=[1 2 -3;-3 -1 1;1 -1 1];
>> r=rank(mat); % Tính hạng của ma trận
>> d=det(mat); % Tính định thức, mat phải là ma trận vuông
% Nếu định thức khác không thì ma trận là khả đảo.
>> E=inv(mat); % Tính ma trận nghịch đảo
>> eig(mat) % Tính các trị riêng của ma trận
>> rank(mat) % Tìm hạng của ma trận
>> rref(mat) % Đưa một hệ tuyến tính về dạng bậc thang
=> Có rất rất nhiều câu lệnh thực hiện với ma trận, để xem tất cả bạn hãy vào help.
Bài Tập Giải hệ phương trình sau Hệ 1           x+4y =34           -3x+y=2 Hệ 2           2x-2y=4           -x+ y =3           3x+4y=2 Tính rank của ma trận của hệ 2.

2.    Đa thức


  • Đa thức bậc cao có thể dùng để xấp xỉ rất nhiều các hàm phi tuyến khác nhau
  • Matlab mô tả một đa thức bằng một vector chứa các hệ số. Mỗi vector P có thể dùng để mô tả một đa thức. Ví dụ: ax^3+bx^2+cx+d tương ứng với vector P=[a, b, c, d]
            P = [1 0 -2] mô tả đa thức x^2-2
            P = [2 0 0 0] mô tả đa thức 2x^3 
  • Tính toán với đa thức
    • Giả sử P là một vector có kích thước N+1 mô tả một đa thức bậc N. Để tìm nghiệm của đa thức sử dụng lệnh roots
                >> r = roots(P) % r là một vector có kích thước N
    • Ngược lại, nếu như biết các nghiệm của một đa thức, ta có thể tìm được đa thức đó với lệnh poly
                >> P = poly(r)  % r là vector chứa N nghiệm của P
    • Tính giá trị đa thức tại một điểm (lệnh polyval)
                >> y0 = polyval(P,x0)  % Tính y0 khi x = x0
    • Tính giá trị đa thức tại nhiều điểm
               >> y = polyval(P,x)        % x, y là 2 vector cùng kích thước 
  • Xấp xỉ đa thức
    • Matlab làm đơn giản việc tìm đa thức nội suy từ một bộ dữ liệu với lệnh polyfit.
                >> X=[-1 0 2]; Y=[0 -1 3];
                >> p2 = polyfit(X,Y,2);  % tìm đa thức bậc 2 phù hợp nhất đi qua các điểm (-1,0), (0 -1) và (2,3) 
                                                      % gõ help polyfit để biết thêm về cách dùng
                >> plot(X,Y,’o’, ‘MarkerSize’, 10); 
                >> hold on; 
                >> x = -3:.01:3; 

                >> plot(x,polyval(p2,x), ‘r--’);

Bài tập


Tính y= x^2 với x= -4:0.1:4

Cộng thêm nhiễu ngẫu nhiên vào các giá trị tính được đó. Trong bài tập này, hãy dùng hàm randn

Vẽ tín hiệu có nhiễu thu được. 

Tìm đa thức bậc 2 xấp xỉ bộ dữ liệu có nhiễu đó. Vẽ đa thức đó trên cùng một đồ thị. Dùng cùng giá trị x và đường màu đỏ  

Hướng dẫn>> x=-4:0.1:4;
>> y=x.^2; 

>> y=y+randn(size(y));>> plot(x,y,’.’);>> p=polyfit(x,y,2);

>> hold on; 

>> plot(x,polyval(p,x),’r’)

  • Giải phương trình phi tuyến
    • Nhiều bài toán thực tế buộc chúng ta phải giải phương trình f(x) = 0
    • Có thể dùng hàm fzeoro để giải nghiệm cho bất kỳ một hàm tùy ý. Tham số của hàm fzero là hàm số cần tìm nghiệm. Do đó trước khi dùng hàm fzero, ta cần tạo một mfile riêng chứa hàm muốn tìm nghiệm.
    • Ví dụ:

                    Tạo ra một file riêng chứa hàm. Lưu mfile này dưới tên 'myfun' sau đó gõ lệnh trên Work Space như sau:

Cho phương trình ax 2 bx c 0 giải phương trình dùng hàm roots

                    x=fzero('myfun',1) % 1 là giá trị ước đoán mà ta nghĩ nằm gần nghiệm
                    x=fzero(@myfun,1)

  • Tìm cực tiểu của hàm số
    • Lệnh fminbnd : tìm cực tiểu của một hàm trên một khoảng bị chặn.
    • Ví dụ ta đã có hàm myfun lưu trong 1 mfile nào đó. Muốn tìm giá trị nhỏ nhất của hàm này trên khoản [-1, 2] ta làm như sau:
                    >> x=fminbnd('myfun',-1,2);
                    % Chú ý: hàm myfun là một hàm một biến
                    % fminbnd sẽ trả về một điểm cực tiểu của hàm myfun trong đoạn [-1 , 2]
  • Lệnh fminsearch: tìm một cực tiểu của một hàm trên toàn bộ miền xác định
                    >> x=fminsearch('myfun',0.5)  % tìm một cực tiểu địa phương bắt đầu từ  x=0.5
  • Khi bạn muốn tìm cực trị hoặc tìm nghiệm một hàm mà không muốn tạo một mfile để chứa riêng hàm đó, có thể dùng cách sau:
          >> x=fzero(@myfun,1)
          Cách làm này thường được dùng hàm có dạng đơn giản
            >> x=fzero(@(x)(cos(exp(x))+x^2-1), 1 );   % ở đây f(x)= cos(exp(x))+x^2-1
            >> x=fminbnd(@(x)(cos(exp(x))+x^2-1),-1,2);
  • Opimization Toolbox
    • Nếu bạn thường xuyên làm việc với các bài toán tối ưu hóa, nên dành thời gian học cách sử dụng Optimization Toolbox. Đây là một Toolbox rất hữu ích khi làm việc với những bài toán tối ưu lớn và có cấu trúc.
    • Có thể kể ra một số câu lệnh trong Toolbox này như sau (vào help để có thêm thông tin):
                >> linprog      % Giải bài toán quy hoạch tuyến tính sử dụng phương pháp nội suy
                >> quadprog  Giải bài toán quy hoạch bậc 2
                >> fmincon   % Giải bài toán tối ưu phi tuyến có điều kiện ràng buộc
Bài tập
Tìm giá trị nhỏ nhất của hàm f(x)= cos(4x)sin(10x)exp(-|x|) trong dải  [-π,π] dùng hàm fminbnd

Hướng dẫn: Lập mfile với tên myFun.m với nội dung như sau:
function y=myFun(x)
y=cos(4*x).*sin(10*x).*exp(-abs(x));
Trên Work Space, tìm cực tiểu như sau:
>> x0=fminbnd('myFun',-pi,pi);
% Vẽ đồ thị hàm số trong khoảng đó để kiểm tra
>> figure; 
>> x=-pi:.01:pi; 
>> plot(x,myFun(x));