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
相关产品推荐
相关产品推荐

