Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2014-12-08, 12:55   #1
qianduoduo.1021
初级会员
 
注册日期: 2014-11-25
年龄: 35
帖子: 1
声望力: 0
qianduoduo.1021 正向着好的方向发展
默认 matlab方程解法

解一个非线性方程组,解出来的结果是一条曲线,现在想把曲线转化为一根杆(相当于加上一个半径),采取的是用龙格库塔法解决,下面是一些程序。
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)
请大师们指点啊
qianduoduo.1021 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 18:28


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.