13 svar
210 visningar
Soderstrom behöver inte mer hjälp
Soderstrom 2768
Postad: 18 nov 2019 19:37 Redigerad: 18 nov 2019 20:35

Den primitva funktionen

Hur gör man för att i en matlab script med en given funktion, räkna ut den primitiva funktionens värde för olika t?

Jag har provat med att skriva i scripten i rad 7: p=integral(@(t) @(y), 0, (x)) där jag definierar x i scripten som x=input('vilket tal') men det funkar inte. Hur gör jag?

Dr. G 9483
Postad: 18 nov 2019 20:38

(Funktionen g behöver stängas med ett "end".)

Om du vill skriva in x och sedan integrera g(t) från 0 till x så skriv

x = input('...')

p = integral(@g,0,x)

Soderstrom 2768
Postad: 18 nov 2019 23:05

Jag insåg att "b" inte var definierad. Sen gjorde jag som du skrev, men gick inte. 

Soderstrom 2768
Postad: 18 nov 2019 23:39

Jag har nu ändrat rad 7 till: p=integral(@(t) g(t),0,x)

Men det går inte. Det står: Unrecognized function or variable 't'. Dessutom är p:et markerat med orange.

Trinity2 1896
Postad: 18 nov 2019 23:49 Redigerad: 18 nov 2019 23:51
Soderstrom skrev:

Jag har nu ändrat rad 7 till: p=integral(@(t) g(t),0,x)

Men det går inte. Det står: Unrecognized function or variable 't'. Dessutom är p:et markerat med orange.

Vet ej om det hjälper dig generellt men en primitiv funktion till din funktion är bwcmce-ct/m+t\frac{bw}{c}\left(\frac{m}{c}e^{-ct/m}+t\right)

Soderstrom 2768
Postad: 19 nov 2019 00:02
Trinity2 skrev:
Soderstrom skrev:

Jag har nu ändrat rad 7 till: p=integral(@(t) g(t),0,x)

Men det går inte. Det står: Unrecognized function or variable 't'. Dessutom är p:et markerat med orange.

Vet ej om det hjälper dig generellt men en primitiv funktion till din funktion är bwcmce-ct/m+t\frac{bw}{c}\left(\frac{m}{c}e^{-ct/m}+t\right)

Tror att det blir fel när du integrerar. Du ska integrera med avseende på t. + på matlab används dess inbyggda funktioner :)

Trinity2 1896
Postad: 19 nov 2019 00:47
Soderstrom skrev:
Trinity2 skrev:
Soderstrom skrev:

Jag har nu ändrat rad 7 till: p=integral(@(t) g(t),0,x)

Men det går inte. Det står: Unrecognized function or variable 't'. Dessutom är p:et markerat med orange.

Vet ej om det hjälper dig generellt men en primitiv funktion till din funktion är bwcmce-ct/m+t\frac{bw}{c}\left(\frac{m}{c}e^{-ct/m}+t\right)

Tror att det blir fel när du integrerar. Du ska integrera med avseende på t. + på matlab används dess inbyggda funktioner :)

Den primitiva funktionen, sånär som på en konstant CC, är korrekt.

Dr. G 9483
Postad: 19 nov 2019 06:41 Redigerad: 19 nov 2019 06:45
Soderstrom skrev:

Jag insåg att "b" inte var definierad. Sen gjorde jag som du skrev, men gick inte. 

g är en funktion med ett argument.

g

leder till felmeddelande.

g(2) 

räknar ut g(t) för t = 2.

EDIT: 

Rad 6 och 7 bör du sätta utanför funktionen g(t).

Soderstrom 2768
Postad: 19 nov 2019 18:23

Funkar fortfarande inte. x:et är dessutom markerat med rött för att: "parse error at x usage might be invalid matlab syntax", som jag inte vet vad det betyder.

Dr. G 9483
Postad: 19 nov 2019 18:56

Vilket värde har t?

Prova 

t = 2;

g(t)

Soderstrom 2768
Postad: 19 nov 2019 20:48
Dr. G skrev:

Vilket värde har t?

Prova 

t = 2;

g(t)

Soderstrom 2768
Postad: 19 nov 2019 20:48
Soderstrom skrev:
Dr. G skrev:

Vilket värde har t?

Prova 

t = 2;

g(t)

Samma problem fortfarande.

Dr. G 9483
Postad: 19 nov 2019 21:10

Jag vet inte vilken kod du kör.

Här är en annan funktion som du hade i ett tidigare inlägg. 

Först definieras funktionen f(r). Parametern a = 3 sätts i funktionen. Sedan integreras f(t) med quad från t = 0 till t = 3. (integral() funkar inte med octave some jag använder istället för matlab.)

Jag räknar ut f(0.5).

Jag räknar ut f(v), där v är en kolumnvektor.

Kan du köra koden nedan?

function y = f(r)
a =3;
y = 2*pi*r*2.*(1-(r/a)).^(1/2);
end

quad(@f, 0, 3)
f(.5)
v = [1,2,3]';
f(v)

Soderstrom 2768
Postad: 19 nov 2019 21:25
Dr. G skrev:

Jag vet inte vilken kod du kör.

Här är en annan funktion som du hade i ett tidigare inlägg. 

Först definieras funktionen f(r). Parametern a = 3 sätts i funktionen. Sedan integreras f(t) med quad från t = 0 till t = 3. (integral() funkar inte med octave some jag använder istället för matlab.)

Jag räknar ut f(0.5).

Jag räknar ut f(v), där v är en kolumnvektor.

Kan du köra koden nedan?

function y = f(r)
a =3;
y = 2*pi*r*2.*(1-(r/a)).^(1/2);
end

quad(@f, 0, 3)
f(.5)
v = [1,2,3]';
f(v)

Jag har löst problemet med hjälp av "integral", då quad inte är rekommenderad i Matlab (Matlab anger det) av någon skum anledning :). Men tack för hjälpen jag har fått, Dr. G.

Svara
Close