Giải hệ phương trình bậc 4 Matlab
Đã gửi 30-07-2018 - 22:51
Em chào cả nhà. Trước hết xin phép và nhờ admin giúp đỡ chuyển bài viết này của em tới vị trí phù hợp nếu em mắc sai sót! Em không biết về Toán, lại đang gặp vấn đề cần giải quyết bằng ứng dụng p.pháp Runge-Kutta bậc 4 để giải hệ phương trình trong file đính kèm. Tại page số 4 trong file đính kèm là 13 phương trình ứng với 13 ẩn cần giải. Trong đó thì ẩn là các biến nhân với số QR tại mỗi phương trình đó, nhưng chưa hết, các ẩn này có mặt trong cả các hàm r1,r2,..,r13 nằm rải rác trong các phương trình đó nữa (các hàm r này xem tại các page từ 1-3). Em rất mong được các bác chỉ giáo cho cách thức ứng dụng p.pháp Runge-Kutta bậc 4 để giải hệ phương trình này. Có bạn gợi ý em là chuyển hết ẩn của một phương trình sang một vế (ví dụ với p.trình 1, ẩn là So) nhưng em thấy nó vẫn nằm rải rác trong phương trình đó (chưa kể là có chứa sẵn ẩn của các phương trình tiếp theo), phức tạp quá, khiến em bất định. Em là Hà, sđt: 09.3730,8188, mail: [email protected] làm việc tại Cầu Giấy, Hà Nội. Bác nào có cách giải quyết mà ở cùng địa phương, xin cho em được gặp để dễ thông suốt vấn đề hơn. Em xin cảm ơn các bác nhiều ạ. File gửi kèmBài viết đã được chỉnh sửa nội dung bởi thanhha1984: 30-07-2018 - 22:53
Theo bài giảng của Danilo Šćepanović - MIT Opencourseware 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
P = [2 0 0 0] mô tả đa thức 2x^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 đỏ
>> y=y+randn(size(y));>> plot(x,y,’.’);>> p=polyfit(x,y,2); >> hold on; >> plot(x,polyval(p,x),’r’)
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:
x=fzero('myfun',1) % 1 là giá trị ước đoán mà ta nghĩ nằm gần nghiệm
% 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]
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);
>> 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)); |