我希望我的泰勒方法能够在执行时的功能提示。我试着用input(prompt)作为MATLAB文档中的说明。问题是,它会提示我每次遇到代码时都要输入函数。MATLAB获取函数的输入只有一次
function taylorMethod(a, b, h, alpha, order)
f = @(t, y) input('Enter f(t, y): ');
fPrime = @(t, y) input('Enter f''(t, y): ');
taylor2 = @(t, w) f(t, w) + h/2*fPrime(t, w);
if order > 2
f2Prime = @(t, y) input('Enter f''''(t, y): ');
taylor3 = @(t, w) taylor2(t, w) + h^2/factorial(3)*f2Prime(t, w);
if order == 4
f3Prime = @(t, y) input('Enter f''''''(t, y): ');
taylor4 = @(t, w) taylor3(t, w) + h^3/factorial(4)*f3Prime(t, w);
end
end
function res = t(i)
if i == a
res = a;
return;
end
res = h + t(i - 1);
end
idx = a;
for i = a:h:b
fprintf('i = %d; t_i = %.2f; w(i) = %.10f\n', idx, t(idx), w(idx));
idx = idx + 1;
end
function res = w(i)
j = i - 1;
if i == a
res = alpha;
return;
end
if order == 2
res = w(j) + h*taylor2(t(j), w(j));
elseif order == 3
res = w(j) + h*taylor3(t(j), w(j));
elseif order == 4
res = w(j) + h*taylor4(t(j), w(j));
end
return;
end
end
我也试图在用户输入存储在像这样的字符串:
fString = input('Enter f(t, y): ', 's');
fPrimeString = input('Enter f''(t, y): ', 's');
f = @(t, y) fString;
fPrime = @(t, y) fPrimeString;
taylor2 = @(t, w) f(t, w) + h/2*fPrime(t, w);
但我得到了一个错误:
Error using + Matrix dimensions must agree.
Error in taylorMethod>@(t,w)f(t,w)+h/2*fPrime(t,w) (line 13) taylor2 = @(t, w) f(t, w) + h/2*fPrime(t, w);
Error in taylorMethod/w (line 47) res = w(j) + h*taylor2(t(j), w(j));
Error in taylorMethod (line 35) fprintf('i = %d; t_i = %.2f; w(i) = %.10f\n', idx, t(idx), w(idx));
的原因,我没有通过功能作为参数,是因为我要使用不同的顺序相同的代码...和不同的订单不会有相同数量的所需要的功能。
有没有办法,我可以提示用户一次的功能,并使用功能,可不必再提示的方法吗?