fzero解方程 错在哪??

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-14
matlab中用fzero求根,我的代码如下:

一、 方程没有自定义。
错误语句:fun=exp(2.*x).*sin(x)-cos(x)
正确语句:fun=@(x)exp(2.*x).*sin(x)-cos(x)
二、fzero()函数使用有误
错误语句:fzero(fun,[-2,2])
正确语句:fzero(fun,-2) 和 fzero(fun,0)
运行结果:

fun=@(x1,x2) x1^2-x2^2;
x2= 1:10; %就是x2的不同取值
x1=zeros(size(x2)); %
for ii=1:length(x2)
x1(ii)=fzero(@(x1) fun(x1,x2(ii)),x0); %x0是初值
end

问题其实有两个,第一,将symbolic转换成function handle要用matlabFunction, 所以r = matlabFunction((sqrt(c^2+d^2))^3/(c*n-d*m)); 第二,fzero使用多种数值方法,当第二个参数是[a, b]形式的时候,fzero采用二分法(bisection),这时要保证r(a)和r(b)的符号相反,但是你的函数在-pi和pi符号相同!

fzero貌似里面的 函数 不是 字符型的