MATLAB函数求导报错

不太明白MATLAB中diff()函数有什么要求。
或者有其他问题?

%%%% 牛顿迭代法求非线性方程实根%%%%%
clc;
clear
format short
s=in
put('请输入函数表达式:f = ','s');
global f;
f=inline(s,'x');
X = input('请输入初始点:x0=');
fai(X)
function f1=fai(x)
global f;
tempf=diff(f,'x');
f1=x-f/tempf;
end

还没写完,
下面是命令与报错:

请输入函数表达式:f = x*x
请输入初始点:x0=1
检查对函数 'diff' 的调用中是否存在不正确的参数数据类型或缺少参数。

出错 Newtonian_iterative_method>fai (第 16 行)
tempf=diff(f,'x');

出错 Newtonian_iterative_method (第 9 行)
fai(a)
 
16  tempf=diff(f,'x');
K>> 

img

可以看下帮助,我不太懂‘x’这个参数设置的意义。https://ww2.mathworks.cn/help/matlab/ref/diff.html

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/758500
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:matlab遗传算法求函数极值,加粗那行出现问题咋解决呀,求帮忙!
  • 除此之外, 这篇博客: 运筹学 matlab实现单纯形法中的 六,附录:部分其余样例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    %样例1    4360
    
    % 结果为  x = 320.0000  360.0000   0   0  20.0000 390.000 ]
    A=[ 2 1  1 0 0 0 1000;
        3 4  0 1 0 0 2400;
    	1 1  0 0 1 0 700;
    	1 -1 0 0 0 1 350;
    	8 5  0 0 0 0 0];
    N=[3 4 5 6];
    [sol,val,kk]=ssimplex(A,N)   /不用加分号
    
    书本例题:
    %样例3
    A=[ 1 2 1 0 0 8;
        4 0 0 1 0 16;
        0 4 0 0 1 12
    	2 3 0 0 0  0];
    N=[3 4 5];
    [sol,val,kk]=ssimplex(A,N)
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^