作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/17 15:27:30
matlab 急
初始条件为θ=0,x=-d(θ范围在0—90°之间吧)
求大哥大姐们帮忙啊,本人急~
用matlab求解出x和θ的关系,也可以是一系列数值解,需要程序!
没有贴图吗?我已经上传啦
没有方程怎么解 
快给出方程 
你先等等,这个东西需要迭代求解,速度比较慢. 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
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=[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
有些误差: