方法一,用solve函式把隱函式顯化,然後畫圖。方法二,利用極座標與直角座標的關係,把極座標隱函式變為直角座標隱函式,利用ezplot直接畫直角座標隱函式。
方法一提供案例如下:
clc;clear;
syms r t%r為距離座標 t為角度座標
f(r,t)=r-2*cos(t)-3/r==0;%定義一個對r、t的隱函式,f=0時其實這是一個圓
r_sln=solve(f,r)%由於是二次的 會有2個解
ezpolar(r_sln(1));
figure;
ezpolar(r_sln(2));
畫出的圖一模一樣,證明2個解等價。下面是其中的一個圖
方法二。經過測試,這裡有一個大坑,本人一度被坑。角度t寫成 atan(y/x) 和 atan(y,x) 差距巨大,寫成前者會出現完全畫不出圖的情況。
程式碼示例(在之前示例後面加上):
syms x y;
f1(x,y)=f((x^2+y^2)^0.5,atan2(y,x));
figure
ezplot(f1);
由於之前答的高質量,所以沒有用你的例子,現在被打回了,倒是無所謂了。
不過。。樓主的例子有點問題啊,貌似。用方法一得出了那麼個東西:
方法一,用solve函式把隱函式顯化,然後畫圖。方法二,利用極座標與直角座標的關係,把極座標隱函式變為直角座標隱函式,利用ezplot直接畫直角座標隱函式。
方法一提供案例如下:
clc;clear;
syms r t%r為距離座標 t為角度座標
f(r,t)=r-2*cos(t)-3/r==0;%定義一個對r、t的隱函式,f=0時其實這是一個圓
r_sln=solve(f,r)%由於是二次的 會有2個解
ezpolar(r_sln(1));
figure;
ezpolar(r_sln(2));
畫出的圖一模一樣,證明2個解等價。下面是其中的一個圖
方法二。經過測試,這裡有一個大坑,本人一度被坑。角度t寫成 atan(y/x) 和 atan(y,x) 差距巨大,寫成前者會出現完全畫不出圖的情況。
程式碼示例(在之前示例後面加上):
syms x y;
f1(x,y)=f((x^2+y^2)^0.5,atan2(y,x));
figure
ezplot(f1);
由於之前答的高質量,所以沒有用你的例子,現在被打回了,倒是無所謂了。
不過。。樓主的例子有點問題啊,貌似。用方法一得出了那麼個東西: