Funktion auswerten < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:18 Di 15.05.2007 | Autor: | DesterX |
Hallo!
Weiß jemand, wie ich eine beliebige Funktion mit Matlab an einigen Stellen auswerte, meinetwegen $f(x)= [mm] e^{x^2}+\bruch{3}{4}x$ [/mm] in den Stellen [mm] $x_1=1$, $x_2=1.5$ [/mm] usw.
Vielen Dank im Voraus und viele Grüße,
Dester
|
|
|
|
Du kannst z.B. die Funktion inline definieren:
f=inline('exp(x.^2)+3/4.*x','x');
Dann kannst Du f(1.234) ausrechnen lassen.
Du kannst auch die Funktion in ein m-File schreiben und das dann
aufrufen.
f.m:
1: | function [ y ] = f( x )
| 2: | y=exp(x.^2)+3/4.*x;
|
mfg
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:34 Mi 16.05.2007 | Autor: | DesterX |
Vielen Dank für deine Hilfe :)
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 00:43 Mo 28.05.2007 | Autor: | crox |
Hallo ihr Lieben !!!
Ich habe zu dem Thema eine Frage:
Ich habe eine Funktion h(x,j), die von 2 Variablen abhängt:
h=inline('x^(j-1)','x','j');
Nun möchte ich j einen Wert zuordnen (z.Bsp.: j=2;)
um mir anschließend die Funktion h(x,2) plotten lassen.
Wie mache ich das ???
h(x,2) macht nicht das was ich willt :(. Sollte dann ja h(x,2)=x sein.
LG
|
|
|
|
|
Hi,
doch, das geht so, Du muss aber x^(j-1) durch x.^(j-1) ersetzen.
Wie plottest Du denn?
mfg
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:59 Mo 28.05.2007 | Autor: | crox |
Ich dachte mir das so:
function [] = test()
h=inline('x.^(j-1)','x','j');
d=[2; 4; 8];
f=0;
for j=1:3
f=f+d(j)*h(x,j);
end
x=0:0.1:10;
plot(x,f);
end
Aber das funktioniert leider nicht.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:11 Mo 28.05.2007 | Autor: | nschlange |
Dann setzt das x= doch mal vor die for-Schleife.
Was soll denn da für ein Plot entstehen?
mfg
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:40 Mo 28.05.2007 | Autor: | crox |
hmmm ... aber ich mag nach der for-schleife die funktion f auch noch ausgeben. da soll dann f=2+4x+8x² stehn. und f(x) dann plotten. oder muss ich dann die sysmbolic toolbox zur hilfe nehmen ? da klappt die ausgabe, aber nicht das plotten.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:29 Mo 28.05.2007 | Autor: | nschlange |
Anscheinend willst Du Polynome zusammenbauen.
Guck Dir mal polyval an:
clear all;
x=-10:.5:10;
d=[2 4 8];
d=d(end:-1:1);
y=polyval(d,x);
plot(x,y);
Hilft Dir das?
mfg
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:41 Mo 28.05.2007 | Autor: | crox |
ja, in diesem speziellen fall ist es ein polynom. aber das ganze soll so funktionieren, dass man dem programm eine beliebige funktion gibt mit der gerechnet werden soll. so z.bsp. auch e^jx.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:12 Mo 28.05.2007 | Autor: | crox |
alternativ dachte ich mir das so:
function [] = test2()
syms x y
h=x^(y-1);
d=[-0.6605; -2.3270; 3.0055];
f=0;
for y=1:3
f=f+d(y)*subs(h);
end
pretty(f)
x=0:0.1:10;
plot(x,f)
end
aber da ist die ausgabe von f durch brüche dargestellt (ich mag aber dezimalzahlen haben) und das plotten geht nicht.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:45 Mo 28.05.2007 | Autor: | nschlange |
Müsste aber auch gehen. Guck mal in der Hilfe nach subs.
> alternativ dachte ich mir das so:
>
> function [] = test2()
> syms x y
> h=x^(y-1);
> d=[-0.6605; -2.3270; 3.0055];
> f=0;
> for y=1:3
> f=f+d(y)*subs(h);
> end
> pretty(f)
> x=0:0.1:10;
f=subs(f,x);
> plot(x,f)
> end
>
> aber da ist die ausgabe von f durch brüche dargestellt (ich
> mag aber dezimalzahlen haben) und das plotten geht nicht.
mfg
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:21 Mo 28.05.2007 | Autor: | crox |
super !!! danke schön. da hätte ich auch selbst drauf kommen können ;).
hast du vielleicht auch noch ne idee, wie man aus der bruch-darstellung von f eine dezimalzahl-darstellung machen kann ?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:43 Mo 28.05.2007 | Autor: | nschlange |
Sicher, sicher.
vpa(f,5) statt pretty(f)
mfg
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:09 Mo 28.05.2007 | Autor: | crox |
herzlichen dank !!!
das programm läuft einwandfrei
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:13 Mo 28.05.2007 | Autor: | nschlange |
Dann warst Du doch auf dem richtigen Weg.
Halt nur das x=... vor die for-Schleife packen.
h=inline('x.^(j-1)','x','j');
d=[2 4 8];
x=-10:0.1:10;
f=zeros(1,length(x));
for j=1:length(d)
f=f+d(j)*h(x,j);
end
plot(x,f);
funktioniert bei mir.
mfg
nschlange
|
|
|
|