查看: 167|回复: 5|关注: 0
打印 上一主题 下一主题

诈金花千术免费教学: [已解决] 如何将循环值带入求解一元二次方程

[复制链接]

新手

7 麦片

财富积分


诈金花闷牌技巧教程 www.ycdqd.tw 050


2

主题

4

帖子

0

最佳答案
跳转到指定楼层
1#
MATLAB 新手,在求解一元二次方程时出现了问题。由于一元二次方程变量中有循环值,希望将其带入求解一元二次方程的两个根。无奈如何debug都不能解决问题,特此发上来请教各位高手。非常感谢。
代码如下:

af=0;
lm=0.1;
u=0.1;
r=0.04;
lm=0.1;
for ct=0.1:0.1:0.5
    syms ra
    y=0.5*ct^2*ra^2+(af-0.5*ct^2)*ra-(r+lm*u);
    ra=vpasolve(y);
    ra1=ra(1);ra2=ra(2);
end

相关帖子

新手

49 麦片

财富积分


050


0

主题

45

帖子

11

最佳答案
2#
发表于 2019-11-3 21:07:39 | 只看该作者
我运行时没错(2019a),或者多项式你可以用roots

新手

7 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
3#
 楼主| 发表于 2019-11-3 21:10:27 | 只看该作者
hhh619 发表于 2019-11-3 21:07
我运行时没错(2019a),或者多项式你可以用roots

超感谢,我先试试roots行不行。不过,不知道是不是因为我是2016b的缘故么?完全算不出来,一直报错。

论坛优秀回答者

5

主题

1646

帖子

458

最佳答案
  • 关注者: 133
4#
发表于 2019-11-3 21:14:43 | 只看该作者 |此回复为最佳答案
你的算法设计在循环这一步考虑不足
两种解决方式
一种是预先设置合适的向量来存储每一次的结果
比如令循环是针对索引值ii  (for ii = 1 : 1 : N)
每一步根据索引值,从待选的参数集合中 (ctSet = [0.1:0.1:0.5];)选择第ii个赋值给ct,然后得到方程,求解后,将根保存在向量的第ii个位置上 ( ra1Set(ii)=ra(1); ra2Set(ii)=ra(2); )
  1. ctSet = [0.1:0.1:0.5];
  2. ra1Set = zeros(size(ctSet)); ra2Set = ra1Set ;
  3. for ii = 1 : 1 : numel(ctSet)
  4.     clear ra;
  5.     syms ra;
  6.     ct = ctSet (ii);
  7.     y=0.5*ct^2*ra^2+(af-0.5*ct^2)*ra-(r+lm*u);
  8.     ra=vpasolve(y);
  9.     ra1Set(ii)=ra(1); ra2Set(ii)=ra(2);
  10. end
复制代码


另一种是让保存根的向量自动生长,每次将新求得的根保存在最新的位置上
  1. ra1Set=[]; ra2Set=[];
  2. for ct=0.1:0.1:0.5
  3.     clear ra;
  4.     syms ra;
  5.     y=0.5*ct^2*ra^2+(af-0.5*ct^2)*ra-(r+lm*u);
  6.     ra=vpasolve(y);
  7.     ra1Set=[ ra1Set; ra(1) ]; ra2Set=[ ra2Set; ra(2) ];
  8. end
复制代码
提问请:①准确描述问题②贴代码别贴代码的截图③勿一问多帖或一帖多问④及时反?、菘辞寤馗吹拿扛鲎?/div>

新手

7 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
5#
 楼主| 发表于 2019-11-3 21:21:11 | 只看该作者
TouAkira 发表于 2019-11-3 21:14
你的算法设计在循环这一步考虑不足
两种解决方式
一种是预先设置合适的向量来存储每一次的结果

哇,认真看了好几遍。终于体会了一下其中要以。非常感谢??!继续学习探究中ing
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 诈金花闷牌技巧教程 返回列表