在MatLab中不使用fimplicit或ezplot绘制2变量隐式函数

在MatLab中不使用fimplicit或ezplot绘制2变量隐式函数,matlab,Matlab,我的任务是绘制隐式函数x^2+y^2=1+4.5sin^2xy,不允许使用像fimplicit或ezplot这样的隐式绘制函数 我被plot、polarplot和fzero所困扰,仅此而已 这些说明似乎暗示转换为极性函数是关键,但经过几个小时的尝试、阅读和谷歌搜索,我仍然不知道如何做 将x和y转换为它们的极性形式仍然不允许为θ的所有值求解r,所以我不知所措 任何帮助都将不胜感激 干杯 因为您既不能使用等高线,也不能使用fimplicit或ezplot 我知道你的老师希望你使用隐函数定理。你可以找

我的任务是绘制隐式函数x^2+y^2=1+4.5sin^2xy,不允许使用像fimplicit或ezplot这样的隐式绘制函数

我被plot、polarplot和fzero所困扰,仅此而已

这些说明似乎暗示转换为极性函数是关键,但经过几个小时的尝试、阅读和谷歌搜索,我仍然不知道如何做

将x和y转换为它们的极性形式仍然不允许为θ的所有值求解r,所以我不知所措

任何帮助都将不胜感激


干杯

因为您既不能使用等高线,也不能使用fimplicit或ezplot

我知道你的老师希望你使用隐函数定理。你可以找到它的定义

我认为你们应该从维基百科文章中的圆圈例子开始

请记住,您只需要为图形的一部分求解此问题,其余部分仅为符号

您的起点应该是x=0,y=1,这是一个解决方案

然后你会发现

dy/dx = (2x+9ysin(xy)cos(xy))/(2y+9xsin(xy)cos(xy))
你能认出一首简单的颂歌吗

以最简单的方式求解它是从x=0,y=1开始,这是一个解决方案,选择步骤dx 0.01,然后保存算法中的所有点

y <- y + (2x+9ysin(xy)cos(xy))/(2y+9xsin(xy)cos(xy))*dx  
x <- x + dx
我应该给你一些


感谢您的帮助,但不幸的是,contour是被提到的禁止使用的快捷方式之一。请注意,完整报价不允许使用快捷方式,因此,例如,在完成任务时可能不会使用工具fimplicit和contour。因此,我想我的问题可以归结为,在不使用这些或相关工具的情况下,我如何做fimplicit/ezplot/contour所做的事情?。有什么简单的方法可以做到这一点吗?我已经编辑了我的答案。我想我知道这是关于什么的。回顾:嗨,请不要仅仅用源代码回答。试着提供一个关于你的解决方案如何工作的很好的描述。请参阅:。谢谢
[x,y]=meshgrid([-3:0.01:3],[-3:0.01:3])
z= x.^2 + y.^2 - 1.0 - 4.5.*sin(x.*y).^2
v = [0,0];
contour(x,y,z,v)
theta = linspace(0, 2.*pi, 1000);

for i = 1:length(theta) % Want to check every angle in theta.

% asign x = r*cos(theta) and y = r*sin(theta. You want to set the equation 
% equal to 0.
f = @(r)1 + 4.5.*(sin(r.^2.*(cos(theta(i)) .*sin(theta(i))))).^2 - r.^2;

r(i) = fzero(f, 3); % Solves the equation. The value 3 is just an 
% approximation of r, set it to any number you like. It just can't be too high.

% Make the two coordinates x and y. Asign them to their polar coordinates 
% using r.
x(i) = r(i).*cos(theta(i)); 
y(i) = r(i).*sin(theta(i));
end

plot(x,y)
grid on
axis equal
axis([-4 4 -4 4])