matlab积分画图问题!!!
clear;symsv;t=int(v/(4687052+173703.8*v+14.197136*v^3))plot(t,v)这是我的代码。。。为什么画不出来啊?它说E...
clear;syms v;t=int(v/(4687052+173703.8*v+14.197136*v^3))plot(t,v)这是我的代码。。。为什么画不出来啊?
它说Error using plotConversion to double from sym is not possible.
这该这么解决啊?
clear;
syms v;
t=int(v/(4687052+173703.8*v+14.197136*v^3));
plot(t,v) 展开
它说Error using plotConversion to double from sym is not possible.
这该这么解决啊?
clear;
syms v;
t=int(v/(4687052+173703.8*v+14.197136*v^3));
plot(t,v) 展开
1个回答
展开全部
我在你前面的提问里回答过了,但答案无法正常显示,说是“提交中”,唉,恶心的度娘。。。
分析
1、你要求的那个方程无法求出解析解;
2、求解微分方程需要初始条件,但这个题并没给初始条件。经过试探发现,如果初值为正,则系统发散;如果初值为负,似乎不论取什么初值,最终都收敛到一个固定值(仿真结论,并未进行理论分析)。
3、收敛的稳态值可以按照下面的思路求出来:稳态意味着v不变,则dv/dt=0,也就是上述方程的右侧为0,解方程可以得到
>> solve('4687052/v+173703.8+14.197136*v^2')
ans = [ -25.610148923197372792334831397939]
[12.805074461598686396167415698969-112.81418116868122677783012067587*i]
[12.805074461598686396167415698969+112.81418116868122677783012067587*i]
保留实数解,即v=25.61。
代码
V0 = [-0.001 -10 -30 -40];
lstr = cell(size(V0));
clf
for i = 1 :length(V0)
v0 = V0(i);
[t, v] = ode45(@(t,v)4687052/v+173703.8+14.197136*v^2,[0 0.001],v0);
plot(t, v, 'color', rand(1,3));
hold on
lstr{i} = sprintf('v = %g', v0);
end
legend(lstr{:})
xlabel('t')
xlabel('v')
结果图我就不贴了,贴了说不定又不显示了,自己运行一下就知道了。
更多追问追答
追问
嗯嗯 那如果要画x-t图呢?
追答
x-t图?请问x在哪里?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询