MATLAB中怎么解递推公式中包含的未知数?
可以把这个迭代做成一个方程。如下,用r=solve_r(10)就能解出参数值r=2.8481622132
function r=solve_r(init_r)
% 确定y1和y6两个初始条件
y1 = 0.98; x6 = 0.5;
y6 = 2.46*x6/(1+1.46*x6);
% 用fzero求解0
r = fzero(@(r)func(r, y1, y6), init_r);
%[r, fval, status, msg]=fzero(....
% 画图大概看一下0点分布
% test_r = linspace(-20, 20, 1000);
% delta = func(test_r, y1, y6);
% figure(1);plot(test_r, delta);
end
function output = func(r, y1, y6)
y_iter = y1;
for k=1:5
x_iter = y_iter/(2.46-1.46*y_iter);
y_iter = (r*x_iter+0.98)./(r+1);
end
% 迭代5次得到的y(6)和预期的值的差。如果r是正确的,差应该为0
% 所以求r系数 变成了求func=0的根的问题。
output = y_iter - y6;
end
求解结果r带入题目验证。如下图所示. 从y(1) = 0.98迭代,得到x(6) = 0.5