前往
大廳
主題

這破東西我花了幾小時才搞出來

你有沒有嘗試過登出? | 2022-09-16 23:59:03 | 巴幣 10 | 人氣 264

上次用Geogebra果然還是太陽春了,這次用matlab,優點是可以非常精細,缺點是超過40條線就要算蠻久了(除非容許比較低的精細程度),所以選擇了跟上次不同的曲線。

成果(6232x6560)(SVG檔)

程式碼:

clf
hold on % 不hold的話你算老半天只會plot出一條
axis off % 不關掉座標軸的話輸出就會有軸

for a = -9:0.2:11 % 這樣總共有101條線。
    
    f = @(x,y) x.^3 - x.^2*y + a.*y.^2*x - y.^3 - x + y;

    if a >= 1 % 讓線條顏色從黑色漸進到紅色。
        plot_color = [(a-1)/10 0 0];
    end

    if a < 1 % 讓線條顏色從藍色漸進到黑色。
        plot_color = [0 0 (1-a)/10];
    end

    fimplicit(f,[-2 2 -2 2],MeshDensity=1500,color=plot_color,LineWidth=0.1)
    % MeshDensity預設是151,基本上已經不錯看了,只在(數學)性質不好的地方會有點數值不穩。
    % 請注意,1500會跑很久,我大概跑了一小時。
    % 可以先用較低的參數跑跑看覺得滿意再拉高。

end

set(gcf,"Renderer","painters") % 強制用painters渲染,不然太精細的圖matlab會自動給你輸出成點陣。
saveas(gcf,'file_name','svg') % 想輸出成.eps的話檔名要用'epsc'否則會只有灰階。
% 然後輸出的結果可能還會跟你的「圖片預覽視窗」的設定有關,也是要花時間微調的,這部分我不是很懂。

基本上這個圖就是曲線
x^3 - x^2*y - 9*y^2*x - y^3 - x + y = 0
漸進到
x^3 - x^2*y + 11*y^2*x - y^3 - x + y = 0
的某種視覺化,特別的是
當a = 1時,這個曲線的圖形就是一個圓跟一條斜直線,
因為它可以因式分解成(x^2+y^2-1)(x-y),
x^2+y^2-1 = 0的解就是單位圓,x-y = 0的解就是斜直線,
所以當你的點落在單位圓或斜直線上時,x^2+y^2-1或x-y就會等於0,
因此就是(x^2+y^2-1)(x-y) = 0的解。


創作回應

姆咪啪
https://cdn.discordapp.com/attachments/812687676578332672/1020376371572252683/unknown.png
2022-09-17 00:51:35
你有沒有嘗試過登出?
欠肛
2022-09-17 08:24:06

相關創作

更多創作