krikol Skrevet 23. oktober 2013 Del Skrevet 23. oktober 2013 Hei, er det noen som har en "lettere"/annen måte å skrive dette skriptet på? %exp(2*x^2-3*sqrt(x)); n=0; a=input('Nedregrenseintervall: '); b=input('øvregrenseintervall: '); %a=0 %b=0.5 %n=n+1 while b-a> 0.00001 c=(a+b)/2; n=n+1; fa=exp(2*a^2)-3*sqrt(a); fc=exp(2*c^2)-3*sqrt(c); if or(and(fa>0,fc<0),and(fa<0,fc>0)); b=c; else a=c; end end Lenke til kommentar
Nebuchadnezzar Skrevet 23. oktober 2013 Del Skrevet 23. oktober 2013 Husk og skriv syms x i matlabvinduet først function [c,i,iFlag,E] = Biject( f,a,b,M,Err) % f - er en funksjon, husk og skrive syms x først. % a - og b er to tall som initialverdier % M - er maksimalt antall iterasjoner koden kjører. % Err - er den feilen en maksimalt ønsker å få % Som output er det flere ting en kan få ut % c - er nullpunktet ditt, % i - er antall kjørte iterasjoner % iFlag - er om iterasjonen konvergerte til ønsket presisjon % E - er hvilken feil en oppnådde % ================================ % Eksempel: % x0 = Biject(x^3-x+1,-1,1,10,10^(-5)) % ================================ f = inline(char(f)); iFlag = 1; if f(a)*f(b) <= 0 for i = 1:M E = abs(a-b); c = (a+b)/2; if E < Err return elseif f(c)*f(b) > 0 b = c; elseif f(c)*f(b) < 0 a = c; end end iFlag = 0; else iFlag = 0; fprintf('\nStartverdiene du valgte ligger på samme side av nullpunktet\n') fprintf('Velg nye startverdier.\n\n') end Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå