例如,我想在数字上求解方程| x | + | y | = 1,我会得到一个矩形。如果我把它绘制出来,它应该是
这是一个简单的例子。我真正想要解决的是像sin(x)sin(2y)+ sin(y)sin(2x)= 0这样的等式。
答案 0 :(得分:5)
在跳到花式图或数值求解器之前,做一些数学计算确实很有用。
假设你有
sin(x)·sin(2y) + sin(y)·sin(2x) = 0
从任何standard list of trig identities您发现可以将其重写为
sin(x)·sin(y) · (cos(x) + cos(y)) = 0
所以你的等式何时成立
sin(x)·sin(y) = 0 or
cos(x) + cos(y) = 0
换句话说,
x = 0 ± k·π, or
y = 0 ± k·π, or
x = -y ± 2k·π
k
∈ℤ 0 。
图形上,这将是一组垂直线(x = 0 ± k·π
),一组水平线(y = 0 ± k·π
)和一组±45°(y = -x ± 2k·π
)的线。
不需要一行代码。
答案 1 :(得分:1)
使用您的示例公式,Rody's answer提供了一种分析解决方案。
然而,一般而言,给定方程f(x,y)= 0,可能无法找到分析解。在那种情况下,我建议:
x
,y
区域并在其中生成随机样本。z = abs(f(x,y))
。对z
的值进行排序,并将近似解集定义为最低值的给定比例。
f = @(x,y) sin(x).*sin(2*y)+sin(y).*sin(2*x); %// your example function
N = 1e7; %// number of samples
proportion = 1e-2; %// choose to achieve thin lines in solution set
xmin = -10; xmax = 10; %// x limits of target area
ymin = -10; ymax = 10; %// y limits of target area
x = xmin+(xmax-xmin)*rand(1,N);
y = ymin+(ymax-ymin)*rand(1,N);
z = abs(f(x,y));
[zsort isort] = sort(z);
n = round(N*proportion);
plot(x(isort(1:n)),y(isort(1:n)),'b.','markersize',.1)
axis square