3.用自定义函数myRoot,求解一元二次方程: ax2+bx+c=0, 要求:入口参数a,bc,出口参数:方程的根x1,x2。 建立M文件通过调用函数myRoot,求解x2+2 x+4=0
时间: 2023-12-20 14:03:17 浏览: 78
下面是实现myRoot函数的M文件代码:
```matlab
function [x1, x2] = myRoot(a, b, c)
% 求解一元二次方程ax^2 + bx + c = 0的根x1, x2
delta = b^2 - 4*a*c;
if delta < 0
x1 = NaN;
x2 = NaN;
elseif delta == 0
x1 = -b / (2*a);
x2 = x1;
else
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
end
end
```
在这个函数中,我们首先计算判别式delta,然后根据delta的值来求解方程的根。如果delta小于0,则方程无实数根,我们用NaN表示;如果delta等于0,则方程有一个实数根,我们将x1和x2都设置为这个根;如果delta大于0,则方程有两个实数根,我们分别计算x1和x2。
然后,我们可以建立一个M文件来调用myRoot函数,求解x^2 + 2x + 4 = 0,如下所示:
```matlab
% 调用myRoot函数求解x^2 + 2x + 4 = 0
a = 1;
b = 2;
c = 4;
[x1, x2] = myRoot(a, b, c);
disp(['x1 = ', num2str(x1)]);
disp(['x2 = ', num2str(x2)]);
```
当我们运行这个M文件时,就可以得到方程的两个根:
```
x1 = -1 + 1.7321i
x2 = -1 - 1.7321i
```
这是因为方程x^2 + 2x + 4 = 0没有实数根,而是有两个复数根。
阅读全文