You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于差分方程的平方根求解程序异常问题咨询

平方根求解程序的问题与修复

问题说明

基于差分方程初始条件编写的平方根求解程序结果不符合预期,且循环次数超出设定——原本每个数值最多迭代2次(比如5的平方根经2次迭代应得到2.23左右),但实际输出6组结果,还未覆盖全部输入值。

原程序代码

N=4;
S=[5 10 15 27 40]; %待求平方根的输入数组
y1=[2 3 4 5 6]; %初始条件
for  i=0:1:1
for  n=1:1:3
y1(n)=0.5*(y1(i+1)+(S(n)./y1(i+1)))
end
end

原命令窗口输出

y1 =
    2.2500    3.0000    4.0000    5.0000    6.0000
y1 =
    2.2500    3.3472    4.0000    5.0000    6.0000
y1 =
    2.2500    3.3472    4.4583    5.0000    6.0000
y1 =
    2.4205    3.3472    4.4583    5.0000    6.0000
y1 =
    2.4205    3.1674    4.4583    5.0000    6.0000
y1 =
    2.4205    3.1674    3.9516    5.0000    6.0000

问题根源

  1. 循环逻辑错误:外层循环i=0:1:1执行2次,内层循环n=1:1:3执行3次,总计6次迭代,完全不符合“每个数值迭代2次”的要求。
  2. 迭代变量混乱:计算y1(n)时依赖y1(i+1),而非当前元素的上一次迭代值,导致迭代流程偏离牛顿法的正确逻辑。
  3. 输入未全覆盖:内层循环仅处理前3个元素,S数组中的27、40未被迭代处理。

修复后的代码

针对每个输入元素,基于自身初始值独立完成指定次数(2次)的牛顿迭代:

S = [5 10 15 27 40]; %待求平方根的输入数组
y1 = [2 3 4 5 6]; %对应初始条件
iter_count = 2; %设定迭代次数

for k = 1:iter_count
    y1 = 0.5 * (y1 + S ./ y1); %所有元素同步迭代
    disp(y1); %输出每次迭代结果
end

修复后输出

第一次迭代结果:

2.2500    3.1667    4.1250    5.2000    6.3333

第二次迭代结果:

2.2361    3.1623    3.8794    5.1962    6.3246

可见5的平方根经2次迭代后得到2.2361,符合预期,所有输入元素均完成指定次数的迭代。

内容的提问来源于stack exchange,提问作者Lily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:35:31