ich muss vorweg sagen ich bin matlab neuling und hab mich heut intensiv mit integration beschäftigt, jetzt bin ich eh schon relativ weit gekommen, allerdings etwas check ich nicht.
die zu integrierende formel findet ihr im anhang.
Bekannt sind mir: Pa=0.8 , untere Integrationsgrenze R(tsoll)=0.98 , A=73.86 , B=1.8 und rho = 0.2
Als unbekannte bleibt mir damit nur n und nach der soll die integration aufgelöst werden.
Was habe ich bisher geschafft?
Bisher habe ich es folgend gemacht:
bisher habe ich es nur geschafft, dass ich n variiere und schau bis bei der integration 0.8 herauskommt, das ist aber etwas mühsam weil ich das gleiche mit unterschiedliche rhos durchführen muss. also ich hab nur die integration nach Pa aufgelöst und halt mit n gespielt bis Pa=0.8 herauskommt.
wie kann ich es jetzt angehen, dass ich quasi mein integrationsergebnis vorgeben und dann matlab nach n umformen lass.
bitte helft mir und wenns geht bitte genaue schritte angeben, weil ich wirklicher anfänger bin und matlab nur für diese integration brauche.
Es wird nicht viel anders gehen als du es gemacht hast. Allerdings kann man die Suche nach dem richtigen n mit Hilfe von fzero oder fsolve automatisieren. Wenn du deinen bisherigen code postest kann man sicherlich noch bessere Ratschläge geben.
danke für deine antwort, anbei mein code. allerdings gilt zu beachten, dass ich da keine variablen drin habe sondern direkt die fixen zahlenwerte reingeschrieben habe.
wie gesagt bin kompletter anfänger udn würde matlab nur für diese integration brauchen wegen meiner diplomarbeit. wenn mir also wer weiterhelfen könnte wäre ich sehr sehr dankbar!
gibt es für n irgendwelche Einschränkungen?
Ansonsten stimme ich Thomas zu. Das Integral dürfte zu komplex sein, um eine analytische Stammfunktion zu finden.
Daher bleibt nur, für bestimmte rho (jetzt unter der Annahme, dass es keine Einschränkungen für n gibt wie "n ganzzahlig) mit Hilfe von fsolve oder fzero das richtige n zu finden.
Schön fände ich persönlich dann einen Plot, in dem n über rho aufgetragen wird.
Für den Anfang als Tip: wenn du n und rho variieren möchtest, schau dir mal anonymous function handles an.
Bei konkreten Fragen kann man sicher noch weiterhelfen.
rho = ...% ein Gitter mit rho-Werten
n = zeros(size(rho));
fRhon = @(R, rho, n)...% Formel mit R, rho und n for I = 1:length(rho)
n0 = ...% Startwert, evtl. in Abh. von rho oder vorheriger Endwert [n(I),fval,exitflag] = fzero(@(n)quad(@(R) f(R, rho(I), n) ,0.98,1) - 0.8, n0);
if exitflag <= 0% keine echte Nullstelle
n(I) = NaN;
end end plot(rho, n)
danke harald für deine bemühungen, leider funktioniert es bei mir noch immer nicht. bitte schau dir den code kurz an, ich habs versucht so ein zutippen aber da geht was nicht, fehler weiß ich auch nicht wo der liegt da ich den code nicht verstehe.
danke für deine bemühungen wenn du mir den richtig stellen könntest wäre mir sehr sehr geholfen.
Code:
>> A=73.87
A =
73.8700
>> B=1.8
B =
1.8000
>> rho = 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1% ein Gitter mit rho-Werten
n = zeros(size(rho));
fRhon = @(R, rho, n)((1-rho).*R.^n+rho.*((R.^(A+n-1).*(1-R).^(B-1))./(beta(A,B))))./(((1-rho)./(n+1))+rho.*(beta(A+n,B)/beta(A,B)))% Formel mit R, rho und n for I = 1:length(rho)
n0 = 0% Startwert, evtl. in Abh. von rho oder vorheriger Endwert [n(I),fval,exitflag] = fzero(@(n)quad(@(R) f(R, rho(I), n) ,0.98,1) - 0.8, n0);
if exitflag <= 0% keine echte Nullstelle
n(I) = NaN;
end end plot(rho, n)
??? Error using ==> fzero at 317 FZERO cannot continue because user supplied function_handle ==> @(n)quad(@(R)f(R,rho(I),n),0.98,1)-0.8
failed with the error below.
auf den ersten Blick sehe ich nur, dass es beim Aufruf von fzero fRhon statt f heißen müsste.
Die Fehlermeldung erstaunt mich zugegebenermaßen. Ich habe aber leider gerade kein MATLAB zur Hand, um das Problem nachvollziehen zu können.
danke jetzt hat er was getan, aber der graph bleibt leer, folgender fehler kommt
Code:
Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520 Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In @(n)quad(@(R)fRhon(R,rho(I),n),0.98,1)-0.8
In fzero at 520
diese Funktion scheint fzero nicht zu gefallen.
Wächst oder fällt die Funktion monoton in n? Dann brauchst du ja nur die Funktion für verschiedene n in einer Schleife auszuwerten und schauen, wann du den Schwellwert überschreitest.
Grüße,
Harald
Einstellungen und Berechtigungen
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
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.