matlab问题,已知h=v0*t*sin(alpha)-g/2*t^2+h0,h0=1.8,g=10,v0=10:5:100,alpha=0:5:90

求h=0时的时间tb(v0,alpha)

简单写如下:

t0的初值理论上可随便给,意味着求t0附近的零点,
step是为了求到正的t,不用也行,见后面关于t0和step的说明

V0=10:5:100;
Alpha=0:5:90;
h0=1.8;
g=10;

function t=f(t0,V0,Alpha,h0,g,step)

N1=length(V0);
N2=length(Alpha);
N=N1*N2; %没对参数对应一个方程,一共有N种组合

t=zeros(N,1); %初始化
k=1; %数组t的序号

for i=1:N1
for j=1:N2
v0=V0(i);
alpha=Alpha(j); %每对参数组合 (V0(i), Alpha(j))
t_k=fzero(@nested_f,t0); %试解nested_f方程在t0附近的零点
while t_k<=0 %我理解你的t是时间,时间就不应该有负的,所以多了下面这段while循环
t0=t0+step; %取一个大一点的t0
t_k=fzero(@nested_f,t0);
end
t(k)=t_k;

k=k+1; %t的序列号+1,求下一组参数下的t
end
end
function h=nested_f(t)
h=v0*t*sin(alpha/180*pi)-g/2*t.^2+h0; %我理解你给的alpha值是角度,要化成弧度
end
end

/*关于t0和step的值*/

虽然t的方程是个二次函数,理论上最多只有两个零点,但matlab计算时,如果在一定的循环内找不到0点,它就认为没有
我试了一下,如果t0<5,在某些alpha和v0的取值情况下,输出t为负值
但如果t0>5,在某些alpha和v0取值情况下,输出t为NaN,not a number,就是附近没找到0点
所以我加了while的那一段循环为了使t能求得一个正数解

这样的话t0可以取0,step你随便给,1,5,10,……都行
但即便这样,若干t的值还是求不到,输出为NaN,可能是由于对应参数的二次函数根本就没有0点,我没有考察那些取不到的点的参数问题,留给你了
温馨提示:内容为网友见解,仅供参考
无其他回答

运用matlab解决如下问题?
1、根据炮弹运动轨迹的参数方程:x=v0*t*cosα y=v0*t*sinα-0.5*g*t^2 消去t,求得 y(x)的表达式,即 y=x*tan(alpha)-0.5*g*(x\/(v0*cos(alpha)))^2;2、根据已知条件,v0=0.32e3; %km\/s x=10e3; %km 使用vpasolve函数,求出alpha(发射角),即 alpha=vpasolve(y==...

matlab问题
5.将函数 在 处展开成7阶 多项式的MatLab命令是 .6.求极限 的MatLab命令是 .7.求矩阵 的逆矩阵的MatLab命令是 .8.产生6阶服从 区间上均匀分布的随机数的MatLab命令是 .9.停止循环的MatLab命令是 break .10.测定矩阵阶数的MatLab命令是 .11.求和 的MatLab命令是 .12.启动 逼近器的MatLab命令是 .13.计算积...

这个二次优化问题怎样用matlab解,请指教。谢谢!H是对称矩阵。W是一维...
则t时刻小孩 的坐标为 ,玩具 的坐标为 。(1) t时刻,由于 的距离为a,由于小孩拉的是硬棒,在小孩拉玩具的过程中,假设棒与地面的角度不变,因此有:,即 (1)(2) 设玩具在A¢点的速度,则的方向应为玩具所走曲线c¢的切线方向,而玩具始终是沿着小棒A¢B&#...

求解一个matlab弹丸质点外弹道的微分方程组
弹丸落地时间:106.4184 弹丸飞行水平距离:5.5450e+004

用matlab求解下列方程组
v=8;%8.5,9 H=3.05;g=9.8;k=0.05;L=5;h=1.6:0.1:2.1;hlen=length(h);for i=1:hlen syms alpha t [alpha,t]=solve(v*cos(alpha*t)-k*v*cos(alpha*t^2)\/2-L==0,v*sin(alpha*t)-g*t^2\/2*(H-h(i))==0,'alpha','t')end ...

求大神帮忙!已知三维加速度参数方程,怎么用MATLAB画运动轨迹。_百度知 ...
代码:clear allclcw=pi\/4;g=9.8;alpha0=pi\/4;v0=1000;t=0:.1:100;alpha=atan(tan(alpha0)-g*t\/(v0*cos(alpha0)));ax=g*sin(alpha);ay=g*cos(alpha).*cos(w*t);az=g*cos(alpha).*sin(w*t);plot3(ax,ay,az)

MATLAB问题 运行会出现:Error: Function definitions are not permitted...
可能只是你的失误吧,第一行应该是function,少了一个n,最后一行length(e1)e1),第二个e1后的括号应属于第一个e1的。还有一点是getfolpd(key,G)函数调用时要输入参数才可以,也许你的程序里有参数。

matlab程序提示错误Error: The input character is not valid in MATL...
v0=10; %初始摆速设置 v=zeros(size(t)); %程序存储变量预先初始化,可提高执行速度 th=zeros(size(t));v(1)=v0;th(1)=th0;for i=1:length(t) %仿真求解开始 v(i+1)=v(i)+(g*sin(th(i))-k.\/m.*v(i)).*dt;th(i+1)=th(i)-1.\/L.*v(i).*dt;end subplot(2...

MATLAB分段函数
步骤如下 1、打开MATLAB软件,如图所示。2、建立一个脚本文件,具体方法如图所示。3、定义变量。4、建立循环,求解分段函数。5、采用以下指令画图。6、画出的图片如图所示。

matlab plot时运行到某一行运行不下去了
原因一,符号运算式子太太长了,运算需要时间;原因二,plot是对数值数据画图,语句行给定的参数是符号表达式,不行。修改代码几行:m=0:0.05:0.2*pi; %步长增加,便于更快运算出结果,不够可以再改回。xita1=eval(subs(xita1,t,m)); %以下三行用eval函数将符号表达式变成数值 xita1v=...

相似回答
大家正在搜