一元函数的零点

标签: 数值计算

Lucky 2022-11-25 15:01:44

北太天元能求解多元一次函数2x^2+3x-2的零点吗?


2190 3 1 收藏 回复

回复

北太卢朓 2022-11-26 #1

北太天元目录下的 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


Lucky 2022-11-29 #2
引用:北太天元目录下的 examples/root_abc.m  是一个求 ax^2+bx+c = 0 的脚本,可以解这个问题。 可以参考: 【程序的分支结构】 https://www.bilibili.com/video/BV1Ke4y1U7es/?share_source=copy_web&vd_source=2adc5aa7a702b808eb8b3...

好嘞👍

HanqinWu 2023-08-25 #3

% 定义方程

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)


这个是二分法。要不试试看?更新区间这个就是零点存在性定理啦,高数里面有。

回复

重置 提交