我希望我的 Taylor 方法能够在执行时提示函数。我尝试使用MATLAB 文档中描述的input(prompt) 。问题是,每次在代码中遇到它都会提示我输入函数。
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);
但我得到一个错误:
使用 + 矩阵尺寸的错误必须一致。
taylorMethod>@(t,w)f(t,w)+h/2*fPrime(t,w) 中的错误(第 13 行) taylor2 = @(t, w) f(t, w) + h/2* f素数(t,w);
taylorMethod/w 错误(第 47 行) res = w(j) + h*taylor2(t(j), w(j));
taylorMethod 中的错误(第 35 行) fprintf('i = %d; t_i = %.2f; w(i) = %.10f\n', idx, t(idx), w(idx));
我没有将函数作为参数传递的原因是因为我想对不同的订单使用相同的代码......并且不同的订单不需要相同数量的函数。
有没有一种方法可以提示用户一次使用这些功能,并在整个过程中使用这些功能而无需再次提示?