我有一个等式:
5 + 6x + 7x ^ 1.5 + 4x ^ 2
我可以使用matlab计算x的根吗?
谢谢。
答案 0 :(得分:3)
是的,您可以使用fzero
- 只要该函数具有非虚构的根。要包含虚根,请参阅answer by @Daniel
fun = @(x)5+6*x+7*x.^1.5+4*x.^2;
oneRoot = fzero(fun,0); %# find a root starting to look at zero
但是,在进行任何类型的优化问题(如果可能)之前绘制函数通常是一个好主意,既可以识别良好的起始值,也可以查看是否存在不良意外,例如没有root,你的情况。
figure
ezplot(fun,[-10 10])
您会注意到没有x< 0的数据,因为您的函数会返回负输入参数的虚数值。此外,该功能似乎是严格肯定的,因此您找不到x
的任何y==0
。
答案 1 :(得分:3)
对于数值解法,您必须使用fminsearch
来查找虚构的根。
fun = @(x)5+6*x+7*x.^1.5+4*x.^2;
%objective function: fun2 is zero for roots and never negative, searching mins of fun2 for a solution
fun2=@(x)(abs(fun(x(1)+i*x(2))));
oneRoot = sum(fminsearch(fun2,[0,0])*[1,i]);
答案 2 :(得分:2)
syms x
eq=5 + 6*x + 7*x^(15/10) + 4*x^2;
sol=solve(eq,x);
vpa(sol,16)
- 0.3923580269955611 + 0.3897288587097241i
- 0.3923580269955611 - 0.3897288587097241i