永发信息网

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

答案:1  悬赏:10  手机版
解决时间 2021-03-04 11:29
  • 提问者网友:泪痣哥哥
  • 2021-03-04 07:27
急求matlab利用循环语句求解方程问题: 方程是(-0.2*t.*(0.2*t/1000+0.25)-(93.75-0.04*t.^2/2000-0.2*t*
最佳答案
  • 五星知识达人网友:封刀令
  • 2021-03-04 08:27
这道题目不用循环,直接解即可


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的数值解
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯