我想知道对于x的什么值,sinc(x) 函数将是其最大值的一半。请注意,这个问题可以扩展到一个更一般的问题,这样我们就不能很容易地找到一个特定函数的逆,所以我们被迫求助于MATLAB等仿真软件来找到可以解决方程的参数。
cs7cruho1#
1.这并不能解决问题
syms x eq= sinc(x)==0.5*max(sinc(x)); sol=solve(eq)
sol=1是根,零交叉,而不是max的一半。2.-符号max在这里也不起作用
sol=1
max
syms x assume(x,'real') maxsinc=max(sinc(x))
再次max返回一个平凡的答案
3-用数字表示
我知道,符号运算看起来很舒服,但是因为它提到目标是推广到任何函数,在我看来,在这个问题的上下文中,数字比尝试符号运算更有用。使用数值而不是符号,将搜索限制在已知的区间内,具有足够的分辨率(dx足够小),现在可以轻松地找到任何值和任何解析函数的max。
dx
4.-使用函数交集
i ntersections.m不是一个标准的MATLAB函数,但它是公开的,免费的,并且非常健壮和有用。它由道格拉斯施瓦茨编写,可在here上使用
ntersections.m
dx=.0001; x=[-10:dx:10]; y1=sinc(x); y2=sinc(x)-.5*max(y1); x0=intersections([-10 10],[0 0],x,y2)
函数交集找到所有的半最大根,而不仅仅是来自图左侧的第一个:
x0 = -0.6034 0.6034
用任何函数替换sinc(x),你会看到intersections的工作效果。
sinc(x)
intersections
pexxcrt22#
基本上你只想解方程sinc(x)=0.5*max(sinc(x))?如果是这样,
syms x eq= sinc(x)==0.5*max(sinc(x)); sol=solve(eq);
2条答案
按热度按时间cs7cruho1#
1.这并不能解决问题
sol=1
是根,零交叉,而不是max
的一半。2.-符号max在这里也不起作用
再次max返回一个平凡的答案
3-用数字表示
我知道,符号运算看起来很舒服,但是因为它提到目标是推广到任何函数,在我看来,在这个问题的上下文中,数字比尝试符号运算更有用。
使用数值而不是符号,将搜索限制在已知的区间内,具有足够的分辨率(
dx
足够小),现在可以轻松地找到任何值和任何解析函数的max
。4.-使用函数交集
i
ntersections.m
不是一个标准的MATLAB函数,但它是公开的,免费的,并且非常健壮和有用。它由道格拉斯施瓦茨编写,可在here上使用
函数交集找到所有的半最大根,而不仅仅是来自图左侧的第一个:
用任何函数替换
sinc(x)
,你会看到intersections
的工作效果。pexxcrt22#
基本上你只想解方程sinc(x)=0.5*max(sinc(x))?如果是这样,