数值分析吧 关注:2,281贴子:8,440
  • 0回复贴,共1
求助

求助高手解答高斯勒让德求积公式MATLAB代码

只看楼主收藏回复

function v = Gausslegendre(a, b, n)
m = 0.8;
b = 0.4;
mu = 0.3;
k = 80;
g = 9.81;
f = @(x) mu * g + (k/m) .* (mu*b + x) .* (1 - b./sqrt(b^2 + x.^2));
[lbk]x,w[rbk] = gausslegendre(n,a,b);
v = sum(w.*f(x));
end
function [lbk]x,w[rbk] = gausslegendre(n,a,b)
alpha = zeros(n,1);
beta = zeros(n,1);
gamma = zeros(n,1);
for k = 1:n
alpha(k) = 0;
beta(k) = sqrt((2*k-1)/(2*k));
gamma(k) = 1;
end
J = zeros(n);
for i = 1:n
for j = 1:n
if i == j
J(i,j) = alpha(i);
elseif i == j+1
J(i,j) = beta(j+1);
elseif i+1 == j
J(i,j) = beta(i+1);
end
end
end
[lbk]V,D[rbk] = eig(J);
lambda = diag(D);
phi = V(:,1);
x = zeros(n,1);
w = zeros(n,1);
for k = 1:n
x(k) = (a+b)/2 + (b-a)/2*phi(k);
w(k) = (b-a)/2*lambda(k)*phi(k)^2;
end
end
哪里错了求高手指正求求了


IP属地:塞浦路斯来自Android客户端1楼2024-05-08 00:21回复