|
Autor |
Matlab/Octave 3d-Plot verbessern |
|
Delastelle
Senior  Dabei seit: 17.11.2006 Mitteilungen: 2430
 | Themenstart: 2022-08-04
|
Hallo Leute!
Ich wollte zeichnen:
f = @(r,phi) (r^4/R^4*sin(4*phi));
mit R = 1,
r zwischen 0 und 1,
phi zwischen 0 und 2 Pi (Kreis).
Es ist eine Lösung für ein Inneres Dirichlet Problem.
Es sieht z.B. so aus:
https://www.matheplanet.de/matheplanet/nuke/html/uploads/b/15578_Dirichlet_Plot8ccc_o.png
\sourceon Octave
tic
f = @(r,phi) (r^4/R^4*sin(4*phi));
R = 1;
delta1 = 0.05;
delta2 = 0.05;
az = 0;
merk = zeros(10000,3);
for r = 0:delta1:1;
for phi = 0:delta2:2*pi
z = f(r,phi);
az = az + 1;
merk(az,1) = r*cos(phi);
merk(az,2) = r*sin(phi);
merk(az,3) = z;
hold off
end
end
az
for i = 1:az
h = plot3(merk(i,1),merk(i,2),merk(i,3),'o');
hold on
end
grid on
xlabel("x-Achse");
ylabel("y-Achse");
zlabel("z-Achse");
view(35,35);
toc
\sourceoff
Geht es noch besser in Matlab/Octave?
Speziell mit mesh etc. habe ich es bisher nicht hinbekommen...
Viele Grüße
Ronald
|
Profil
|
majoka
Senior  Dabei seit: 25.02.2014 Mitteilungen: 814
 | Beitrag No.1, eingetragen 2022-08-08
|
Hast Du es mal mit dem Surf-Befehl versucht? - Zumindest in Matlab geht folgendes:
\sourceon Matlab
f = @(r,phi) (r^4/R^4*sin(4*phi));
R = 1;
delta1 = 0.05;
delta2 = 0.05;
count_r = 0;
count_phi = 0;
nx = R/delta1+1;
ny = ceil(2*pi/delta2)+1;
Z = zeros(nx, ny);
XX = zeros(nx, nx);
YY = zeros(nx, nx);
for r = 0:delta1:1;
count_r = count_r + 1;
for phi = 0:delta2:2*pi
count_phi = count_phi + 1;
Z(count_r, count_phi) = f(r,phi);
XX(count_r, count_phi) = r*cos(phi);
YY(count_r, count_phi) = r*sin(phi);
end
end
figure(1)
surf(XX, YY, Z)
xlabel("x-Achse");
ylabel("y-Achse");
zlabel("z-Achse");
\sourceoff
|
Profil
|
Delastelle
Senior  Dabei seit: 17.11.2006 Mitteilungen: 2430
 | Beitrag No.2, vom Themenstarter, eingetragen 2022-08-08
|
Hallo majoka!
Ich hatte mit surf versucht:
\sourceon nameDerSprache
% Dirichletproblem auf irregulärem Definitionsbereich (MP)
tic
f = @(r,phi) (r.^4/R.^4.*sin(4*phi));
R = 1;
delta1 = 1/62;
delta2 = 0.1;
r = 0:delta1:1;
phi = 0:delta2:2*pi;
[XX,YY] = meshgrid(r.*cos(phi),r.*sin(phi)); % r,phi
figure
surf(XX,YY,f(XX,YY));
xlabel("x-Achse");
ylabel("y-Achse");
zlabel("z-Achse");
view(35,35);
toc
\sourceoff
Dies führte aber nicht zum Ziel!
Danke für die Hilfe!
Das Bild aus Beitrag 1 sieht so aus:
https://www.matheplanet.de/matheplanet/nuke/html/uploads/b/15578_Dirichlet_Plot8MP_beschnitten.jpg
Viele Grüße
Ronald
|
Profil
|
Delastelle
Senior  Dabei seit: 17.11.2006 Mitteilungen: 2430
 | Beitrag No.3, vom Themenstarter, eingetragen 2022-08-08
|
Eine Frage ist noch aufgetaucht:
der Code aus Nr.1 läuft gut und erzeugt das richtige Bild.
Es muss nur bei mir erst noch R = 1 gesetzt werden, danach läuft das Programm.
Beim Kopieren des Bildes in die Zwischenablage stürzt Octave bei mir aber ab (aktuell das Octave 4.4.1) - was könnte das sein? Immerhin braucht das Programm ca.1,3 Mio Bytes.
|
Profil
|
majoka
Senior  Dabei seit: 25.02.2014 Mitteilungen: 814
 | Beitrag No.4, eingetragen 2022-08-11
|
\quoteon(2022-08-08 21:40 - Delastelle in Beitrag No. 3)
Eine Frage ist noch aufgetaucht:
der Code aus Nr.1 läuft gut und erzeugt das richtige Bild.
Es muss nur bei mir erst noch R = 1 gesetzt werden, danach läuft das Programm.
Beim Kopieren des Bildes in die Zwischenablage stürzt Octave bei mir aber ab (aktuell das Octave 4.4.1) - was könnte das sein? Immerhin braucht das Programm ca.1,3 Mio Bytes.
\quoteoff
Ich nutze nur Matlab. Ich kann Dir daher leider nicht weiterhelfen.
|
Profil
|
zippy
Senior  Dabei seit: 24.10.2018 Mitteilungen: 5000
 | Beitrag No.5, eingetragen 2022-08-11
|
\quoteon(2022-08-08 21:40 - Delastelle in Beitrag No. 3)
Beim Kopieren des Bildes in die Zwischenablage stürzt Octave bei mir aber ab (aktuell das Octave 4.4.1) - was könnte das sein?
\quoteoff
Die aktuelle Version ist 7.2.0. Vielleicht versuchst du es mal mit einem Update?
--zippy
PS Bei mir (Octave 7.2.0 unter Windows 11 21H2) lässt sich das Bild problemlos in die Zwischenablage kopieren.

|
Profil
|
Delastelle
Senior  Dabei seit: 17.11.2006 Mitteilungen: 2430
 | Beitrag No.6, vom Themenstarter, eingetragen 2022-08-11
|
Unter Octave 7.2.0 (32 Bit) konnte ich das Bild in die Zwischenablage kopieren und später mit IrfanView speichern.
|
Profil
|
Finn0
Aktiv  Dabei seit: 30.06.2021 Mitteilungen: 74
 | Beitrag No.7, eingetragen 2022-08-12
|
Letzte Woche hab ich ein wenig an meinem Online-Plotter weitergebastelt. Mit diesem lassen sich diese Graphen produzieren:
Farbgradient, Zentralprojektion, Licht und Schatten, Farbgradient und Höhenlinien
Als der Entwickler bin ich natürlich in der Lage, die Konfigurationsmöglichkeiten auszureizen. Mit etwas Tüftelei kommt so ein Ergebnis bei raus:
https://matheplanet.com/matheplanet/nuke/html/uploads/b/54794_Graph-2022-08-12.jpg
Keinesfalls perfekt, aber annehmbar. Ein wenig lässt sich noch verbessern. Irgendwann fehlen mir dann aber Z-Puffer, Path Tracer und Shader.
|
Profil
|
Delastelle hat die Antworten auf ihre/seine Frage gesehen. Delastelle hat selbst das Ok-Häkchen gesetzt. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|