我一直把“根”需要符号数学工具箱。错误newtonbisection(46行)流(“给定函数的最优根:% f \ n \ n”,根)”。如何修复呢?谢谢

1视图(30天)
%定义的函数
f = @ (x)双曲正切(x);
dfun = @ (x) 1-tanh (x) ^ 2;
一个= -10;
b = -15;
s = 0.1;
count1 = 0;
(b) > s * (b)
m = (a + b) / 2;
如果有趣的(a) * f (m) < 0
b = m;
其他的
一个= m;
结束
count1 = count1 + 1;
结束
%的狭窄的区间
na =一个;
nb = b;
流(“用对分法,狭窄的区间% d迭代后得到:[% f % f] \ n \ n”、count1 na, nb)
m = (a + b) / 2;% m是缩小间隔的根源
每股收益= 1;
公差= e ^ 6;
是从= 0;
现在%实现牛顿法
eps >公差
%根据牛顿法计算根
根= m -(乐趣(m) / dfun (m));
是从=是从+ 1;
%现在检查是否根是否在狭窄的区间内
如果根< na | |根> nb
%如果狭窄的区间切换回对分法
根= (na + nb) / 2;
流(“解决方案通过牛顿法跳出狭窄的区间迭代\ n % d后再次切换回对分法\ n \ n”,是从);
如果有趣(na) * fn(根)< 0
nb =根;
其他的
na =根;
结束
结束
%计算的区别
每股收益= abs (m);
m =根;
结束
%最后根是最终的根;
流(“最佳给定函数的根:% f \ n \ n”根)
流(的第二个while循环执行% d * \ n \ n \ n '是从)
(SL:格式化代码,代码)

答案(1)

史蒂文的主
史蒂文的主 2021年11月14日
是什么值给变量根在代码中如果 条件不满足?
eps >公差
答案是没有,没有将任何值赋给该变量(变量不存在。)在这种情况下MATLAB需要找出根在接下来的最后一行代码的引用。由于符号数学工具箱函数命名为根,MATLAB决定你打算与零输入参数调用这个函数。
2的评论
史蒂文的主
史蒂文的主 2021年11月15日
之前定义的变量命名根循环“占位符”价值。
重命名变量。
如果你打算宽容是乘以10的6日写成1 e-6而不是写在这样一种方式,它可以用一个变量命名e。或者你可能预期 exp (6)

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!