用Matlab进行练习

用Matlab进行练习,matlab,Matlab,考虑到柯西问题 y'=(y-1)^2(y-2)(y-a)和y(1)=y0 其中a=0、a=1或a=2: 编写一个程序,在不同情况下绘制问题的解决方案。它必须符合以下步骤: a) 程序将输入变量 b) 将视口分为三个子图,分别位于两个。。。(第一个和第二个有两个)。如果第一个子图选择a=0,则使用该命令;如果a=1,则使用第二个子图;如果a=2,则使用第三个子图 c) 创建一个固定大小为[1,10]x[-1,3]的图形轴。使用命令ode45和plot以红色定点绘制。放置轴名称和标题图,指示我们(a

考虑到柯西问题

y'=(y-1)^2(y-2)(y-a)和y(1)=y0

其中a=0、a=1或a=2:

编写一个程序,在不同情况下绘制问题的解决方案。它必须符合以下步骤: a) 程序将输入变量

b) 将视口分为三个子图,分别位于两个。。。(第一个和第二个有两个)。如果第一个子图选择a=0,则使用该命令;如果a=1,则使用第二个子图;如果a=2,则使用第三个子图

c) 创建一个固定大小为[1,10]x[-1,3]的图形轴。使用命令ode45和plot以红色定点绘制。放置轴名称和标题图,指示我们(a=0、a=1或a=2)所处的情况

这是我的决议:

function exercise6(a)

disp('partB')
f=inline('(y-1)^2*(y-2)(y-a)','y','a');
if a==0
subplot(2,2,1) 
hold on
end
if a==1
subplot(2,2,2)
hold on
end
if a==2
subplot(2,2,3)
hold on
end

disp('partC')

%f=inline('(y-1)^2*(y-2)(y-a)','y','a');
linspace(-1,3,50)
axis([-1,3,1,10])
[t,y]=ode45(inline('(y-1)^2*(y-2)(y-a)','y','a'),'0');
[t2,y2]=ode45(inline('(y-1)^2*(y-2)(y-a)','y','a'),'1');
[t3,y3]=ode45(inline('(y-1)^2*(y-2)(y-a)','y','a'),'2');
plot(t,y,'r')
plot(t2,y2,'r')
plot(t3,y3,'r')


if a ~= 0,1,2
disp('must take values 0,1,2')
以及错误:

使用inline/feval时出错(第25行) 内联函数的输入太多

参数中的错误(第38行) [def_tspan,def_y0,def_options]=feval(ode,[],[],'init',extras{:})

ode45中的错误(第114行) [neq、tspan、ntspan、next、t0、tfinal、tdir、y0、f0、odeArgs、odeFcn

Ejercicio6中的错误(第23行) [t,y]=ode45(内联(‘(y-1)^2*(y-2)(y-a)’,‘y’,‘a’,‘0’)

有什么解决办法吗


谢谢:)

显示了多个错误行,但都归结到了最上面的一行。 您创建的内联语句无效

如果要解决此问题,您需要在此处搜索:

inline('(y-1)^2*(y-2)(y-a)','y','a')

我不知道内联,但我猜
y
a
不属于内联语句。

我认为您的问题只是解算器函数的语法。根据手册:

[X,T]=ode45(@F,TimeSpan,Xo,[Options,P1,P2,P3…)

尝试切换

ode45(inline('(y-1)^2*(y-2)(y-a)','y','a'),'2'); 
致:

式中:t0=开始时间,tf=结束时间,y0=y初始值

您遇到的问题是,解算器的输入函数必须只有2个输入(时间和当前y值)。如果您在ODE45命令末尾声明其他输入,则会接受这些输入。(在本例中,附加输入为“a”,在ODE45的最后一个参数上定义。空参数为“OPTIONS”输入,可以留空


阅读:了解更多信息。

您想用ode45调用的第二个参数表达什么?根据文档,ode45(以及MATLAB的许多解算器)遵循以下语法之一:[T,Y]=解算器(odefun,tspan,y0);[T,Y]=解算器(odefun,tspan,y0,options);[T,Y,TE,YE]=解算器(odefun,tspan,y0,options);sol=solver(odefun,[t0 tf],y0…);此外,您使用的是哪个版本的MATLAB?Mi version ES R2012a7.14.739我试图表示问题陈述所说的内容。哎呀,稍微更正一下,输入函数的第一个参数必须是time!因此内联函数调用应该是这样的:ode45(内联('(y-1)^2*(y-2)(y-a)“,'t','y','a'),[t0 tf],y0,,2);('t'必须在那里,即使它没有在函数中使用)。如果a=0,则使用命令ode45并绘制他将如何在区间[1,10]中解决问题当y0=-1/0.9/1.95/2.01时,用蓝色溶液绘制?提前感谢,再次感谢您的阅读和理解。只需使用plot命令和“hold on”命令,并求解y0的所有值。图形将绘制在同一图形窗口上。(如果我理解正确,您希望将所有图形一起绘制,对吗?只需使用plot(t,y)命令(蓝色图形是默认颜色)。如果此答案解决了您的问题,您应该将其作为答案进行检查。那么,您建议在内联中添加什么解决方案?非常感谢您。如果a=0,请使用命令ode45并绘制他将如何在间隔[1,10]内解决问题当y0=-1/0.9/1.95/2.01时,用蓝色溶液绘制?提前感谢,再次感谢您的阅读和支持
ode45(inline('(y-1)^2*(y-2)(y-a)','t','y','a'),[t0 tf],y0,,2);