作业帮 > 综合 > 作业

matlab 解变系数方程

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/15 07:23:29
matlab 解变系数方程
用function编写函数完成求等式 a*x^2+b*x+c=0的根,输入变量为a,b,c三个系数,输出变量为等式的跟.
我的解决:我的a,b,c都是手动输入的
但是执行
function y=myfunction(x);
y=solve('a*x^2+b*x+c=0');
时候,得到的结果是
y =
1/2/a*(-b+(b^2-4*a*c)^(1/2))
1/2/a*(-b-(b^2-4*a*c)^(1/2))
也就是说输入的a,b,c并没有传进去,请问如何解决?
matlab 解变系数方程
函数定义有问题.因为你要定义的变量为a、b、c,所以函数体应有a、b、c三个变量.即
function y=myfunction(a,b,c);
syms x
y=solve(a*x^2+b*x+c);
 
在命令窗口中,执行

再问: 我按你的试了 确实可以 但是还有几个问题y=solve(a*x^2+b*x+c=0) 这个加上=0就会报错为什么?solve里面什么时候加引号?这里加了引号为什么会出错?syms x 是什么意思?不打可以吗?

再答: 问题1:为什么y=solve(a*x^2+b*x+c=0) 这个加上=0就会报错 因为这样写,不符合solve()函数的书写的格式 问题2:solve里面什么时候加引号 当a、b、c是一个实际的数时,可以加引号,即solve(’1*x^2+6*x+4=0‘) 问题3:syms x 是什么意思?不打可以吗? syms x是对x的变量声明,是全局变量。如不声明,solve(1*x^2+6*x+4)求解就会报错。不写的话,solve()必须书写成这样,solve(’1*x^2+6*x+4=0‘)