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

MATLAB牛顿二分结合求根函数如何导出迭代数据到TXT表格

MATLAB导出迭代数据到TXT表格的修改方案

你只需要补充文件IO相关的操作即可实现需求,修改后的完整代码如下:

function p = newtonbisection(f, df, a, b, tol)
% 打开输出文件,'w'表示覆盖写入,若要追加写入可改为'a'
fid = fopen('iteration_result.txt', 'w');
% 写入表头,用制表符分隔,保证表格对齐
fprintf(fid, '%s\t%s\t%s\t%s\t%s\t%s\n', '迭代次数', '使用方法', '区间左端点a', '区间右端点b', '迭代值p', '函数值f(p)');

p = a;
iter = 0;
while abs(f(p)) >= tol
    iter = iter + 1;
    % 这里修正了你原代码的逻辑错误:原判断条件b<=p是错误的,应该判断p落在[a,b]区间内才用牛顿法
    if a <= p && p <= b
        p = p - f(p)/df(p);
        method = 'Newton';
    else
        p = (a+b)/2;
        method = 'Bisection';
    end
    % 更新区间
    if f(p)*f(b) < 0
        a = p;
    else 
        b = p;
    end
    % 写入当前迭代的所有数据,数值保留10位小数,可根据需求调整精度
    fprintf(fid, '%d\t%s\t%.10f\t%.10f\t%.10f\t%.10e\n', iter, method, a, b, p, f(p));
    % 如果你需要同时在命令行输出,取消注释下面一行即可
    % fprintf('%d\t%s\t%.10f\t%.10f\t%.10f\t%.10e\n', iter, method, a, b, p, f(p));
end
% 必须关闭文件,否则内容可能不会被写入磁盘
fclose(fid);
end

主要修改点说明

  • 新增了fopen函数创建/打开TXT文件,获取文件标识符用于后续写入操作
  • 提前写入表头,定义表格每一列的含义,用制表符\t作为分隔符,生成的TXT表格可以直接导入Excel等工具解析
  • 新增method变量存储当前迭代使用的方法,统一写入文件
  • 每次迭代结束后用fprintf将所有需要的参数按指定格式写入文件
  • 循环结束后调用fclose关闭文件,完成写入操作

生成的TXT文件默认保存在MATLAB当前工作路径下,你可以在fopen的第一个参数传入绝对路径来指定保存位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:15:00