Matlab, vergelijkingen numeriek oplossen

Moderators: jkien, Xilvo

Reageer
Berichten: 15

Matlab, vergelijkingen numeriek oplossen

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

Gebruikersavatar
Berichten: 7.224

Re: Matlab, vergelijkingen numeriek oplossen

Zoek eens in de matlab documentatie op fminsearch
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Gebruikersavatar
Berichten: 2.609

Re: Matlab, vergelijkingen numeriek oplossen

Kijk eens
Zoek eens in de matlab documentatie op fminsearch
Dat lijkt voor minimalisatieproblemen te zijn?

Berichten: 15

Re: Matlab, vergelijkingen numeriek oplossen

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 ;)

Gebruikersavatar
Berichten: 2.609

Re: Matlab, vergelijkingen numeriek oplossen

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 ;)

Gebruikersavatar
Berichten: 2.609

Re: Matlab, vergelijkingen numeriek oplossen

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.

Reageer