matlab系统的初始条件,matlab 急初始条件为θ=0,x=-d(θ范围在0—90°之间吧)求大哥大姐们帮忙啊,本人急~用matlab求解出x...

问题描述:

matlab 急

初始条件为θ=0,x=-d(θ范围在0—90°之间吧)

求大哥大姐们帮忙啊,本人急~

用matlab求解出x和θ的关系,也可以是一系列数值解,需要程序!

没有贴图吗?我已经上传啦

1个回答

分类:

综合

2014-11-12

问题解答:

我来补答

没有方程怎么解

快给出方程

你先等等,这个东西需要迭代求解,速度比较慢.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function dx=nonlinear(t,x)

persistent count

if isempty(count)

count=0;

end

count=count+1;

fprintf('正在运行第%d次\n',count);

fprintf('运行到角度:%d\n',t);

theta1=85*pi/180;

r0=2000*tan(pi/6);

l=2000;

h=8;

d=15;

n=1.586;

%% 取使约束方程r0*sin(t)/sin(theta1)=n*l*sin(w)/sqrt(1-n^2*sin(w)^2)+(h+d+x)*tan(t)-x*tan(w)

%% 等式两边之差小于shredhold的最优w,如果没有满足精度要求的,则进一步精确划分W可能值,直到得到满足要求

%% 的W为止.

w_about=0;

calError=1;

shredhold=0.0005;

w=-pi;

percesion=0.001;

midVar=0.01;

flag=0;  %精化等级

while w_about==0

while calError>shredhold

if w>=pi

break;

end

w=w+pi/180*percesion;

calError=abs(3172*sin(w)/sqrt(1-2.5154*sin(w)^2)+(23+x)*tan(t)-x*tan(w)-1159.1*sin(t));

if calError

midVar=[midVar calError];

w_about=[w_about w];

end

end

w=w_about((midVar==min(midVar)));

fprintf('截断误差:%f',min(midVar));

percesion=percesion/10;

flag=flag+1;

fprintf('flag:%d\n',flag);

end

dx=(h+d+x)/( -(n*cos(w)-cos(t))/(n*sin(w)-sin(t))-tan(t) )/cos(t)^2;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

求theta在[0 PI/4]之间的关系

tic,[T3,Y3] = ode45(@nonlinear,[0 pi/4],-15);toc

有些误差:

展开全文阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值