我计划使用 switch 命令来使用具有不同 ODE 方法的多个代码块。根据用户输入的“差异”内容,代码将运行特定的代码块。关于为什么当我在命令窗口中输入 ODE(@(x,y)x^2,1,2,4,7,1)
时此函数不返回任何内容,有什么想法吗?我尝试在第一行中重新分配输出变量,但无济于事。
function [x1,y1] = ODE(f,x0,y0,xn,h,diff)
%h = step size
switch diff
case '1'
h=(y0-x0)/xn;
y1=zeros(1,xn+1);
x1=x0:h:y0;
y1(1)=x0;
for j=1:xn
k1=feval(f,x1(j),y1(j));
k2=feval(f,x1(j+1),y1(j)+h*k1);
y1(j+1)=y1(j)+h*(h(1)+(h/2)*(k1+k2));
end
r=[x1',y1'];
return
end
最佳答案
将行从 case '1'
更改为 case 1
可能会成功。或者,您可以使用 ODE(@(x,y)x^2,1,2,4,7,'1')
格式的字符输入来调用该函数。
切换角色大小写:
diff = '1'; %Character input%
switch diff
case 1
disp("diff is a number equal to 1");
case '1'
disp("diff is a character equal to '1'")
end
返回:
diff is a character equal to '1'
切换数字大小写:
diff = 1; %Numerical input%
switch diff
case 1
disp("diff is a number equal to 1");
case '1'
disp("diff is a character equal to '1'")
end
返回:
diff is a number equal to 1
关于matlab - 为什么使用 switch 命令时他的函数不返回解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66978321/