首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用MATLAB符号工具箱求出二次方程的正解?

如何用MATLAB符号工具箱求出二次方程的正解?
EN

Stack Overflow用户
提问于 2014-03-06 18:28:07
回答 2查看 2.4K关注 0票数 1

我想用Matlab来求解这个方程。

代码语言:javascript
复制
e=2;
while (e<30)
    syms v;
    solve('(v-e) = -(0.5*0.2*1.276*v^2*0.3)');
    e=e+1;
end

例如,当我写“解题(‘(v-10)=-(0.5*0.2*1.276*v^2*0.3)”时,它起作用了。但这个方程中需要变量"e“。在某些情况下,这个方程有两个解(负和正),但我只需要正解。正确的语法是什么?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-06 18:51:56

要将e添加到您的等式中,可以将其作为一个数字连接到您的等式:['equation part one', num2str(e), 'end of your equation']中。

要获得正解,可以在方程( v>=0 )中添加一个条件。

以下是您的问题的完整解决方案的示例:

代码语言:javascript
复制
ans = zeros(1,size(2:29,2));
i = 0;
syms v;
for e = 2:29
    i = i+1;
    ans(i) = solve(['(v-',num2str(e),') = -(0.5*0.2*1.276*v^2*0.3) and v>=0']);
end
票数 1
EN

Stack Overflow用户

发布于 2014-03-06 21:20:29

没有必要使用字符串,除非您使用的是一个非常老版本的Matlab。这是使用solve的现代和首选的方式。

代码语言:javascript
复制
syms v positive;
e = 2:29;
s = zeros(length(e),1);
for i=1:length(e)
    s(i) = double(solve(v-e(i)==-0.5*0.2*1.276*v^2*0.3,v));
end

但是,由于这只是一个多项式,所以可以使用roots函数:

代码语言:javascript
复制
e = 2:29;
s = zeros(length(e),1);
for i=1:length(e)
    r = roots([0.5*0.2*1.276*0.3 1 -e(i)]);
    s(i) = r(r>=0);
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22232924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档