作业帮 > 数学 > 作业

急求matlab利用循环语句求解方程问题:方程是(-0.2*t.*(0.2*t/1000+0.25)-(93.75-0.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/05/01 21:03:10
急求matlab利用循环语句求解方程问题:方程是(-0.2*t.*(0.2*t/1000+0.25)-(93.75-0.04*t.^2/2000-0.2*t*
方程是:
(-0.2*t.*(0.2*t/1000+0.25)-(93.75-0.04*t.^2/2000-0.2*t*0.25))./sqrt(1+(0.2*t/1000+0.25).^2)-h=k/300
其中对k=0:100进行循环,h已知;本人刚学是新手求大神指教
这道题目不用循环,直接解即可

clear;clc;
h=-100;%自己改,注意h取的不合适这个方程是没有(实数)解的,到时候发现解不对先看看h合适不合适.
k=0:100;
t=fsolve(@(t)(-0.2*t.*(0.2*t/1000+0.25)-(93.75-0.04*t.^2/2000-0.2*t*0.25))./sqrt(1+(0.2*t/1000+0.25).^2)-h-k/300,k)
再问: 应该是-k/300,可带进去求出的解时负数,应该是正数
再问: fsolve(f,k),k不应该是是初始值吗?我的 意思是求解方程f(t)=-k/300,对K取1:100,求出解
再答: 本来就有两个解,你把初值改大点就可以了
clear;clc;
h=-100;%自己改,注意h取的不合适这个方程是没有(实数)解的,到时候发现解不对先看看h合适不合适。
k=1:100;
t=fsolve(@(t)(-0.2*t.*(0.2*t/1000+0.25)-(93.75-0.04*t.^2/2000-0.2*t*0.25))./sqrt(1+(0.2*t/1000+0.25).^2)-h+k/300,10000+k)%解出来t有100个数,分别对应k=1:100的解
再问: 改变初值会得到不同的解,可我需要的是精确解,因为我之前用SOLVE算了几个,和这个不太一样,求教一下。
再答: 数值解的精度其实已经足够了,如果你要精确的解析解,那就改用solve解
clear;clc;
h=-100;%自己改,注意h取的不合适这个方程是没有(实数)解的,到时候发现解不对先看看h合适不合适。
syms t
T=zeros(100,1);
for k=1:100;
temp=solve((-0.2*t*(0.2*t/1000+0.25)-(93.75-0.04*t^2/2000-0.2*t*0.25))/sqrt(1+(0.2*t/1000+0.25)^2)-h+k/300,t);
T(k,1)=temp(double(temp)>0);%解出来有2个数,按你要求取大于0的那个
end
%T就是你要的精确解,注意表达式很长,化成小数点就不是精确解了,你可以用vpa(T,m)得到任意精度m的数值解