作业帮 > 综合 > 作业

matlab循环画图问题,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 17:39:36
matlab循环画图问题,
我想用matlab画出1.5sin(x+arcsin(arctan(t/19)))-arctan(t/16)-x=0这个函数关系曲线,
即x和t的关系曲线(t是长度,取值范围是0到200,x是角度)
eq = '1.5*sin(x+asin(atan(t/19)))-atan(t/16)-x';
for i = 1:200
a(i) = subs(eq, 't', i);
b = char(a(i));
res(i) = fsolve(b, 0);
end
通过这样即可解出x的值
其中函数fsolve中的第二个参数指的是x的初值,我选0的时候解出来的有些x是虚数,你应该可以通过改变初值得到期望的结果
再问: 怎么运行后,显示了很多“Optimization terminated: first-order optimality is less than options.TolFun.”这是什么意思?另外,我想画出x和t的图,怎么画?
再答: 想画出x和t的图的话,在我上面发给你的代码后面加上下面这两句就行了:
c = 1:200;
plot(c, res)
你说的显示的那些东西我这里没提示,我也不清楚是什么情况,不过如果不影响计算结果,无视它就好了
再问: 麻烦你了,不过我怎么看不到结果,只能看到一排排的“Optimization terminated: first-order optimality is less than options.TolFun.”
再答: eq = '1.5*sin(x+asin(atan(t/19)))-atan(t/16)-x';
for i = 1:200
a(i) = subs(eq, 't', i);
b = char(a(i));
options = optimset('TolFun', 1e-5);
res(i) = fsolve(b, 0, options);
end
c = 1:200;
plot(c, res)
写了个新版本的给你,你看着TolFun后面的参数改就行了,往大改还是往小改你自己调试调试就知道了
再问: 谢谢大侠,最后一个问题,i=1:200,我觉得步长大了些,而且 我需要的是t从0到200,请问有没有办法?
再答: eq = '1.5*sin(x+asin(atan(t/19)))-atan(t/16)-x';
c = 0:0.01:200;
cnt = 1;
for i = 0:0.01:200
a(cnt) = subs(eq, 't', i);
b = char(a(cnt));
options = optimset('TolFun', 1e-5);
res(cnt) = fsolve(b, 0, options);
cnt = cnt + 1;

end
plot(c, res)
改成这样既可,数据量大了跑起来很慢的,别误以为死机了就强制关闭程序了