giải phương trình vi phân chuyển động của cơ hệ

17 608 0
giải phương trình vi phân chuyển động của cơ hệ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phạm Tuấn Long Đồ án tin học Lời nói đầu Trong vài chục năm trở lại đây, với đời máy tính, Khoa học kỹ thuật có bớc phát triển mạnh mẽ Nhờ có máy tính, ngời giải toán phức tạp với khối lợng tính toán lớn mà trớc thực đợc Trong ngành khí nói chung học nói riêng, máy tính đóng vai trò quan trọng Ta sử dụng máy tính để khảo sát hệ học có cấu trúc phức tạp với phép tính có lên tới hàng nghìn,hàng vạn Chính thế, đồ án tin học khí môn học quan trọng cần thiết sinh viên ngành tin kỹ thuật, giúp cho sinh viên làm quen với công việc lập trình máy tính để tính toán thiết kế khí dễ dàng tiếp cận công việc trờng Đề tài em giải phơng trình vi phân chuyển động hệ gồm phần: Phần I: Giới thiệu hệ phơng trình vi phân cấp hệ phơng trình vi phân cấp cao áp dụng cho toán học Phần II: Mô tả cấu tạo lắc eliptic thiết lập phơng trình vi phân chuyển động lắc Phần III: Là phần viết chơng trình để giải toán hệ phơng trình vi phân cấp cấp hai Chơng trình gồm có module Molule1: Giải hệ phơng trình vi phân cấp phơng pháp RUNGE_KUTTA Module2: Giải hệ phơng trình vi phân cấp áp dụng cho hệ lắc ELIPTIC Mục đích đề tài nhằm khảo sát chuyển động hệ vị trí, vận tốcQua vẽ đồ thị mô tả dao động hệ đa nhận xét Cuối cùng, em xin gửi lời cảm ơn tới thầy đinh văn phong ngời tận tình hớng dẫn cho ý kiến quí báu giúp em hoàn thành đồ án Hà Nội ngày 27/10/2002 Sinh viên Phạm Tuấn Long Phạm Tuấn Long Đồ án tin học Phần thuyết minh I/ Giải gần hệ phơng trình vi phân thờng phơng pháp RUNGE_KUTTA Xét hệ gồm n phơng trình vi phân cấp y1= f1(x,y1,y2,,yn) y2= f2(x,y1,y2,,yn) (1) yn= fn(x,y1,y2,,yn) Với y1, y2,, yn hàm số x: yi=yi(x) i =1,2,.,n Ta viết gọn lại nh sau: yi= fi(x,y1,y2,,yn) Với điều kiện đầu: yi(x0)=yi0 i =1,2,,n Ta viết dới dạng ma trận: y= f(x,y) Với điều kiện đầu: y(x0) = y0 Trong đó: y = [y1,y2,,yn]T y= [y1, y2,., yn]T f = [f1, f2,., fn]T Để giải hệ ta có nhiều phơng pháp nhiên ta sử dụng phơng pháp RUNGE_KUTTA Biểu thức hồi quy cho phơng pháp RUNGE_KUTTA r điểm đợc viết nh sau: zi+1 = z1 + h(pr1k1 + pr2k2 +.+ prrkr ) Với k1 = f(xi,zi) k2 = f(xi + 2h, zi + h21k1) kr = f[xi + r h, zi + h(r1k1 + r2k2 + + r,r-1kr-1)] Trong prm, m = 1,2 ,r m, mj, m = 2,3, ,r j = 1,2,., r-1 số đợc xác định tuỳ theo phơng pháp Phơng pháp RUNGE_KUTTA phơng pháp nút để tính giá trị nút sau cần tính giá trị nút trớc Phơng pháp hay dùng phơng pháp nút điểm với độ xác cao trình tính toán tơng đối đơn giản Sơ đồ phơng pháp RUNGE_KUTTA nút điểm đợc viết nh sau: yi+1= yi + h(k1+ 2k2 + 2k3 + k4)/6 Với k1= f(xi,yi) Phạm Tuấn Long Đồ án tin học k2= f(xi+h/2,yi+hk1/2) k3= f(xi+h/2,yi+hk2/2) k4= f(xi+h,yi+hk3) Trong vấn đề kỹ thuật ta gặp toán dạng phơng trình vi phân cấp cao: y(n)= f(x,y,y,y,.,y(n-1)) (2a) với điều kiện đầu: y(i)(x0) = yi0 i = 0,1,2,.,(n-1) (2b) (i) Trong ta ký hiệu y đạo hàm cấp i y hàm số y = y(x) Dễ dàng chuyển hệ (1) sang hệ cách đa ra: y1= y, y2= y, y3= y, ,yn= y(n-1) Do ta có hệ phơng trình gồm n phơng trình vi phân cấp 1: y1 = y2 y2 = y3 yn-1 = yn yn = f(x,y1,y2, ,yn) Với điều kiện đầu: y1(x0) = y0, y2(x0) = y10,,yn(x0)=yn-1,0 Sau ta áp dụng phơng pháp RUNGE_KUTTA hệ phơng trình vi phân cấp để giải phơng trình II/ Phơng trình vi phân chuyển động lắc eliptic cách giải phơng pháp RUNGE_KUTTA Con lắc eliptic hệ gồm lò xo có độ cứng c nối với vật có khối lợng m1 Vật có khối lợng m1 đợc nối với chất điểm có khối lợng m2 không đáng kể thông qua dẫn có chiều dài l y m1 c Động lắc có dạng: T = T1 + T2 Trong đó: T1: Động vật có khối lợng m1 T2: Động lắc khối lợng m2 T1 = 1 m1v12 = m1 y 2 l m2 Phạm Tuấn Long Đồ án tin học 1 m2v22= m2( x 2 T2 = +y ) x1 = lcos() x = -lsin() y1 = y + lsin() y = y + lcos() (x +y = l2 + y (m1 + m2) y + y lcos() m2 (l2 + y lcos() ) Thế hệ: = -m2glcos() + cy2 d T T = Theo định lý LAGRANGE II ta có: - qi dt qi qi T= ) = l2sin2() + y + y lcos() + l2cos2() T y + i= 1,,n = (m1 + m2) y + m2 lcos() d T dt y = (m1 + m2) y - m2 lsin() + m2 lcos() T = 0, y = cy y T = m2l + m2 y lcos() d T dt = m2l m2 y lsin() +m2 l y cos() T = - m2 y lsin() = m2glsin() Hệ phơng trình vi phân chuyển động lắc có dạng: (m1+m2) y + m2l cos() m2l 2sin() + cy = m2l y cos() + m2l2 + m2glsin() = Sử dụng phép biến đổi toán học đa hệ phơng trình dạng Phạm Tuấn Long Đồ án tin học 2 y = (m2gsin()cos() + m2lsin() - cx)/(m1 + m2sin ()) = (-cos() y - gsin())/l Để thuận tiện cho việc lập trình đặt ff[1]=(m2gsin(y[3])cos(y[3])+m2lsin(y[3])y[4]y[4]cy[1])/(m1+m2sin2(y[3]) ) ff[2] = (-cos(y[3])ff[1]-gsin(y[3])/l f[1] = y[2] f[2] = ff[1] f[3] = y[4] f[4] = ff[2] III/ Phần chơng trình Phần nhằm giải hệ phơng trình vi phân cấp cấp qua khảo sát hệ lắc eliptic Chơng trình đợc viết ngôn ngữ C #include "fstream.h" #include"stdio.h" #include"math.h" #include"conio.h" #include"graphics.h" #include"dos.h" #include"iostream.h //****khoi tao hoa****// void khoitao() { int mh=0,mode=0; initgraph(&mh,&mode,"d:\\tc\\bgi"); } //****Module goi ham thu nhat****// void dif(float x,float*y,float*f) { f[1]=0*x+y[2]; f[2]=(1-y[1]*y[1])*y[2]-y[1]; } //*****Module goi ham thu hai*****// void module2(float*ff,float*f,float*y,float x,float m1,float m2,float l,float g,float c) { ff[1]=(m2*g*cos(y[3])*sin(y[3])+m2*l*sin(y[3])*y[4]*y[4]-c*y[1])/ (m1+m2*sin(y[3])*sin(y[3])); ff[2]=(0*x-g*sin(y[3])-cos(y[3])*ff[1])/l; f[1]=y[2]; f[2]=ff[1]; f[3]=y[4]; f[4]=ff[2]; } //*****Ham lam tron so*****// int round(float a) { if ((a-floor(a))>= 0.5) a=ceil(a); if ((a-floor(a))< 0.5) a=floor(a); return a; } //****Module giai he phuong trinh vi phan cap 1****// Phạm Tuấn Long Đồ án tin học void runge(float x,float h,int nstep,int n,float*y,float*f, float*f1,float*f2,float*f3,float*f4,float*yy) { float ts,hh,tt,t1; float p3[200],p4[200][4]; int i,j,xd,yd; hh=0.5*h; ts=x; printf("bien x cac gia tri cua y"); for(i=1;i[...]... đầu của con lắc Đó là chơng trình giải hệ phơng trình vi phân cấp một và hai bằng phơng pháp RUNGE_KUTTA Molule 1 nhằm giải hệ phơng trình vi phân cấp một, module hai nhằm giải hệ phơng trình vi phân cấp hai áp dụng cho bài toán cơ Khi cần sử dụng chơng trình với các hệ phơng trình vi phân khác nhau ngời sử dụng chỉ cần thay đổi các module sau: Đối với hệ phơng trình vi phân cấp một chỉ cần tác động. .. học) NXB Giáo Dục 4 Đỗ Sanh: Cơ lý thuyết (Động lực học) NXB Giáo Dục 16 Phạm Tuấn Long Đồ án tin học Mục Lục Trang Lời nói đầu 1 Phần thuyết minh 2 I/ Giải gần đúng hệ phơng trình vi phân thờng bằng 2 Phơng pháp RUNGE_KUTTA II/ Phơng trình vi phân chuyển động của con lắc 3 eliptic và cách giải bằng phơng pháp RUNGE_KUTTA: III/ Phần chơng trình 5 IV/ Một số kết quả của chơng trình 15 17 ... ta có thể giải đợc các phơng trình phi tuyến với độ chính xác khá cao và có thể khảo sát chuyển động của những cơ hệ phức tạp qua đó nghiên cứu đợc đặc tính của cơ hệ nh vị trí,vận tốc, gia tốc 15 Phạm Tuấn Long Đồ án tin học Tài liệu tham khảo 1 Đinh Văn Phong: Phơng pháp số trong cơ học NXB Khoa Học Kỹ Thuật 2 Tạ Văn Đĩnh: Phơng pháp tính NXB Giáo Dục 3 Đỗ Sanh: Cơ lý thuyết (Tĩnh học và động học)... Ngời sử dụng chỉ vi c đa số phơng trình cần tính toán vào module trên và thay đổi số n ở chơng trình chính (n cho biết số phơng trình cần đa và để tính toán ) Đối với hệ phơng trình vi phân cấp hai, ngời sử dụng chỉ cần tác động vào module: void module2(float*ff,float*f,float*y,float m2,float l,float g,float c) { } x,float m1,float Sau đó thay đổi số phơng trình cần tính toán tại chơng trình chính void... cần tính toán tại chơng trình chính void main() { } IV/ Một số kết quả của chơng trình Với nstep =110 ; m1= 50; m2= 4; l=10; c=100 y[1] = 2; y[2]=0; y[3] = 0; y[4] = 0; 11 Phạm Tuấn Long Đồ án tin học Ta có đồ thị: Với nstep =110 ; m1= 50; m2= 4; l=10; c=100 y[1] = 0; y[2]=2; y[3] = 0; y[4] = 0; Ta có đồ thị mô tả dao động của con lắc 12 Phạm Tuấn Long Đồ án tin học Với nstep =110 ; m1=50; m2=4;

Ngày đăng: 25/06/2016, 16:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan