数组索引必须是正整数或逻辑值。sym / subsref中的错误(第870行)

38次观看(过去30天)
我的代码有一个问题,我写了一个直接方法从用户输入查找根。但是,我花了一个小时调试代码,没有得到任何改进。如果能得到社区的帮助,我将非常感激。
错误消息输出如下:
数组索引必须是正整数或逻辑值。
sym / subsref中的错误(第870行)
r_tilde =内置('subsref',l_tilde,Idx);
direct_method中的错误(第21行)
fx_value(ii)= fx_given(x(ii))
提前感谢您的代码如下:
函数root_found = direct_method.
Syms.X
fx_given =输入('输入所需的函数:');
x1 =输入('输入root的下限猜测值:');
x2 =输入('输入root的上限猜测值:');
fprintf(“所选择的根值:[x1,x2] = [%。1f,%。1f] \ n”,x1,x2);
n =输入('输入所需的迭代数:');
x = linspace (x1, x2, N) ';
fx_value = zeros(n);
为了II = 1:n
fx_value(ii)= fx_given(x(ii))
结尾
数字
plot(x,fx_value)
标题('直接方法'
包含('X'
ylabel ('是'
网格
Root_Found = fx_value;
结尾

接受答案

沃尔特罗伯森
沃尔特罗伯森 20月8日
Syms.X
fx_given =输入('输入所需的函数:');
我们可以从错误消息预测,无论用户是否响应于提示都没有匿名函数或用symfun()定义的符号函数。例如,用户可以进入一个公式,例如
x ^ 2 + 3 * x - sin(x)
然后
fx_value(ii)= fx_given(x(ii))
使用fx_given不是函数句柄或符号函数,fx_given(值)将尝试在由值指示的位置索引fx_give。
如果用户正在进入符号表达式,那么您应该使用MATLABFUCTION将用户表达式转换为函数句柄,否则您应该代码
fx_given (x) =输入('输入所需的函数:');

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!