MATLAB中怎么解递推公式中包含的未知数?

RT,y(i+1)=r*x(i)/(r+1)+0.98/(r+1);y(i)=2.46x(i)/(1+1.46x(i)) 其中y(1)=0.98,x(6)=0.5,所以,理论上是能求出r的。但是计算起来太复杂了。求高手帮忙

可以把这个迭代做成一个方程。如下,用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

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答