Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2014-11-25
年龄: 35
帖子: 1
声望力: 0 ![]() |
![]()
解一个非线性方程组,解出来的结果是一条曲线,现在想把曲线转化为一根杆(相当于加上一个半径),采取的是用龙格库塔法解决,下面是一些程序。
function dydt=ivpodefun(t,y) u=0.8;F=5;w3=0;d=0.2; v=0:0.1:2*pi; dydt=zeros(9,1); dydt(1)=[u/sin(y(5))]*y(2)*(y(3)+y(1)*cos(y(5))-w3)-(2*y(1)/sin(y(5)))*y(2)*cos(y(5)); dydt(2)=(y(1))^2*cos(y(5))*sin(y(5))+F*sin(y(5))-u*y(1)*sin(y(5))*(y(3)+y(1)*cos(y(5))-w3); dydt(3)=y(1)*y(2)*sin(y(5))-dydt(1)*cos(y(5)); dydt(4)=y(1); dydt(5)=y(2); dydt(6)=y(3); dydt(7)=sin(y(5))*sin(y(4)); dydt(8)=-sin(y(5))*cos(y(4)); dydt(9)=cos(y(5)); dydt=dydt(: ); end [t,y]=ode45(@ivpodefun,linspace(0,1,1000),[0.1;0.2;0.3;0.1;0.2;0.3;1;1;1]); p1=y(:,1); p2=y(:,2); p3=y(:,3); p4=y(:,4); p5=y(:,5); p6=y(:,6); p7=y(:,7); p8=y(:,8); p9=y(:,9); plot3(p7,p8,p9) 这是曲线的画法。 下面是加上一个半径的编程 m=d*(sin(v)*(-cos(y(4))*sin(y(6))-cos(y(5))*cos(y(6))*sin(y(4)))+cos(v)*(cos(y(6))*cos(y(4))-cos(y(5))*sin(y(6))*sin(y(4))))+y(7); n=d*(cos(v)*(cos(y(5))*cos(y(4))*sin(y(6))+cos(y(6))*sin(y(4)))+sin(v)*(cos(y(5))*cos(y(6))*cos(y(4))-sin(y(6))*sin(y(4))))+y(8); l=d*(-sin(v)*cos(y(6))*sin(y(5))-cos(v)*sin(y(5))*sin(y(6)))+y(9); mesh(m,n,l) 请大师们指点啊 |
![]() |
![]() |