Matlab 函数不 return 向量
Matlab function doesn't return vector
这是一个用于评估某个值的函数 f(x) 在向量 y 中显示不同的近似值,以便进行比较。输入是函数 f(符号或 function_handled)、值向量 n 和两个值 x0 和 x.
g=sym(f);
p(1)=subs(g,x0);
k=1;
for i=1:size(n) %Every iteration is an entry of y
while k<=n(i) %Recursive evaluation of the values
g=diff(g);
p(k+1)=subs(g,x0)/factorial(k-1);
k=k+1;
end
y(i)=double(subs(p,x));
end
我想在每个条目中将f(x)近似为多项式a+bx+cx^2+...,while循环计算a,b, c...,但 y 结果是一个值,而不是向量。此外,如果我尝试做
[y1 y2]=(function)
显示输出参数过多错误。你能告诉我为什么 MATLAB 不能将 y 理解为向量吗?
这应该可以解决问题。虽然,老实说,我无法理解您所写的功能。 (x-x0) 项在哪里?
function y = vctay(f, n, x, x0)
g=sym(f);
n = sort(n(:));
p = zeros(max(n)+1,1);
for i = 0:max(n)
%This is like you had it p(i) = (1/i!) f^i (x0)
p(i+1) = subs(g, x0) / factorial(i) ;
%This is just to save on a derivative in case it's costly
if (i == numel(p))
break
end
%This is what you had
g = diff(g);
end
y = arrayfun(@(j) dot(p(1:j+1), (x - x0).^(0:j)) , n ); %This is the secret sauce. It's the sum p_0 * (x - x0)^0 + p_1 (x - x0)^1 + ...
end
我想如果你知道 y 有多少个元素,最好的方法是将 y 定义为零向量,然后一一给它赋值
或者如果您不知道每次都展开向量 y(由于时间原因,这不是一个好主意!)
像
y(i+1) = [y(i) 某事];
这是一个用于评估某个值的函数 f(x) 在向量 y 中显示不同的近似值,以便进行比较。输入是函数 f(符号或 function_handled)、值向量 n 和两个值 x0 和 x.
g=sym(f);
p(1)=subs(g,x0);
k=1;
for i=1:size(n) %Every iteration is an entry of y
while k<=n(i) %Recursive evaluation of the values
g=diff(g);
p(k+1)=subs(g,x0)/factorial(k-1);
k=k+1;
end
y(i)=double(subs(p,x));
end
我想在每个条目中将f(x)近似为多项式a+bx+cx^2+...,while循环计算a,b, c...,但 y 结果是一个值,而不是向量。此外,如果我尝试做
[y1 y2]=(function)
显示输出参数过多错误。你能告诉我为什么 MATLAB 不能将 y 理解为向量吗?
这应该可以解决问题。虽然,老实说,我无法理解您所写的功能。 (x-x0) 项在哪里?
function y = vctay(f, n, x, x0)
g=sym(f);
n = sort(n(:));
p = zeros(max(n)+1,1);
for i = 0:max(n)
%This is like you had it p(i) = (1/i!) f^i (x0)
p(i+1) = subs(g, x0) / factorial(i) ;
%This is just to save on a derivative in case it's costly
if (i == numel(p))
break
end
%This is what you had
g = diff(g);
end
y = arrayfun(@(j) dot(p(1:j+1), (x - x0).^(0:j)) , n ); %This is the secret sauce. It's the sum p_0 * (x - x0)^0 + p_1 (x - x0)^1 + ...
end
我想如果你知道 y 有多少个元素,最好的方法是将 y 定义为零向量,然后一一给它赋值 或者如果您不知道每次都展开向量 y(由于时间原因,这不是一个好主意!) 像 y(i+1) = [y(i) 某事];