1 van 1

Matlab, vergelijkingen numeriek oplossen

Geplaatst: wo 12 okt 2011, 22:03
door VatoG
Hallo,

ik ben een beginnende matlab gebruiker.

Ik zou graag proberen volgende vergelijkingen numeriek op te lossen in matlab:
\(L_{4}=L_{1}*sin(\theta)+L_{2}*sin(\psi)+L_{1}*sin(\phi)L_{3}*sin(\phi)=L_{1}*sin(\theta)+L_{2}*sin(\psi)\)
hierbij gaat
\(\theta\)
van 15° tot 145°.

Ik dacht te verstaan dat je dit kan doen door:

1) vergelijking twee te nemen, een waarde voor
\(\phi\)
te kiezen, en daarbij de bijhorende waarden voor
\(\psi\)
te berekenen

2) dit herhalen voor vele verschillende waarden van
\(\phi\)
3) de verkregen resultaten in vergelijking één stoppen en ...

Is er iemand die mij hier een beetje kan bij helpen?

Om het doel wat te verduidelijken:

dit is de eigenlijke opdracht:

Afbeelding

Re: Matlab, vergelijkingen numeriek oplossen

Geplaatst: wo 12 okt 2011, 22:27
door Bart
Zoek eens in de matlab documentatie op fminsearch

Re: Matlab, vergelijkingen numeriek oplossen

Geplaatst: wo 12 okt 2011, 22:35
door Xenion
Kijk eens
Zoek eens in de matlab documentatie op fminsearch
Dat lijkt voor minimalisatieproblemen te zijn?

Re: Matlab, vergelijkingen numeriek oplossen

Geplaatst: do 13 okt 2011, 15:22
door VatoG
Xenion schreef:Kijk eens hier voor uitleg over fsolve. Example 1 onderaan de pagina maakt het misschien duidelijk.

Heb je iets van numerieke analyse gezien? De methode van Newton Rhapson is vrij eenvoudig zelf te programmeren.
Daar heb ik weinig kaas van gegeten ;)

Re: Matlab, vergelijkingen numeriek oplossen

Geplaatst: do 13 okt 2011, 17:18
door Xenion
Nu ik het zelf probeer in te geven zie ik dat je 2 vergelijkingen en 3 onbekenden hebt. Is er geen verband tussen die 3 hoeken dat je nog kan gebruiken?

Edit: ik zie dat teta een parameter is en geen onbekende, even kijken dan ;)

Re: Matlab, vergelijkingen numeriek oplossen

Geplaatst: do 13 okt 2011, 17:43
door Xenion
Naar analogie van example 1 op deze pagina:

Eerst herschrijf je het stelsel zodat er rechts steeds een 0 staat.

Dan schrijf je een functie die de matrix bij het stelsel kan berekenen.

Code: Selecteer alles

function F = myfun(x)

teta = pi/4;

F = [0.4 - 0.15*sin(teta) - 0.35*sin(x(1)*pi/180) - 0.15*sin(x(2)*pi/180);

0.35*sin(x(2)*pi/180) - 0.15*sin(teta) - 0.35*sin(x(1)*pi/180)

];

end
(Ik zoek de hoeken hier in graden omdat ik in radialen geen goeie waarden kreeg, te afhankelijk van de beginwaarde.)

Vervolgens geef je een beginwaarde x0 = [kies iets, kiest iets]; (0,0 ofzo).

En het antwoord kan je dan krijgen door

>> [x,fval] = fsolve(@myfun,x0)

In fval zie je dan de functiewaarde ervan, hoe dichter je bij de 0 zit, hoe beter je resultaat.

Nu wordt teta gedefinieerd in myfun, om het allemaal wat vlotjes te laten lopen kan je daar iets creatievers voor verzinnen zoals hier bijvoorbeeld. Het is 'lastig' dat fsolve de functie als function-handle (@) wil krijgen.