MATLAB - Skjæringspunkt mellom to eller tre funksjoner?

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk på høyskolenivå. Alle som har kunnskapen er velkommen med et svar. Men, ikke forvent at admin i matematikk.net er spesielt aktive her.

Moderators: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa

Post Reply
Johan Nes
Fermat
Fermat
Posts: 705
Joined: 23/01-2012 12:56

Heisann,

Jeg sitter fast på en obligatorisk MATLAB oppgave. Ligger syk, så terskelen for å spørre om hjelp er ganske lav. Har søkt en del rundt på nettet og det slår meg hvor vanskelig det synes å skulle finne skjæringspunktet mellom to funksjoner?

I deloppgave a) plottet jeg funksjonene f(X) og g(x) i samme plott.

Deloppgave b) ber om å finne x slik at f(x) = 25 og g(x) = 25.

Jeg fikk til å plotte en horisontal linje for y=25 (var ikke enkelt å få til det heller) og tenkte å løse ved å finne krysningspunktet, men her har det stoppet opp. Har funnet noen forslag på nettet, men det er jo lang og tungvint kode.

Finnes det ikke en enkel måte å løse dette på? Tror IKKE jeg trenger om å løse det grafisk.

Et alternativ er jo å bare sette opp to separate likninger f(x)=25 og g(x)=25. Men jeg tenkte kanskje å plotte en tredje graf y=25 og finne hvor den skjærer funksjonene.

Noen tips? På forhånd takk! :)
Attachments
Oppgave2a2).png
Oppgave2a2).png (5.4 KiB) Viewed 4248 times
Nebuchadnezzar
Fibonacci
Fibonacci
Posts: 5648
Joined: 24/05-2009 14:16
Location: NTNU

f = @(x) x.^2;

fsolve(f-25) eller fzero(f-25)

Ellers er det jo langt mer fristende å bruke numeriske
tinærminger når det er snakk om matlab. Har ikke anledning til å fyre opp matlab, men
newton rhapson fungerer jo ypperlig.

Code: Select all

function [x1,Error,i] = Newton(f,x0,Max,err)

format long
G  = inline(char(f)); 
Y  = char(diff(f));
Gx = inline(Y);

for i = 1:Max    
   x1 = x0 - G(x0)/Gx(x0);
Error = abs(x0 - x1);
    if Error < err 
%        fprintf('\nIterasjonen konvergerte til ønsket presisjon\n');
        return
    else
    x0 = x1;
    end
end
% fprintf('\nIterasjonen konvergerte ikke til ønsket presisjon\n');
Merk at du må først definere $x$ som en variabel. Eg skrive "sym x"
også blir input noe alla

Code: Select all

 Newton(x.^2 - 25,0,100,eps)
"Å vite hva man ikke vet er og en slags allvitenhet" - Piet Hein
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
Johan Nes
Fermat
Fermat
Posts: 705
Joined: 23/01-2012 12:56

Hey. Takk for svar. :)

Det er sikkert fordi jeg ikke kan MATLAB eller programmering forøvrig, men jeg synes det virker litt komplisert?

Hva om jeg definerer funksjonen som en likning, [tex]f(x)=25[/tex] og løser den direkte?

Code: Select all

>> eqn = (12.*atan(20.*e))./(sqrt(e+0.001)) == 25; % Definerer likningen f(e)=25
>> solve(eqn,e) % Løser likningen f(e)=25 med hensyn på variabelen e
ans =
0.012203373719175651297552376465562
Vil ikke dette bli rett også?
Nebuchadnezzar
Fibonacci
Fibonacci
Posts: 5648
Joined: 24/05-2009 14:16
Location: NTNU

Joda, er bare ikke jeg som husker syntaksen rett i hodet. Ofte er det mer naturlig
å definere funksjonen først, og deretter bruke den til å lage graf og finne nullpunkt. Da slipper
en å definere funksjonen flere ganger =)
"Å vite hva man ikke vet er og en slags allvitenhet" - Piet Hein
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
Johan Nes
Fermat
Fermat
Posts: 705
Joined: 23/01-2012 12:56

Takker, N. :)

Vi er egentlig ferdig med pensum i MATLAB. Tipper jeg kan 70% av det som forventes å kunne og det er ikke sånn veldig mye egentlig.

Men, jeg vet ikke om jeg er helt fornøyd med leksjonene eller tilnærmingen mattelæreren har til å lære oss MATLAB. I tillegg har jeg lyst å bli langt bedre i MATLAB enn hva som forventes i dette faget og lyst å fortsette å utvikle meg videre her på egenhånd ved siden av.

Har du eller andre som leser noen tips til ressurser, (bøker, nett, e.l.,) som er gode for å lære seg MATLAB?

Jeg har en bok jeg har begynt på og som jeg trolig kommer til å fortsette med, men jeg har litt følelsen av at den heller ikke er helt optimal. Den er nesten litt for grundig, noe som fører til at man ikke helt greier å sette det i en sammenheng, men i stedet lærer en hel bråte med funksjoner og kommandoer (som man kanskje ikke har bruk for).
Nebuchadnezzar
Fibonacci
Fibonacci
Posts: 5648
Joined: 24/05-2009 14:16
Location: NTNU

Jeg satt igjenn med samme følelse som deg egentlig. Det som har hjulpet meg var egentlig bare å sette meg ned å lage
egne programmer og funksjoner. Løse faktiske problemer jeg støter på innen matematikk og fysikk ved hjelp av matlab.

Stod jeg fast visste jeg at jeg alltid kunne snu meg mot forumet her, eller stack.exchange / internett.

Ellers er matlab ypperlig pånumeriske beregninger og analyse av matriser, så anbefaler og å lære seg python/java eller
ett annet lavere nivå språk (om matlab kan kalles ett språk).

Ellers kan prosjekt euler fint nevner =)
"Å vite hva man ikke vet er og en slags allvitenhet" - Piet Hein
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
Johan Nes
Fermat
Fermat
Posts: 705
Joined: 23/01-2012 12:56

Takker, N. Får vel bare fortsette å jobbe med det. :)

Nå viser det seg at vi skal ha en bok som heter "Matematikk for Ingeniører - med numeriske beregninger" ettersom Kalkulus aldri ble ferdig fra forlaget i tide. Ser ut som denne har en god del programmering integrert, så jeg får sikkert litt øving der. :)
Post Reply