1

鉴于柯西问题

y '= (y-1) ^ 2 (y-2) (ya) 和 y(1) = y0;

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

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

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

c) 创建一个坐标轴固定大小 [1, 10] x [-1, 3]。使用命令 ode45 并绘制红色固定点。放置轴名称和标题图,指示我们的情况(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 行)内联函数的输入过多。

odearguments 错误(第 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(inline('(y-1)^2*(y-2)(ya)','y','a'),'0');

请问有什么解决办法吗?

谢谢 :)

4

2 回答 2

1

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

如果你想修复它,这是你需要搜索的地方:

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

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

于 2013-04-05T19:40:26.743 回答
1

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

[X,T] = ode45(@F,TimeSpan,Xo,[选项,P1,P2,P3...])

尝试切换

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

至:

ode45(inline('(y-1)^2*(y-2)(y-a)','t','y','a'),[t0 tf],y0,,2);

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

您得到的问题是因为求解器的输入函数必须只有 2 个输入(时间和当前 y 值)。如果您在 ODE45 命令的末尾声明它们,则接受附加输入。(在这种情况下,附加输入是在 ODE45 的最后一个参数上定义的“a”。空参数是“OPTIONS”输入,可以留空。

阅读:http ://www.its.caltech.edu/~ae121/ae121/ode45_Ref2.pdf了解更多信息。

于 2013-04-05T19:50:00.310 回答