Lagrange多项式不在八度中绘制

问题描述 投票:0回答:1

该问题需要一个拉格朗日多项式L(c)来代替看似复杂的函数f。同样,在[1:0;之间绘制函数f和L(c)。 10:0]。但是,在代码计算出k的值之后,似乎无法创建绘图和图形。我究竟做错了什么?随附的代码如下。谢谢!

clear
pkg load symbolic
graphics_toolkit('gnuplot')
syms m x
c = []
for i = 1: 0.5 : 10
  c = [c,i]
endfor
d = length(c)
k = []
f = 3.* (1 .- ( 8 ./ vpa(pi.^2) .* ((1 ./ cosh(vpa(pi) .* vpa(x) ./ 2)) .+ symsum(1 ./ ((2 .* m .+ 1).^2 .* cosh((2 .* m .+ 1) .* vpa(pi) .* vpa(x) ./ 2)), m,1 ,Inf)))) ./ ((1 .- ( 192 ./ vpa(x) .* vpa(pi.^5)).*(tanh(vpa(pi) .* vpa(x) ./ 2) .+ symsum(tanh((2 .* m .+ 1) .* vpa(pi) .* vpa(x) ./ 2) ./ (2 .* m .+ 1).^5, m,1 ,Inf))));
for i = 1:d
  A = (1 - ( 192 / vpa(c(i)) * vpa(pi^5))*(tanh(vpa(pi) * vpa(c(i)) / 2) + symsum(tanh((2 * m + 1) * vpa(pi) * vpa(c(i)) / 2) / (2 * m + 1)^5, m, 1, Inf)))
  B = 1 - ( 8 / vpa(pi^2) * ((1 / cosh(vpa(pi) * vpa(c(i)) / 2)) + symsum(1 / ((2 * m + 1)^2 * cosh((2 * m + 1) * vpa(pi) * vpa(c(i)) / 2)), m, 1, Inf))) 
  K = 3 * B / A
  k = [k,K]
endfor
col = c(1)
matrixc = [];
for m = 1:d;
  prod = 1;    
  for t = 1:d
    if col == ((m+1)/2)
      col = col .+ ((10-1)/(d-1));
    endif   
    sol = (x.-vpa(col))./(vpa((m+1)/2).-vpa(col));
    prod = prod*sol;   
    col = col .+ ((c(2)-c(1))/(d-1));  
  endfor
  h = k(m);
  p = vpa(h).*prod;
  matrixc = [matrixc,p];
  col = 1;
endfor
L=sum(matrixc);
L
ezplot(L,[c(1),c(d)]);
hold on;
k(1)
plot(c,k);
legend('Lagrange Polynomial','K(x)');
xlabel('x-axis');
ylabel('y-axis');```


octave
1个回答
0
投票

您正在尝试绘制符号变量。我不知道这通常是否可行,但是在这种情况下,至少转换会引起问题。

首先通过强制转换为double来收集符号变量的值,然后可以按预期进行绘制:

plot( c, double(k) );
    
© www.soinside.com 2019 - 2024. All rights reserved.