北太天元目录下的 examples/root_abc.m 是一个求 ax^2+bx+c = 0 的脚本,可以解这个问题。
可以参考:
【程序的分支结构】 https://www.bilibili.com/video/BV1Ke4y1U7es/?share_source=copy_web&vd_source=2adc5aa7a702b808eb8b31dbd210f954
【lec2.1-冯氏大定理】 https://www.bilibili.com/video/BV1st4y1u7tv/?share_source=copy_web&vd_source=2adc5aa7a702b808eb8b31dbd210f954
也可以通过求矩阵的特征值的方法求多项式的根,可以参考:
【lecture3-3-roots-of-polynomials】 https://www.bilibili.com/video/BV1DW4y177fW/?share_source=copy_web&vd_source=2adc5aa7a702b808eb8b31dbd210f954
引用:北太天元目录下的 examples/root_abc.m 是一个求 ax^2+bx+c = 0 的脚本,可以解这个问题。 可以参考: 【程序的分支结构】 https://www.bilibili.com/video/BV1Ke4y1U7es/?share_source=copy_web&vd_source=2adc5aa7a702b808eb8b3...
好嘞👍
% 定义方程
f = @(x) 2*x^2 + 3*x - 2;
% 指定二分法的初始区间
a = -5; % 左端点
b = 5; % 右端点
% 设置二分法的收敛条件
tolerance = 1e-6; % 收敛容限
maxIterations = 1000; % 最大迭代次数
% 初始化变量
x = []; % 用于保存根的近似值
% 进行二分法迭代
for i = 1:maxIterations
% 计算区间中点
c = (a + b) / 2;
% 计算函数值
fc = f(c);
% 判断是否满足收敛条件
if abs(fc) < tolerance
break;
end
% 更新区间
if f(a) * fc < 0 % f(a)和f(c)符号不同
b = c;
else % f(b)和f(c)符号不同或其中至少一个为0
a = c;
end
% 保存根的近似值
x = [x; c];
end
% 显示最终的根的近似值
disp(x)
这个是二分法。要不试试看?更新区间这个就是零点存在性定理啦,高数里面有。