Matlab编程改错题,下面的程序不可用,求改正!%用迭代法求函数 x^n/(a+x)从0到1的积分function try_stableglobal n aN = 20; % 计算 N 个值a = 0.05;%--------------------------------------------% [方案I] 用递推公式 % I (k)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 19:09:25
Matlab编程改错题,下面的程序不可用,求改正!%用迭代法求函数 x^n/(a+x)从0到1的积分function try_stableglobal n aN = 20; % 计算 N 个值a = 0.05;%--------------------------------------------% [方案I] 用递推公式 % I (k)
Matlab编程改错题,下面的程序不可用,求改正!
%用迭代法求函数 x^n/(a+x)从0到1的积分
function try_stable
global n a
N = 20; % 计算 N 个值
a = 0.05;
%--------------------------------------------
% [方案I] 用递推公式
% I (k) = - a*I (k-1) + 1/k
I0 = Log[(a+1)/a]; % 初值
I = zeros (N,1); % 创建 N x 1 矩阵 (即列向量),元素全为零
I (1) = -a*I0+1;
for k = 2:N
I (k) = - a*I (k-1) + 1/k;
end
%--------------------------------------------
%[方案II] 用递推公式
% I (k-1) = ( - I(k) + 1/k ) / a
II = zeros (N,1);
if a >= N/(N+1)
II (N) = 0.5*(1/((a+1)*(N+1))+1/(a*(N+1)));
else
II (N) = 0.5*(1/((a+1)*(N+1))+1/N);
end
for k = N:-1:2
II (k-1) = ( - I(k) + 1/k ) / a;
end
%--------------------------------------------
% 调用 matlab 高精度数值积分命令 quadl 计算以便比较
III = zeros (N,1);
for k = 1:N
n = k;
III (k) = quadl (@f,0,1);
end
%--------------------------------------------
% 显示计算结果
%
clc
fprintf ('\n 方案I结果 方案II结果 精确值')
for k = 1:N,
fprintf ('\n I (%2 .0f) %17 .7f %17 .7f %17 .7f',k,I (k),II (k),III (k))
end
%--------------------------------------------
function y = f (x) % 定义函数
global n a % 参量 n 为全局变量
y ; 这儿该输入什么啊?�注意:这里一定要 '点' 运算
return
%--------------------------------------------
Matlab编程改错题,下面的程序不可用,求改正!%用迭代法求函数 x^n/(a+x)从0到1的积分function try_stableglobal n aN = 20; % 计算 N 个值a = 0.05;%--------------------------------------------% [方案I] 用递推公式 % I (k)
%%把下面这段保存为try_stable.m
function try_stable
global n a
N = 20; % 计算 N 个值
a = 0.05;
%--------------------------------------------
% [方案I] 用递推公式
% I (k) = - a*I (k-1) + 1/k
I0 = log((a+1)/a); % 初值
I = zeros (N,1); % 创建 N x 1 矩阵 (即列向量),元素全为零
I (1) = -a*I0+1;
for k = 2:N
I (k) = - a*I (k-1) + 1/k;
end
%--------------------------------------------
%[方案II] 用递推公式
% I (k-1) = ( - I(k) + 1/k ) / a
II = zeros (N,1);
if a >= N/(N+1)
II (N) = 0.5*(1/((a+1)*(N+1))+1/(a*(N+1)));
else
II (N) = 0.5*(1/((a+1)*(N+1))+1/N);
end
for k = N:-1:2
II (k-1) = ( - I(k) + 1/k ) / a;
end
%--------------------------------------------
% 调用 matlab 高精度数值积分命令 quadl 计算以便比较
III = zeros (N,1);
for k = 1:N
n = k;
III (k) = quadl (@f,0,1);
end
%--------------------------------------------
% 显示计算结果
%
clc
fprintf ('\n 方案I结果 方案II结果 精确值')
for k = 1:N,
fprintf ('\n I (%2.0f) %17.7f %17.7f %17.7f',k,I (k),II (k),III (k))
end
%%把下面的这段保存为f.m
function y = f (x) % 定义函数
global n a % 参量 n 为全局变量
y =x.^n./(a+x); %!这儿该输入什么啊?! �注意:这里一定要 '点' 运算
return
%%在command window输入try_stable,回车.