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

Integration

 

Noxin99

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2007, 12:14     Titel: Integration
  Antworten mit Zitat      
hallo,

ich suche eigentlich nur die Stammformel zu der fkt cos(L² / 2*R²) dL

bei der suche der lösung is mir die idee gekommen das einfach per MATLAB zu machen, da ich mit der gleichung eh später rechnen muß.

kann mir jemand sagen wie ich so eine gleichung in matlab berechne?
bzw. die stammform der fkt wäre auch schon hilfreich


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 14.12.2007, 10:21     Titel:
  Antworten mit Zitat      
Hallo Noxin99,

dafür brauchst Du die Symbolic Math Toolbox. Du definierst erst deine Variablen (wenn sie nicht komplex sein sollen mit "real" dahinter), dann kannst Du mit dem Integrieren loslegen, nach dem Komma steht die Variable, nach der integriert wird. simplify vereinfacht den Ausdruck etwas.

Code:
>> syms L R real
>> int(cos((L^2 / 2)*R^2),L)       % richtig geklammert?
 
ans =
 
pi^(1/2)/(R^2)^(1/2)*FresnelC(1/pi^(1/2)/(R^2)^(1/2)*L*R^2)
 
>> simplify(ans)
 
ans =
 
pi^(1/2)*FresnelC(1/pi^(1/2)*L*abs(R))/abs(R)


FresnelC(x) ist dabei int_0^x cos((pi/2) * t²) dt.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Noxin99

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2007, 11:18     Titel:
  Antworten mit Zitat      
super.....

kann ich die gleichung dann auch als funktion nutzen?

also genau gesagt muß ich für L verschiedene werte durchlaufen lassen
und R ist abhängig von L

kann ich einfach ne for schleife machen oder auch einfach
L=(0:1:10);
R=L*const;

eigentliche gleichung war halt X= INTEGRAL
mit der quad funktion bekomm ich das nicht hin, kann zwar L als variable lassen aber für R muß ich nen festen wert eingeben...
 
Noxin99

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2007, 11:33     Titel:
  Antworten mit Zitat      
wenn ich
X=pi^(1/2)*FresnelC(1/pi^(1/2)*L(1)/abs(R(1)))*abs(R(1))

also jeweils das erste element von L und R berechnen lasse, gibt er mir ne fehlermeldung raus

Undefined command/function 'FresnelC'
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 14.12.2007, 14:40     Titel:
  Antworten mit Zitat      
Hallo Noxin99,

FresnelC scheint eine Maple-Funktion zu sein, die in Matlab nicht als m-file vorliegt. Probier mal

Code:
X=pi^(1/2)*mfun('FresnelC',1/pi^(1/2)*L.*abs(R))./abs(R)


Das müsste gehen (abgesehen vom Teilen durch Null bei L=0:1:10). Gefunden hab ich das durch Suche in der Matlab-Hilfe nach "FresnelC", der zweite Eintrag.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Noxin99
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 14.12.07
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 17.12.2007, 09:11     Titel:
  Antworten mit Zitat      
kommt leider vorne und hinten nicht hin:

A ist konsant vorgegeben
die xwerte müßten laut deiner hilfe ja dann so berechnet werden

Code:
L=(1:1:100);
R=A.^2./L(:);
for i=(1:length(L))
   sys(i)=pi^(1/2)*mfun('FresnelC',1/pi^(1/2)*L(i).*abs(R(i)))./abs(R(i));
end


und Y also so

Code:
L=(1:1:100);
R=A.^2./L(:);
for i=(1:length(L))      
    sys(i)=pi^(1/2)*mfun('FresnelS',1/pi^(1/2)*L(i).*abs(R(i)))./abs(R(i));
end

dabei sollte jetzt eine klothoide rauskommen, doch wenn ich mir das plotten lasse ist es nur eine ganz normale gerade




vorher hab ich mir die klothoide durch folgenden quelltext generiert:
hab mir das fresnel-integral also mit der quad funktion ausrechnen lassen
Code:
L=(1:1:100);
          R=A.^2./L(:);
          fres_koeff=1./pi.^(1/2).*L(:)./abs(R(:));
          Fresn=zeros(length(L));
          for i=(1:length(L))
              Fresn(i)= quad(@fresnC,0,fres_koeff(i));
              sys(i)=pi.^(1/2).*Fresn(i).*abs(R(i));
         
          end
         

die fresnC.m sah dabei so aus:
Code:
function [eins] = fresnC(t);

eins=cos(pi./2.*t.^2);
 


beim plotten war sogar ansatzweise ne klothoide zu erkennen. leider verschob sich der Mittelpunkt nach links unten, anstatt konstant zu bleiben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 17.12.2007, 10:01     Titel:
  Antworten mit Zitat      
Hallo,

leider habe ich diese Woche keinen Rechner mit Matlab. Sicher findet sich noch ein anderer Helfer. Inhaltlich kann ich auch gar nichts dazu sagen, ob die Mathematik so richtig ist.

Idee: Hast Du
Code:
gesetzt? Das könnte in Deiner zweiten Version die Verzerrung beheben.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Noxin99
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 14.12.07
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 17.12.2007, 12:02     Titel:
  Antworten mit Zitat      
hatte ich zuerst nicht dran gedacht, aber hab die achsen dann mal gleich eingestellt, aber das vermindert den effekt nur!
irgendwo muß ich da noch nen fehler drin haben....
ich werds jetzt noch mal mit deiner formel ausprobieren und einfach was basteln.....
evtl. find ich ja meinen fehler


fehler gefunden:
Code:
X=pi^(1/2)*mfun('FresnelC',1/pi^(1/2)*L.*abs(R))./abs(R)

muß in
Code:
X=pi^(1/2)*mfun('FresnelC',1/pi^(1/2)*L./abs(R)).*abs(R)

geändert werden.
also einmal "/" durch "*" ersetzen und einmal anders rum!

allerdings bekomme ich damit immernoch keine genaue klothoide hin... mittelpunkt des gedachten kreises verschiebt sich
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.320
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 06.01.2008, 13:08     Titel:
  Antworten mit Zitat      
Hi,

wenn ich das bei Wiki richtig verstanden habe würde ich das so machen:
Code:
clear all;
clc;
a=0.5;
i=0;
for l=eps:0.01:3
    i=i+1;
    r=a.^2./l;
    t=l./(a.*sqrt(pi));
    int_x=@(psi) cos(pi.*psi.^2./2);
    int_y=@(psi) sin(pi.*psi.^2./2);
    x(i)=a.*sqrt(pi).*quad(int_x,0,t);
    y(i)=a.*sqrt(pi).*quad(int_y,0,t);
end
hold on;
plot(x,y);
plot(a*sqrt(pi)/2,a*sqrt(pi)/2,'ro');
axis equal;


Viele Grüße
nschlange
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Noxin99
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 14.12.07
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 14.01.2008, 10:12     Titel:
  Antworten mit Zitat      
vielen dank für die vielen beiträge.
habe jetzt 2 möglichkeiten eine klothoide zu erstellen!
einmal die version von nschlange
und dann noch mit folgendem quelltext:
Code:

        A=.5;
        Lu=2;
        n=200;
        l=linspace(0,Lu,n);
        c=inline('cos(pi/2*t.^2)');
        s=inline('sin(pi/2*t.^2)');
        X=zeros(size(l));
        Y=zeros(size(l));
        for k=2:n
            X(k) = X(k-1) + A*quadl ( c, l(k-1), l(k) );
            Y(k) = Y(k-1) + A*quadl ( s, l(k-1), l(k));
        end  
        plot(X,Y), axis([0 1.3 0 1.3])
 


mit beiden funktionen kommt eine klothoide zu stande. allerdings sollten sie doch eigentlich identisch sein(=einheitsklothoide), was aber leider nicht der fall ist.
hat irgendwer ne ahnung woran das liegt?

edit: hab den fehler gerade gefunden, bzw. obs en fehler ist glaub ich nicht!

nschlange hat für x und y sowie den mitelpunkt in ihrer berechnung den term
Code:

lass ich den term weg, sind beide klothoiden identisch!

jetzt stelt sich mir ja die frage an Nschlange: warum hast du den term benutzt??
die berechnung für 'r' ist eigentlich überflüssig, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.320
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 14.01.2008, 11:33     Titel:
  Antworten mit Zitat      
Hi,

stimmt, r zu berechnen ist überflüssig.
Auch die Definition von int_x und int_y in der
Schleife hab ich nicht gut gemacht.
Ich hab das nur schnell von Wikipedia
abgetippt.
Ich guck mir das nachmal an....
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.320
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 14.01.2008, 15:33     Titel:
  Antworten mit Zitat      
So,
hier mal der überarbeitete Code:
(eigentlich nur die Funktionsdefinition aus der Schleife
genommen)
Code:
clear all;
clc;
int_x=@(psi) cos(pi.*psi.^2./2);
int_y=@(psi) sin(pi.*psi.^2./2);
a=1; % a= 2/sqrt(pi) fuer asympt. Punkte (1/1) bzw (-1/-1)
l_min=eps;
l_max=10;
i=0;
for l=l_min:0.02:l_max
    i=i+1;
    t=l./(a.*sqrt(pi));
    x(i)=a.*sqrt(pi).*quad(int_x,0,t);
    y(i)=a.*sqrt(pi).*quad(int_y,0,t);
end
hold on;
plot(x,y);
plot(a*sqrt(pi)/2,a*sqrt(pi)/2,'ro');
plot(-x,-y);
plot(-a*sqrt(pi)/2,-a*sqrt(pi)/2,'ro');
axis equal;
grid on;


Das *Wurzel(pi) hatte ich drin, um die asymptotischen Punkte
auf (1/1) bzw. (-1/-1) zu legen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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.