matlab中用fzero解贝塞尔方程,怎么确定初始值?

想解方程
((besselj(0,x)+1i*bessely(0,x))-(besselj(2,x)+1i*bessely(2,x)))/2=0
中的x.
由于solve函数不认符号变量无法求解,又看到网上用fzero解贝塞尔方程。形如:

clear all;
maxv = 10;
j= zeros(maxv,1);
for v=0:maxv-1
h = v+1.9*v^(1/3)+1;
if (v==0)
j(v+1,1) = fzero(@(x)besselj(v,x),2);
else
j(v+1,1) = fzero(@(x)besselj(v,x),h);
end
end

自己试过,确实可以运行。但是把besselj(v,x)换成((besselj(0,x)+1i*bessely(0,x))-(besselj(2,x)+1i*bessely(2,x)))/2后报错,Function value at starting guess must be finite and real,猜想是初始值的问题,那么请问初始值应该如何确定呢?

另:其实我是想用besselh的但是好像有些语句用besselj和bessely不会报错而用besselh会报错,我也不太明白为什么。不过不管用哪个,只要能求解就好。
解决问题再追加100分!
跪求于各位达人!不胜感激!!
可以发我邮箱:zc_celia@163.com

这是 报错的原因不是 初值的问题,这是因为 第二个求解的 是 复数 ,而 fzero 只能求解 实数解,你可以 取 abs
real imag 三个,或者 用其他的 命令
温馨提示:内容为网友见解,仅供参考
无其他回答

matlab中这个方程式用fzero怎么求解,希望大神帮忙一下,万分感谢!急急...
1、自定义给出方程的函数 fun=@(x)100-(x*sqrt((x\/10)^2+1)*sqrt((x\/100)^2+1));2、设定x0初值,这里取 x0=1 3、然后用fzero函数求解 4、实现代码与结果 fun=@(x)100-(x*sqrt((x\/10)^2+1)*sqrt((x\/100)^2+1));%将原方程变形,f(x)=0 x0=1;[x,fval,exitflag]...

matlab的fzero语句到底要几个初值
函数fzero返回的值x是函数fun变号或为NaN如果搜索失败时对应自变量点附近的一个点。 在这种情况下,当搜索区间扩展到Inf、Nan或复值时搜索终止。如果x0是长度为2的向量,fzero认为x0是fun(x0(1))的符号不同于fun(x0(2))的符号的一个区间。x = fzero(fun,x0,options)...

matlab fzero的使用问题
1) function [dP]=Kfun(P, V, A, J, K) 定义的函数句柄 @Kfun 实际等价于 function_handle = @(P,V,A,J,K)Kfun(P,V,A,J,K) 自变量共5个,所以fzero不知道你要算K 2) function_handle = @(K)Kfun(P,V,A,J,K) 相当于你固定了P,V,A,J四个参数,留下K做唯一一个自 ...

matlab解方程组的数值解。。
出错原因是,fzero()的初值x0选择不对。x0应该取0 k=fzero('10^x-64233.265306122*x',0)但其计算误差也比较大。建议你使用solve()求解。即 >>syms R k >>[R,k]=solve(R-0.35*10^(k\/1.1),R^2-14306.5*k);>>R=double(R),k=double(k)>>0.35*10^(k\/1.1) %验...

matlab fzero 问题
x1和x2的值是多少。我猜你的i没加绝对值变成负数了,然后sqrt(i)是复数,fzero就报错了。error说起始值必须是实数。

MATLAB的fzero函数求解单变量非线性方程求解
MATLAB通过其强大的fzero函数,为我们提供了简便的单变量非线性方程求解手段。这个函数的核心功能在于,基于给定的函数和初始猜测值,寻找使方程等于零的根点。1. fzero函数的运用在实际操作中,fzero函数的使用方法直观且灵活。无论是简单的函数形式,还是复杂的非线性关系,它都能有效处理。实例演示实例1...

matlab简单问题 关于fzero
说明一下fzero求零点的基本步骤:它会首先确定一个区间,使得区间两端的函数值异号,这样,只要函数连续,就能够求出一个零点。确定区间的过程与初值x0有关,如果x0非零,就以x0\/50为初始步长,向正负两个方向分别扩展区间,如果满足函数值异号,则确定区间的步骤完成,否则按照sqrt(2)的倍数增大步长...

matlab中用fsolve或fzero求零值
用fsolve求解方程,如果参数是一个方程组,则意味着求得的结果必须满足方程组中的每一个方程,所以,不能直接用类似 fzero(@(y)y-2*x,[0 0 0]) 的做法。可以用循环,或者,如果想避免显示循环,可以用arrayfun:>> x=[1 2 3];>> arrayfun(@(X)fzero(@(y)y-2*X,0),x)ans = ...

matlab中这个方程如何求T值?
fzero函数的意思就是查找你定义的函数在给定的初值附近的零点,所以你可以根据你输入的P的范围计算出来T的范围,然后将函数的初值设置成T范围的中间值,这样如果你的函数有唯一零点的话,就可以稳定的找到。fzero(@(T) exp(A\/T+B+C*T+D*(1-T\/F)^1.5)-P,tmiddle);tmiddle是可能T的中间...

MATLAB的fzero函数求解单变量非线性方程求解
1. 函数详解与语法fzero函数的核心功能是寻找单变量非线性方程fun(x) = 0的解,即函数图像与x轴的交点。基本语法如下:x = fzero(fun,x0) x = fzero(fun,x0,options) x = fzero(problem) [x,fval,exitflag,output]=fzero() 其中,x0是初始猜测值,options用于自定义求解策略,...

相似回答