vp_hue

New Member
Nhờ các cao nhân viết code tính cho em bài này với Em vô cùng biết ơn và hậu tạ







Động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế




1. Yêu cầu


Ta đã biết lực thế là lực mà công sinh ra nhằm dịch chuyển vật từ điểm A đến điểm B không phụ thuộc vào hình dạng quỹ đạo của vật mà chỉ phụ thuộc vào vị trí A và B.


Xét trường hợp lực thế phức tạp như sau: F(x)=\kappa{x}-4qx^3


Ta có thể tính toán thế năng của vật tại vị trí x là U(x)=-\int{F(x)dx}.


Bài tập này yêu cầu sinh viên tính toán và biểu diễn theo thời gian bằng Matlab động năng và thế năng của một chất điểm chuyển động dưới tác dụng của lực thế đã cho theo thời gian.




Nhiệm vụ


Xây dựng chương trình Matlab:


Các thông số kappa và q, khối lượng của chất điểm, vận tốc ban đầu của chất điểm, bước thời gian tính toán được định nghĩa trong chương trình.

Nhập thông số vị trí ban đầu của chất điểm (x_0).

Tại mỗi thời điểm tương ứng cấp số cộng bước thời gian, tính toán thế năng và động năng của chất điểm

Biểu diễn trên đồ thị với trục tung là năng lượng, trục hoành là thời gian.



Mở rộng:


Các thông số của chương trình đều có thể nhập vào

Hàm lực thế được nhập vào bằng công cụ Symbolic của MATLAB
 

Barnhardo

New Member
Code:
function n1b3

clc

syms x y real

f=input('nhap ham f(x,y)= ');

[a b]=solve([char(diff(f,'x')) '=0'],[char(diff(f,'y')) '=0']); % giai dao ham cap 1

a=double(a);

b=double(b);

% tinh dao ham cap 2

A=diff(f,2,x);

B=diff(f,x);B=diff(B,y);

C=diff(f,2,y);


cd=zeros(0); ct=zeros(0);

zcd=zeros(0); zct=zeros(0);

n=size(a,1);i=1;

while i<=n;

    x=a(i);y=b(i);

    sA=eval(A);sB=eval(B);sC=eval(C); %tim A,B,C

    delta=(sA*sC-sB^2); %tinh delta

    delta=double(delta);

    if delta > 0

	   if sA > 0 % A > 0 la cuc tieu

		  ct=[ct;a(i) b(i)]; zct=[zct;eval(f)];

		  i=i+1;

	   elseif sA < 0 % A > 0 la cuc dai

		  cd=[cd;a(i) b(i)]; zcd=[zcd;eval(f)];

		  i=1+i;

	   else

		  a(i)=[];b(i)=[];

		  n=n-1;

	   end

    else

	   a(i)=[];b(i)=[];

	   n=n-1;

    end

end


if size([zcd;zct],1)>= 2 % ve hinh voi 2 cuc tri tro len

    [x,y]=meshgrid(min(a)-abs(max( a )-min(a))/5:.1:max(a)+abs(max(a)-min(a))/5,min(b)-abs(max(b)-min(b))/5:.1:max(b)+abs(max(b)-min(b))/5);

    f=char(f);f=strrep(f,'^','.^');f=strrep(f,'*','.*'  );f=eval(f);

    [x y f]=khu(x,y,f);

    set(surf(x,y,f),'facecolor','b','edgecolor','non',  'facealpha',.3)

    hold on

    ctri(cd,ct,zcd,zct)

elseif size([zcd;zct],1)== 1 % ve hinh voi 1 cuc tri

    [x,y]=meshgrid(a-2:.1:a+2,b-2:.1:b+2);

    f=char(f);f=strrep(f,'^','.^');f=strrep(f,'*','.*'  );f=eval(f);

    [x y f]=khu(x,y,f);

    set(surf(x,y,f),'facecolor','b','edgecolor','non',  'facealpha',.3)

    hold on

    ctri(cd,ct,zcd,zct)

else % khong co cuc tri

    disp('f khong co cuc tri chat, con co cuc tri không chat hay khong thi chiu ' )

    [x,y]=meshgrid(-2:.1:2);

    f=char(f);f=strrep(f,'^','.^');f=strrep(f,'*','.*'  );f=eval(f);

    [x y f]=khu(x,y,f);

    set(surf(x,y,f),'facecolor','b','edgecolor','non',  'facealpha',.3)

end

rotate3d on

hold off

xlabel('truc x')

ylabel('truc y')

zlabel('truc z')

end


function ctri(cd,ct,zcd,zct) % chuong trinh ve cuc tri

cd=double(cd);zcd=double(zcd);

for i=1:size(zcd,1)

    disp([' f co cuc dai chat: ' '(' num2str(cd(i,1)) ',' num2str(cd(i,2)) ',' num2str(zcd(i)) ')'])

    [x,y]=meshgrid(cd(i,1)-0.2:.05:cd(i,1)+0.2,cd(i,2)-0.2:.05:cd(i,2)+0.2);

    z=zcd(i)+x.*0+y.*0;

    set(surf(x,y,z),'facecolor','r','edgecolor','non')

    text(cd(i,1),cd(i,2),zcd(i)+.1,['cuc dai (' num2str(cd(i,1)) ',' num2str(cd(i,2)) ',' num2str(zcd(i)) ')'])

end

ct=double(ct);zct=double(zct);

for i=1:size(zct,1)

    disp([' f co cuc tieu chat: ' '(' num2str(ct(i,1)) ',' num2str(ct(i,2)) ',' num2str(zct(i)) ')'])

    [x,y]=meshgrid(ct(i,1)-0.2:.05:ct(i,1)+0.2,ct(i,2)-0.2:.05:ct(i,2)+0.2);

    z=zct(i)+x.*0+y.*0;

    set(surf(x,y,z),'facecolor','r','edgecolor','non')

    text(ct(i,1),ct(i,2),zct(i)-.1,['cuc tieu (' num2str(ct(i,1)) ',' num2str(ct(i,2)) ',' num2str(zct(i)) ')'])

end

end

function [x y f]=khu(x,y,f) % chuong trinh loai bo cac diem khong ton tai cua ham f

f=double(f);

for i=1:length(x)

    for j=1:length(y)

	   if ~isreal(f(i,j))

		  f(i,j)=NaN;x(i,j)=NaN;y(i,j)=NaN;

	   end

    end

end

end


pro nao xem sai cho nao chi e vs tks
 

Các chủ đề có liên quan khác

Top