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,所以,理... 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的。但是计算起来太复杂了。求高手帮忙 展开
 我来答
李修灵
2015-03-18 · TA获得超过287个赞
知道小有建树答主
回答量:87
采纳率:100%
帮助的人:74.7万
展开全部

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式