WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Hilfe bei numerischer Integration und Bessel Funktion

 

bennyk
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 05.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2015, 15:46     Titel: Hilfe bei numerischer Integration und Bessel Funktion
  Antworten mit Zitat      
Hallo,
ich arbeite schon seit einer Weile an der numerischen Simulation eines Punktschweißvorganges. Mein Problem ist, mit der Integration der Gleichung nicht mehr weiter komme und dass die, in der Gleichung enthaltende Besselfunktion bei mir 2 Variablen besitzt, anstatt nur Eine wie in der MatLab Hilfe.

Das ist was ich bisher, mit Hilfe an der Uni, hinbekommen habe:

Code:
%spatial temperatur distribution during welding
clc,clear all;
close all hidden
k = 180; % spez Wärmeleitfähigkeit/ thermal conductiviy [W/(mK)]
Ab = 0.4; % Absorptivity
sigma = 205*10.^-5; % Gaußscherverteilungs Koeffizient/ gaussian distribution coefficient
Q = 1500; % Laserspitzenleistung/ pulse peak power [W]
alpha = 8.418 *10.^-5; % Temperaturleitfähikeit/ thermal diffusity [m^2/s]
T0 = 293.5; % starttemperatur / initial temperatur of the solid [K]
t= linspace(0,20*10.^-3,20);
r = linspace (-600*10.^-6,600*10.^-6,50);
z = linspace (-800*10.^-6,0,20);
[R,Z] = meshgrid (r,z);

q0 = (2*Q)/(pi*sigma.^2); % Spitzenleistung am Punkt r=0, z=0
q = q0*exp((-2*R.^2)/sigma.^2);
surf(R,Z,q);
T1 = T0+(Ab*q0*sigma.^2)/(8*k);
matrixSize = size(Z);
output  = zeros(matrixSize);
for i =1:matrixSize(1)
    for j =1:matrixSize(2)
        funT        = @(x)T1*besselj(0,x).*exp((sigma^2)*(x.^2/8)).*exp(-x*Z(i,j)).*erf((Z(i,j)/(2*sqrt(alpha))))-exp(x*Z(i,j)).*erf((Z(i,j)/(2*sqrt(alpha)))+(sqrt(alpha)*x));
        output(i,j) = integral(funT, 0, 1);
    end;
end;

figure(2)
contour(R,output,q);


Zur weiteren Erklärung: zur Vereinfachung habe ich den Parameter "Lambda" gegen "x" ausgetauscht.
Außerdem spanne ich die Parameter Z und R als Matrix auf, da ich am Ende gern einen Contour Plot über den radialen und axialen Temperaturverlauf erhalten möchte.
Das Problem liegt darin, dass die zweite Variable "R" nur in der Besselfunkion vorkommt, Matlab aber "besselj(0,x*R)" nicht annimmt.

Danke für hilfreiche Tips

CCI18062015.jpg
 Beschreibung:
Die original Formel

Download
 Dateiname:  CCI18062015.jpg
 Dateigröße:  1.53 MB
 Heruntergeladen:  430 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.06.2015, 11:57     Titel: Re: Hilfe bei numerischer Integration und Bessel Funktion
  Antworten mit Zitat      
Hallo bennyk,

Lasse das "clear all" weg, damit Du auch den Debugger noch verwenden kannst.

Zitat:
Das Problem liegt darin, dass die zweite Variable "R" nur in der Besselfunkion vorkommt, Matlab aber "besselj(0,x*R)" nicht annimmt.

Bitte erkläre noch mit Details, was "er nimmt nicht an" bedeutet. Bekommst Du eine Fehlermeldung?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
bennyk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 05.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2015, 15:47     Titel:
  Antworten mit Zitat      
Hallo Jan,
erstmal vielen Dank für deine schnelle Antwort.
Also wie du vielleicht in der gegebenen Gleichung T(r,z,t) gesehen hast, müssen die Faktoren "x*R" in die Besselfunktion 0. Ordnung. Das Problem ist das ich immer die Fehlermeldung "Error using .*
Matrix dimensions must agree." bekomme.
Ich bin mir allerdings nicht sicher woran es liegt. x ist meine Integrationsvariable, die sollte also nach meinem Verständnis skalar vorliegen. Oder täusche ich mich da?
Ohne das "R" kann ich die Berechnung allerdings nicht durchlaufen lassen, da mir sonst eine wichtige Koordinate in der Ebene fehlt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.06.2015, 16:32     Titel:
  Antworten mit Zitat      
Hallo bennyk,

Bitte poste immer die vollständige Fehlermeldung. Inbesondere die Zeile, die den Fehler erzeugt, ist wichtig und sollte nicht von den lesern erraten werden müssen.
Sowie Du "clear all" weggelassen hast, kannst Du den Debugger verwenden um heraus zu finden, welcher Operator genau den Fehler erzeugt:
Code:

Daqnn nochmal starten. Nun stopped Matlab, wenn der Fehler auftritt. Nun kannst Du die Zeile Stück für Stück ins Command Window laufen kopieren und die Dimensionen der einzelnen Teile untersuchen. Offensichtlich passen da mindestens zwei Dimensionen nicht zusammen.

Anmerkung: 8.418 *10.^-5 ist eine teure Potenz-Funktion, während 8.418E-5 eine sehr billige Konstante ist. Deshalb sollte man letzteres unbedingt bevorzugen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.