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

Nullstellen Mit Newton Verfahren Und Grafische Darstellung

 

asimanca
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2008, 23:18     Titel: Nullstellen Mit Newton Verfahren Und Grafische Darstellung
  Antworten mit Zitat      
hallo leute, ich brauche ihre tipp bzw. ansätze für folgender problem stellung

Ziel:
- Programierung von Newton und Steffenson Verfahren um Nullstellen zu bestimmen (Kein Problem, die bekomme hin)

- funktion eingabe soll über gui Fenster geschehen(kein idee)

- pop up menü zum verfahren auswahl(kein problem)

- berechnung der einzelne interetionen wahlweise endweder ununterberechung(also durchgehend bis ein abbruch bedinnung erfüllt wird) oder schrittweise(kein idee)

- dass alles als gui fenster ausgegeben bzw. steuerbar


könnt jemand mir einige gute links bzw. ansätze geben wie ich es lösen kann.


mein bisherige quell code sieht so so aus, also ist nicht viel aber wird noch gemacht


Code:
%% Einstellungen Für Grafik Fenster

clc
clear all
close all

%% Definition Der Grafik Fenster

fig_handle = figure(...
    'NumberTitle','off',...
    'Name','Nullstellen Verfahren Aus NM-Script 2.2');


%% Push Button Zum Schlißen Der Grafik Fenster

pb_handle = uicontrol(fig_handle,'Style','push',...
     'Units','normalized',...
     'Position',[.85 .05 .1 .05],...
     'String','Ende',...
     'CallBack','close(fig_handle)');

 
 
%% Einstellungen Für Pop Up Menu Text

pu_txt = uicontrol(fig_handle,'Style','text',...
     'Units','normalized',...
     'Position',[.01 .94 .25 .05],...
     'String','Verfahren Auswahl',...
     'BackgroundColor',['red']);
 
%% Ab Hier Verfahren Auswahl Und Aufruf

 pu_handle = uicontrol(fig_handle,...
     'Style','popupmenu',...
     'Units','normalized','Position',[.01 .90 .25 .05],...
     'String','Newton Verfahren|Steffenson Verfahren');
 
Private Nachricht senden Benutzer-Profile anzeigen


Henner
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.01.08
Wohnort: Siegen (NRW)
Version: ---
     Beitrag Verfasst am: 20.01.2008, 14:36     Titel: Hinweise
  Antworten mit Zitat      
Hallo,
ich nehme an, dass du diese GUI nicht mit guide erstellt hast??
Jedenfalls deutet dein Quellcode darauf hin.
Natürlich kann man das auch so machen, aber mtitels guide erscheint
mir das ganze etwas einfacher!? Dann ist der quellcode für die Buttons schon da, und man muss nur noch die Berechnungen einfügen.
Aber das ist ansichtssache.

zur Funktionseingabe:
Man muss dazu in die GUI ein Edit Fenster einfügen, wo man
die Funktion rein eingibt. dann kann man im Programmcode diesen einlesen z.B. so:
f_str=get(handles.edit1,'String');
f_1=char(f_str);
f=inline(f_1,'x')

wobei edit1 der jeweilige Tag name ist des edit fensters.
Ob die char Umwandlung zwischendurch notwendig ist, musst
du mal ausprobieren. Da ich ein ähnliches Programm zur Zeit erstelle (allderdings zum Thema Interpolation) weiß ich erfahrungsgemäß, dass
es an dieser Stelle Probleme geben könnte, wenn man char weglässt . (warum auch immer!?)

Berchnung der einzelnen Iterationen:

Könnte man mit Radio-Buttons als Auswahl in die GUI einfügen und
dann im Programmcode mittels if-Schleife umsetzen.

Hoffe ich konnte dir wenigstens ein bisschen weiterhelfen.
Viele Grüße
Henner Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
asimanca
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2008, 15:20     Titel: Re: Hinweise
  Antworten mit Zitat      
Henner hat Folgendes geschrieben:


danke für nette ansatz, es hat mir weiter geholfen, nun kann ich irgend welche funktion in der text feld eingeben und übernehmen, aber lange bin ich nicht fertig, alles nach und nach. zur zeit sieht mein code so aus.

Code:
% Autor                 :   Halil Aslan
% Program Name          :   Nullstellen Verfahren
% Erstellungs Datum     :   20.01.2008    
% Program Funktion      :   Berechnet Nullstellen und Plotet Eingegebene Funktion
% Datei Große           :   ca. 5 KB


%% *************** Einstellungen Für Grafik Fenster *********************

clc
clear all
close all

%% ******************* Definition Der Grafik Fenster ********************

fig_handle = figure(...
    'NumberTitle','off',...
    'Name','Nullstellen Verfahren Aus NM-Script 2.2');

%% ********************* Definition der Achse ****************************

ax_handle = axes('Position',[.2 .2 .6 .6]);


%% ************* Push Button Zum Schlißen Der Grafik Fenster *************

pb_handle = uicontrol(fig_handle,'Style','push',...
     'Units','normalized',...
     'Position',[.85 .05 .1 .05],...
     'String','Ende',...
     'CallBack','close(fig_handle)');

 
 
%% **************** Einstellungen Für Pop Up Menu Text *******************

pu_txt = uicontrol(fig_handle,'Style','text',...
     'Units','normalized',...
     'Position',[.01 .94 .25 .05],...
     'String','Verfahren Auswahl',...
     'BackgroundColor',['red']);
 
%% ********** Ab Hier Menü Zum Verfahren Auswahl Und Aufruf **************

 pu_handle = uicontrol(fig_handle,...
     'Style','popupmenu',...
     'Units','normalized','Position',[.01 .90 .25 .05],...
     'String','Newton Verfahren|Steffenson Verfahren');
 
%% ************** Ab Hier Definition Von Text-Felder ********************

%------------- Ab Hier 1.Textfeld Zum Funktion Eingabe ------------------

pu_txt_1 = uicontrol(fig_handle,'Style','text',...
     'Units','normalized',...
     'Position',[.01 .1 .05 .05],...
     'String','f(x)=',...
     'BackgroundColor',['red']);

eth_1 = uicontrol(fig_handle,'Style','edit',...
                'Units','normalized',...
                'Position',[.065 .1 .25 .05],...
                'String','');
     
%------------- Ab Hier 2.Textfeld Zum Startwert Eingabe ------------------

pu_txt_2 = uicontrol(fig_handle,'Style','text',...
     'Units','normalized',...
     'Position',[.4 .1 .1 .05],...
     'String','Startwert=',...
     'BackgroundColor',['red']);
 
eth_2 = uicontrol(fig_handle,'Style','edit',...
                'Units','normalized',...
                'Position',[.51 .1 .25 .05],...
                'String','');
           
%% **************  Ab Hier Funktion Übernahme **************************
pb_handle = uicontrol(fig_handle,'Style','push',...
     'Units','normalized',...
     'Position',[.065 .05 .25 .05],...
     'String','Funktion Übernehmen',...%);
      'Callback',...
             ['f_str=get(eth_1,''String''),',...
             'f_str1=get(eth_2,''String''),',...
             'f_1=char(f_str),',...
             'f_2=char(f_str1),',...
             'f=inline(f_1,''x1''),',...
             'f=inline(f_1,''x''),','axes(ax_handle),','plot(0:10,f(0:10))']);
         %'end']);
           
 


hi habs noch einer frage, sorry das ich nerve aber ich komme damit nicht klar, wie kann ich aber nun startwert in das funktion eingeben, hab so versucht, zwar wird der wert gelesen, aber wird nicht in funktion übergeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Henner
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.01.08
Wohnort: Siegen (NRW)
Version: ---
     Beitrag Verfasst am: 21.01.2008, 12:54     Titel:
  Antworten mit Zitat      
Hallo,
hier nervt keiner, dafür ist das Forum ja da, um bei solchen Problemen zu helfen. Smile
normalerweise wird die Funktion mit Startwert so aufgerufen z.B:
wenn startwert x=2 ist , dann :
y=f(x)
Dabei wird diese Zahl 2 an die Funkion übergeben und an dieser Stelle ausgewertet.
wenn x ein Vektor ist,ist natürlich y auch ein Vektor, der die Funkionswerte von x enthält.

Hoffe ich konnte dir weiter helfen.
Gruß
Henner Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
asimanca
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2008, 22:28     Titel:
  Antworten mit Zitat      
Henner hat Folgendes geschrieben:
danke für vorschlag ich habe mit etwas anders gemacht.

MeinProjekt.m File
Zitat:

%% *************** Einstellungen Für Grafik Fenster *********************

clc
clear all
close all

%% ******************* Definition Der Grafik Fenster ********************

fig_handle = figure(...
'NumberTitle','off',...
'Name','Nullstellen Verfahren');

%% ********************* Definition der Achse ****************************

ax_handle = axes('Position',[.2 .2 .6 .6]);


%% ************* Push Button Zum Schlißen Der Grafik Fenster *************

pb_handle = uicontrol(fig_handle,'Style','push',...
'Units','normalized',...
'Position',[.85 .05 .1 .05],...
'String','Ende',...
'CallBack','close(fig_handle)');



%% **************** Einstellungen Für Pop Up Menu Text *******************

pu_txt = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.01 .94 .25 .05],...
'String','Verfahren Auswahl',...
'BackgroundColor',['red']);

%% ********** Ab Hier Menü Zum Verfahren Auswahl Und Aufruf **************

pu_handle = uicontrol(fig_handle,...
'Style','popupmenu',...
'Units','normalized','Position',[.01 .90 .25 .05],...
'String','Newton Verfahren|Steffenson Verfahren',...
'Callback',['K=newton()']);
%['pu_handle_value=get(pu_handle,''Value'');',...
% 'if pu_handle_value==1,',...
% 'grf_str=''newton(x1,f)'';',...
% 'elseif pu_handle_value==2,',...
% 'grf_str=''surf(X,Y,Z)'';',...
% 'elseif pu_handle_value==3,',...
% 'grf_str=''contour3(X,Y,Z)'';',...
% 'end,',...
% 'eval(grf_str)']);

%% ************** Ab Hier Definition Von Text-Felder ********************

%------------- Ab Hier 1.Textfeld Zum Funktion Eingabe ------------------

pu_txt_1 = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.01 .1 .05 .05],...
'String','f(x)=',...
'BackgroundColor',['red']);

eth_1 = uicontrol(fig_handle,'Style','edit',...
'Units','normalized',...
'Position',[.065 .1 .20 .05],...
'String','');

%------------- Ab Hier 2.Textfeld Zum Startwert Eingabe ------------------

pu_txt_2 = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.275 .1 .1 .05],...
'String','Bereich=',...
'BackgroundColor',['red']);

eth_2 = uicontrol(fig_handle,'Style','edit',...
'Units','normalized',...
'Position',[.38 .1 .21 .05],...
'String','');

%---------------------------------------------------------------
pu_txt_3 = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.595 .1 .1 .05],...
'String','Startwert=',...
'BackgroundColor',['red']);

eth_3 = uicontrol(fig_handle,'Style','edit',...
'Units','normalized',...
'Position',[.7 .1 .25 .05],...
'String','');

%% ************** Ab Hier Funktion Übernahme **************************
pb_handle = uicontrol(fig_handle,'Style','push',...
'Units','normalized',...
'Position',[.065 .05 .25 .05],...
'String','Funktion Übernehmen',...%);
'Callback',['grafik_funktion(ax_handle,eth_1,eth_2)']);

%%

x_strX=get(eth_3,'String');
x_2=char(x_strX);
x1=inline(x_2,'x');



Newton m-file
Code:
function K=newton(x1,f)
 
eps=0.0001;N=10;

f % Funktion
fs = inline(diff(sym(f)));

        while abs(f(x))>eps;
            i=i+1;
                if abs(fs(x))<eps|i>N;
                    disp('TESTEN');
                    break;
                end;
                K=x-f(x)/fs(x);

        end;



grafik_funktion m-file
Code:
function grafik_funktion(ax_handle,eth_1,eth_2)

     f_str=get(eth_1,'String');
     x_str=get(eth_2,'String');
     f_1=char(f_str);
     x_1=eval(x_str);
     f=inline(f_1,'x');
     axes(ax_handle);
     plot(x_1,f(x_1));



das mit der eingabe der funktion und werte bereiche klappt aber irgend wie wenn ich nun aus dem pop up menu newton verfahren auswähle und mit callback aufrufe erkennt funtion f, dass ich in dem grafik_funktion einlese nicht?

Zuletzt bearbeitet von asimanca am 09.02.2008, 15:16, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Henner
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.01.08
Wohnort: Siegen (NRW)
Version: ---
     Beitrag Verfasst am: 25.01.2008, 10:24     Titel:
  Antworten mit Zitat      
asimanca hat Folgendes geschrieben:
Henner hat Folgendes geschrieben:
danke für vorschlag ich habe mit etwas anders gemacht.

MeinProjekt.m File
Zitat:

%% *************** Einstellungen Für Grafik Fenster *********************

clc
clear all
close all

%% ******************* Definition Der Grafik Fenster ********************

fig_handle = figure(...
'NumberTitle','off',...
'Name','Nullstellen Verfahren');

%% ********************* Definition der Achse ****************************

ax_handle = axes('Position',[.2 .2 .6 .6]);


%% ************* Push Button Zum Schlißen Der Grafik Fenster *************

pb_handle = uicontrol(fig_handle,'Style','push',...
'Units','normalized',...
'Position',[.85 .05 .1 .05],...
'String','Ende',...
'CallBack','close(fig_handle)');



%% **************** Einstellungen Für Pop Up Menu Text *******************

pu_txt = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.01 .94 .25 .05],...
'String','Verfahren Auswahl',...
'BackgroundColor',['red']);

%% ********** Ab Hier Menü Zum Verfahren Auswahl Und Aufruf **************

pu_handle = uicontrol(fig_handle,...
'Style','popupmenu',...
'Units','normalized','Position',[.01 .90 .25 .05],...
'String','Newton Verfahren|Steffenson Verfahren',...
'Callback',['K=newton()']);
%['pu_handle_value=get(pu_handle,''Value'');',...
% 'if pu_handle_value==1,',...
% 'grf_str=''newton(x1,f)'';',...
% 'elseif pu_handle_value==2,',...
% 'grf_str=''surf(X,Y,Z)'';',...
% 'elseif pu_handle_value==3,',...
% 'grf_str=''contour3(X,Y,Z)'';',...
% 'end,',...
% 'eval(grf_str)']);

%% ************** Ab Hier Definition Von Text-Felder ********************

%------------- Ab Hier 1.Textfeld Zum Funktion Eingabe ------------------

pu_txt_1 = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.01 .1 .05 .05],...
'String','f(x)=',...
'BackgroundColor',['red']);

eth_1 = uicontrol(fig_handle,'Style','edit',...
'Units','normalized',...
'Position',[.065 .1 .20 .05],...
'String','');

%------------- Ab Hier 2.Textfeld Zum Startwert Eingabe ------------------

pu_txt_2 = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.275 .1 .1 .05],...
'String','Bereich=',...
'BackgroundColor',['red']);

eth_2 = uicontrol(fig_handle,'Style','edit',...
'Units','normalized',...
'Position',[.38 .1 .21 .05],...
'String','');

%---------------------------------------------------------------
pu_txt_3 = uicontrol(fig_handle,'Style','text',...
'Units','normalized',...
'Position',[.595 .1 .1 .05],...
'String','Startwert=',...
'BackgroundColor',['red']);

eth_3 = uicontrol(fig_handle,'Style','edit',...
'Units','normalized',...
'Position',[.7 .1 .25 .05],...
'String','');

%% ************** Ab Hier Funktion Übernahme **************************
pb_handle = uicontrol(fig_handle,'Style','push',...
'Units','normalized',...
'Position',[.065 .05 .25 .05],...
'String','Funktion Übernehmen',...%);
'Callback',['grafik_funktion(ax_handle,eth_1,eth_2)']);

%%

x_strX=get(eth_3,'String');
x_2=char(x_strX);
x1=inline(x_2,'x');



Newton m-file
Code:
function K=newton(x1,f)
 
eps=0.0001;N=10;

f % Funktion
fs = inline(diff(sym(f)));

        while abs(f(x))>eps;
            i=i+1;
                if abs(fs(x))<eps|i>N;
                    disp('TESTEN');
                    break;
                end;
                K=x-f(x)/fs(x);

        end;



grafik_funktion m-file
Code:
function grafik_funktion(ax_handle,eth_1,eth_2)

     f_str=get(eth_1,'String');
     x_str=get(eth_2,'String');
     f_1=char(f_str);
     x_1=eval(x_str);
     f=inline(f_1,'x');
     axes(ax_handle);
     plot(x_1,f(x_1));



das mit der eingabe der funktion und werte bereiche klappt aber irgend wie wenn ich nun aus dem pop up menu newton verfahren auswähle und mit callback aufrufe erkennt funtion f, dass ich in dem grafik_funktion einlese nicht?

Hast eventuell ein idee wieso es nicht geht?



Hallo,
ich versteh leider deine Frage nicht ganz, aber wenn du die Funktion
grafik_funktion aufrufen willst, sollte das etwa so passieren:

grafik_funktion(axes1,get(eth_1,'String'),get(eth_2,'String'))

dadurch wird der m.File aufgerufen der Grafikfunktion
mit den werten, die in eth1 und eth2 eingegeben wurde.
Alternativ müsste es auch so funktioneren:

f_str=get(eth_1,'String');
x_str=get(eth_2,'String');
grafik_funktion(axes1,f_str,x_str)

Hoffe ich konnte dir irngedwie damit weiterhelfen.
Gruß
Henner
Private Nachricht senden Benutzer-Profile anzeigen
 
Henner
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.01.08
Wohnort: Siegen (NRW)
Version: ---
     Beitrag Verfasst am: 25.01.2008, 10:31     Titel: PS
  Antworten mit Zitat      
Habe noch was vergessen:
in der grafik_funktion m.File muss dann natürlich so aussehen:
grafik_funktion m-file
Code:
function grafik_funktion(ax_handle,eth_1,eth_2)
     f_1=char(eth_1);
     x_1=eval(eth_2);
     f=inline(f_1,'x');
     axes(ax_handle);
     plot(x_1,f(x_1));

weil die eth_1 und eth_2 werden ja durch den Funktionsaufruf übergeben.
Also müsste das so funktionieren.
So hoffe dass ich jetzt alles richtig geändert habe.
Gruß
Henner Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
asimanca
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2008, 15:12     Titel:
  Antworten mit Zitat      
hallo leute ich habe mein projekt einiger masse aufgebaut und fuctionen in verschiedene m file erstellt, aber wenn ich die eweilige funktionen in einer m file haben will, klappt dann nicht.

Hier Projekt.m file
Code:

%% *************** Einstellungen Für Grafik Fenster *********************
clc
clear all
close all

%% Erstelle GUI und Mach Es Unsichtbar Bis Aufgebaut Wird
FIGUR = figure('Visible','off','Position',[760,700,750,500]);

%% Ab Hier Erstellung und Einstellungen Von Komponenten
FUNKTION_Text = uicontrol('Style','text',...
    'Position',[135,470,100,17],...
    'String','FUNKTION {f(x)}',...
    'BackgroundColor',['red']);

FUNKTION = uicontrol('Style','edit',...
    'Position',[135,453,100,20],...
    'String','');
           
BEREICH_Text = uicontrol('Style','text',...
    'Position',[255,470,100,17],...
    'String','BEREICH {[a,b]}',...
    'BackgroundColor',['red']);

BEREICH = uicontrol('Style','edit',...
    'Position',[255,453,100,20],...
    'String','');  
           
STARTWERT_Text = uicontrol('Style','text',...
    'Position',[375,470,100,17],...
    'String','STARTWERT {x0}',...
    'BackgroundColor',['red']);

STARTWERT = uicontrol('Style','edit',...
    'Position',[375,453,100,20],...
    'String','');
     
INTERATIONEN_Text = uicontrol('Style','text',...
    'Position',[495,470,100,17],...
    'String','INTERATIONEN {xk}',...
    'BackgroundColor',['red']);

INTERATIONEN = uicontrol('Style','edit',...
    'Position',[495,453,100,20],...
    'String','');

EPSILON_Text = uicontrol('Style','text',...
     'Position',[615,470,100,17],...
     'String','FEHLER(eps)',...
     'BackgroundColor',['red']);
EPSILON = uicontrol('Style','edit',...
                'Position',[615,453,100,20],...
                'String','');

SCHLIESS_BT = uicontrol('Style','push',...
    'Position',[335,5,80,20],...
    'String','Ende',...
    'CallBack','close(FIGUR)');
 
ACHSE = axes('Units','Pixels','Position',[175,100,400,250]);
%align([FUNKTION_Text,FUNKTION,BEREICH_Text,BEREICH,STARTWERT_Text,STARTWERT,INTERATIONEN_Text,INTERATIONEN,SCHLIESS_BT],'Left','None');

PLOT_BT = uicontrol(FIGUR,'Style','push',...
    'Position',[315,35,120,20],...
    'String','Funktion Übernehmen',...%);
    'Callback',['f = grafik_funktion(ACHSE,FUNKTION,BEREICH)']);

%% Ab Hier Einstellungen Für Menu
MENUE_Text = uicontrol('Style','text',...
     'Position',[10,470,105,17],...
     'String','Verfahren Auswahl',...
     'BackgroundColor',['red']);
 
MENUE_Wahl = uicontrol('Style','popupmenu',...
     'Position',[10,453,105,20],...
     'String','Newton|Steffenson',...
      'Callback',['[xsol,deltax,deltaf,n,x_out] = newton(FUNKTION,STARTWERT,INTERATIONEN)']);
      %'Callback',['[x,x_out]=steffenson(FUNKTION,STARTWERT,INTERATIONEN,EPSILON)']);    

   
     

%% Ab Hier Einstellungen Für Komponente Zum Normalisieren
set([FIGUR,ACHSE,FUNKTION_Text,FUNKTION,BEREICH_Text,BEREICH,STARTWERT_Text,STARTWERT,INTERATIONEN_Text,INTERATIONEN,SCHLIESS_BT,PLOT_BT,MENUE_Text,MENUE_Wahl,EPSILON_Text,EPSILON],...
'Units','normalized');
 
%% Ab Hier Überschrift Von Figur(Fenster)
set(FIGUR,'Name','Nullstellen Verfahren')
%% Platziert GUI In Der Mitte Der Fenster
movegui(FIGUR,'center')
%% Macht GUI Sichtbar
set(FIGUR,'Visible','on');
 



grafik.m file
Code:

function f = grafik_funktion(ACHSE,FUNKTION,BEREICH)
     funktion=get(FUNKTION,'String');
     bereich=get(BEREICH,'String');
     f_1=char(funktion);
     x_1=eval(bereich);
     f=inline(f_1,'x');
     axes(ACHSE);
     plot(x_1,f(x_1));
     f(x_1);
 



Newton.m file
Code:

function [xsol,deltax,deltaf,n,x_out] = newton(FUNKTION,STARTWERT,INTERATIONEN)

format long                               %Länge Der Ausgabe Format
funktion=get(FUNKTION,'String');          %Input Von Funktion
startwert=get(STARTWERT,'String');        %Input Von Startwert
interation=get(INTERATIONEN,'String');    %Input Von Anzahl Der Interation

f_funktion=char(funktion);
x_start=eval(startwert);
nmax=eval(interation);  
f = inline(f_funktion,'x');
     
xn   = x_start;      %Intialisierung Der Variable xn mit wert x_start
xsol = x_start;      %Intialisierung Der Variable xsol mit wert x_start
n = nmax;            %Intialisierung Der Variable n mit wert nmax
tolx = 1e-5;         %Intialisierung Der Variable tolx
tolf = 1e-5;         %Intialisierung Der Variable tolf
h = 1e-5;            %Schrittweite fuer Differenzenquotient
   
f1 = feval(f,xn);   %Berechnung Der Funktion Wert bzgl. Startwert

   for k=1:nmax               %For Schleife vok k=1 bis Variable Wert nmax    
      f2 = feval(f,xn+h);     %Berechnung Der Funktion Wert bzgl. Startwert + Schrittweite fuer Differenzenquotient
      xsol = xn-h*f1/(f2-f1); %Berechnung Der Neue Startwert
      deltax = abs(xsol-xn);
      fsol = feval(f,xsol);
      deltaf = abs(fsol);    
%------- Speichern der Iteration -------
      x_out(k) = xsol;
%---------------------------------------
      if (deltax<tolx) | (deltaf<tolf) %Abbruch Bedinnung Für Interationen
        n = k;                         %Geforderte Genauigkeit vorzeitig erreicht
        break;
      end;
      xn = xsol;                       %Ausgabe Der Letzte Interation Ergebnis
      f1 = fsol;                       %Nächste Funktion Ergebnis
     %plot(x_out(k),f(x_out(k)),'x') % ein x plotten
   end;

 



steffenson.m file
Code:

function [x,x_out]=steffenson(FUNKTION,STARTWERT,INTERATIONEN,EPSILON)
funktion=get(FUNKTION,'String');          %Input Von Funktion
startwert=get(STARTWERT,'String');     %Input Von Startwert
interation=get(INTERATIONEN,'String'); %Input Von Anzahl Der Interation
epsilon=get(EPSILON,'String');         %Input Von epsilon

f_funktion=char(funktion);
x_start=eval(startwert);
nmax=eval(interation);
eps_tol=eval(epsilon);

f=inline(f_funktion,'x');

format long       %Länge Der Ausgabe Format
eps=eps_tol;      %Intialisierung Von Variable eps mit wert eps_tol
n=nmax;           %Intialisierung Von Variable n mit wert namx
x=x_start;        %Intialisierung Von Variable x mit wert x_start
i=1;              %Intialisierung Von Variable i(Zähler Für Interationen)
       
while abs(f(x)) > eps;                 %While Schleife Bis Erfüllt Wird                            
        if abs(f(x)) < eps | i > n;    %Abbruch Bedinnung Für Interationen
            disp('Nullstelle Bei');
            break;
        end;
        x=x-(f(x)/((f(x+f(x))-f(x))/f(x)));  %Berechnung Von Der x werte
        x_out(i) = x;                        %Ausgabe Von Einzelner Interationen  
        i=i+1;                               %Erhöhe Zähler Bei Jeder Durchlauf
end;    
       


wie kann ich jetzt alles in einer m file erstellen.

ich werde froh sein wenn jemand mir dabei einige ansätze geben würde.


Edit: hier hänge auch die daten ein.

Anhang.rar
 Beschreibung:

Download
 Dateiname:  Anhang.rar
 Dateigröße:  2.65 KB
 Heruntergeladen:  813 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
asimanca
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.03.2008, 22:29     Titel:
  Antworten mit Zitat      
könnte bitte jemand mir dabei helfen oder einige ansätze geben wie ich diese pop up menu hinbekomme.


so rufe ich im gui menu an

Code:

:::
:::

MENUE_Wahl = uicontrol('Style','popupmenu',...
     'Position',[10,453,105,20],...
     'String','Newton|Steffenson',...
      'Callback','menue');

:::
:::
 


und das ist mein menu

Code:

val = get(MENUE_Wahl,'Value');
if val == 1
 'Callback', '{@newton,FUNKTION,STARTWERT,INTERATIONEN}'
elseif val == 2
 'Callback', '{@steffenson,FUNKTION,STARTWERT,INTERATIONEN,EPSILON}'
end
 


aber irgendwie klappt es nicht, obwohl callback funktion aufgerufen wird, aber ohne daten.
Private Nachricht senden Benutzer-Profile anzeigen
 
asimanca
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2008, 23:10     Titel:
  Antworten mit Zitat      
so ich bin einstück weiter aber immer noch nicht ganz fertig.

so sieht mein gui aus

Code:

%% *************** Einstellungen Für Grafik Fenster *********************
clc
clear all
close all

%% Erstelle GUI und Mach Es Unsichtbar Bis Aufgebaut Wird
FIGUR = figure('Visible','off','Position',[760,700,750,500]);

%% Ab Hier Erstellung und Einstellungen Von Komponenten
FUNKTION_Text = uicontrol('Style','text',...
    'Position',[135,470,100,17],...
    'String','FUNKTION {f(x)}',...
    'BackgroundColor',['red']);

FUNKTION = uicontrol('Style','edit',...
    'Position',[135,453,100,20],...
    'String','');
           
BEREICH_Text = uicontrol('Style','text',...
    'Position',[255,470,100,17],...
    'String','BEREICH {[a,b]}',...
    'BackgroundColor',['red']);

BEREICH = uicontrol('Style','edit',...
    'Position',[255,453,100,20],...
    'String','');  
           
STARTWERT_Text = uicontrol('Style','text',...
    'Position',[375,470,100,17],...
    'String','STARTWERT {x0}',...
    'BackgroundColor',['red']);

STARTWERT = uicontrol('Style','edit',...
    'Position',[375,453,100,20],...
    'String','');
     
INTERATIONEN_Text = uicontrol('Style','text',...
    'Position',[495,470,100,17],...
    'String','INTERATIONEN {xk}',...
    'BackgroundColor',['red']);

INTERATIONEN = uicontrol('Style','edit',...
    'Position',[495,453,100,20],...
    'String','');

SCHLIESS_BT = uicontrol('Style','push',...
    'Position',[335,5,80,20],...
    'String','Ende',...
    'CallBack','close(FIGUR)');
 
ACHSE = axes('Units','Pixels','Position',[175,100,400,250]);

PLOT_BT = uicontrol(FIGUR,'Style','push',...
    'Position',[315,35,120,20],...
    'String','Funktion Übernehmen',...%);
    'Callback',['f = grafik_funktion(ACHSE,FUNKTION,BEREICH)']);


Animation_BT = uicontrol(FIGUR,'Style','push',...
    'Position',[150,35,120,20],...
    'String','Animation',...%);
    'Callback',['animation(n,x_out)']);

%% Ab Hier Einstellungen Für Menu
MENUE_Text = uicontrol('Style','text',...
     'Position',[10,470,105,17],...
     'String','Verfahren Auswahl',...
     'BackgroundColor',['red']);
 
MENUE_Wahl = uicontrol('Style','popupmenu',...
     'Position',[10,453,105,20],...
     'String','Newton|Steffenson',...
     'Callback','menue');
     

%% Ab Hier Einstellungen Für Komponente Zum Normalisieren
set([FIGUR,ACHSE,FUNKTION_Text,FUNKTION,BEREICH_Text,BEREICH,STARTWERT_Text,STARTWERT,INTERATIONEN_Text,INTERATIONEN,SCHLIESS_BT,PLOT_BT,MENUE_Text,MENUE_Wahl],...
'Units','normalized');
 
%% Ab Hier Überschrift Von Figur(Fenster)
set(FIGUR,'Name','Nullstellen Verfahren')
%% Platziert GUI In Der Mitte Der Fenster
movegui(FIGUR,'center')
%% Macht GUI Sichtbar
set(FIGUR,'Visible','on');
 


mein beide funktionen

Code:

function [xsol,deltax,deltaf,n,x_out] = newton(FUNKTION,STARTWERT,INTERATIONEN)

format long                               %Länge Der Ausgabe Format
funktion=get(FUNKTION,'String');          %Input Von Funktion
startwert=get(STARTWERT,'String');        %Input Von Startwert
interation=get(INTERATIONEN,'String');    %Input Von Anzahl Der Interation

f_funktion=char(funktion);
x_start=eval(startwert);
nmax=eval(interation);  
f = inline(f_funktion,'x');
     
xn   = x_start;      %Intialisierung Der Variable xn mit wert x_start
xsol = x_start;      %Intialisierung Der Variable xsol mit wert x_start
n = nmax;            %Intialisierung Der Variable n mit wert nmax
tolx = 1e-5;         %Intialisierung Der Variable tolx
tolf = 1e-5;         %Intialisierung Der Variable tolf
h = 1e-5;            %Schrittweite fuer Differenzenquotient
   
f1 = feval(f,xn);   %Berechnung Der Funktion Wert bzgl. Startwert

   for k=1:nmax               %For Schleife vok k=1 bis Variable Wert nmax    
      f2 = feval(f,xn+h);     %Berechnung Der Funktion Wert bzgl. Startwert + Schrittweite fuer Differenzenquotient
      xsol = xn-h*f1/(f2-f1); %Berechnung Der Neue Startwert
      deltax = abs(xsol-xn);
      fsol = feval(f,xsol);
      deltaf = abs(fsol);    
%------- Speichern der Iteration -------
      x_out(k) = xsol;
%---------------------------------------
      if (deltax<tolx) | (deltaf<tolf) %Abbruch Bedinnung Für Interationen
        n = k;                         %Geforderte Genauigkeit vorzeitig erreicht
        break;
      end;
      xn = xsol;                       %Ausgabe Der Letzte Interation Ergebnis
      f1 = fsol;                       %Nächste Funktion Ergebnis
   end;
 



Code:

function [n,x,x_out]=steffenson(FUNKTION,STARTWERT,INTERATIONEN)

funktion=get(FUNKTION,'String');          %Input Von Funktion
startwert=get(STARTWERT,'String');     %Input Von Startwert
interation=get(INTERATIONEN,'String'); %Input Von Anzahl Der Interation

f_funktion=char(funktion);
x_start=eval(startwert);
nmax=eval(interation);
f=inline(f_funktion,'x');

format long       %Länge Der Ausgabe Format
eps=1e-5;;      %Intialisierung Von Variable eps mit wert eps_tol
n=nmax;           %Intialisierung Von Variable n mit wert namx
x=x_start;        %Intialisierung Von Variable x mit wert x_start
i=1;              %Intialisierung Von Variable i(Zähler Für Interationen)
       
while abs(f(x)) > eps;                 %While Schleife Bis Erfüllt Wird                            
        if abs(f(x)) < eps | i > n;    %Abbruch Bedinnung Für Interationen
            disp('Nullstelle Bei');
            break;
        end;
        x=x-(f(x)/((f(x+f(x))-f(x))/f(x)));  %Berechnung Von Der x werte
        x_out(i) = x;                        %Ausgabe Von Einzelner Interationen  
        i=i+1;                               %Erhöhe Zähler Bei Jeder Durchlauf
end;  
 



mein menu m file

Code:

val = get(MENUE_Wahl,'Value');
if val == 1
 [xsol,deltax,deltaf,n,x_out]=newton(FUNKTION,STARTWERT,INTERATIONEN)
elseif val == 2
[n,x,x_out]=steffenson(FUNKTION,STARTWERT,INTERATIONEN)
end
 


grafik m file
Code:

function f = grafik_funktion(ACHSE,FUNKTION,BEREICH)
     funktion=get(FUNKTION,'String');
     bereich=get(BEREICH,'String');
     f_1=char(funktion);
     x_1=eval(bereich);
     f=inline(f_1,'x');
     axes(ACHSE);
     plot(x_1,f(x_1),'r-');
     f(x_1);
 


und animation m file

Code:

function animation(n,x_out)
x=x_out
k=n;
for i=1:k
  hold on
  plot (x(i),'g.')
  drawnow
  pause(1);
end
 



nun zu mein problem.

animation klappt aber die animation schritte wird stat auf der x achse zu darstellen, wird auf der y achse und zwar auf gleiche wert animiert.

hat jemand bitte ein idee woran es liegen sein könnte, oder wie ich es lösen kann.

danke vorraus.
Private Nachricht senden Benutzer-Profile anzeigen
 
asimanca
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 18.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2008, 18:39     Titel: Re: Hinweise
  Antworten mit Zitat      
Henner hat Folgendes geschrieben:

Berchnung der einzelnen Iterationen: [/b]
Könnte man mit Radio-Buttons als Auswahl in die GUI einfügen und
dann im Programmcode mittels if-Schleife umsetzen.
Henner Wink


ok erstellen von radio button ist kein problem wie lasse ich aber diese code was für animation ist als if schleife umsetzen.

Code:

function animation(n,x_out)
y=0;
x=x_out
k=n;
for i=1:k
  hold on
  zoom on
  plot (x(i),y,'g.')
  drawnow
  pause(1);
end
 
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.