回 帖 发 新 帖 刷新版面

主题:[原创]第一次问问题,关于solve函数,求高手帮忙

最近在做程序时,遇到一个问题,如下:
solve('sqrt(x^5+x^4+x^3+x^2+x-a^2-b^2)=c+d*x','x')
其中x待求,a,b,c,d均是已知(执行上述命令时,abcd都是带变量名)
命令不能执行,提示如下:
error:(in allvalues/rootseq) cannot with symbolic coefficients.
意思就是:在所有的参量/根中,不能有符号向量。

但是,当我把上述命令里的abcd全部带入实际值时,却是能够执行的。
计算出来的结果是符号向量,10×1的数组,8个复数,2个实数。

现在的问题是,怎么能够解这个方程呢?因为程序所需,我不可能每一步都带入实际值,必须以变量表示。

求高手帮忙!!

回复列表 (共2个回复)

沙发

编成一个函数,将a,b,c,d当成参数传递进去。
function x=sol(a,b,c,d)
syms x;
fun=sqrt(x^5+x^4+x^3+x^2+x-a^2-b^2)-c-d*x;
x=solve(fun,'x');

在命令窗口中直接调用函数即可
如:
>> sol(1,2,3,4)
 
ans =
 
[                                      2.5674110610696290179553317456508]
[ -.74938067392338757537596003666878-.56693184106984810596965564852679*i]
[ -.74938067392338757537596003666878+.56693184106984810596965564852679*i]

板凳


谢谢了。我后来又想到可以全部设成syms来做,但是我觉得你的这个方法要好些。
我的qq57088776。经常交流一下啊。我对编程&gui还算比较熟悉。

我来回复

您尚未登录,请登录后再回复。点此登录或注册