MATLAB potrzebna pomoc

0

Witam! Otóż mam do przygotowania projekt w programie MATLAB. Projket polega na przygotowaniu dwóch metod obliczania miejsc zerowych. Na ten moment mam wykonaną metodę bisekcji. Lecz nie wiem jak przygotować pod to meina by było to wszytko na zasadzie menu, czyli program pyta o metodę później prosi o wpisanie funkcji oraz przedziału. Na ten moment umieściłem to w jednym skrypcie i wygląda to tak:


```x = menu('Podaj metode' , 'bisekcja','newtona');
switch x
    case 1
format long
clc

f1 = input('Podaj wzor funkcji ', 's')
f = inline(f1);

a=input('Podaj poczatek przedzialu: ');
b=input('Podaj koniec przedzialu: ');

s=a+(b/2);
eps=0.000001;
i=0;

w1=f(a);
w2=f(b);

    while (abs(a-b))>eps
        s=(a+b)/2
        ws=f(s);
        if w1*ws<0
            b=s
        else
            a=s
        end
    w1=f(a);
    w2=f(b);
    i=i+1;
    end
    otherwise
        disp('sadasd')
end ```
Jeśli ktoś mógłby mi podpowiedzieć na jakiej zasadzie buduje się meina lub stwierdzić czy tak napisane w jednym skrycpie może być to byłbym wdzięczny;)
0

Ale sformatuj kod tak jak ma być bo nikt tego nie przeczyta

0

W Matlabie, poza skryptami, możesz też tworzyć funkcje jako osobne pliki. Przy czym musisz pamiętać, że plik .m funkcji musi mieć taką samą nazwę, jak nazwa tej funkcji w kodzie: https://www.mathworks.com/help/matlab/ref/function.html

Twoje zadanie możesz rozbić na w sumie 3 pliki: funkcję dla jednej metody, funkcję dla drugiej metody i główny skrypt. W plikach z funkcjami będziesz miał kody do wyliczenia tych miejsc zerowych, a w głównym skrypcie zostanie Ci tylko ten switch, który uruchomi daną funkcję w zależności od tego, co wybrał użytkownik.

0

Czyli tak to ma wyglądać?
1 plik bisekcja

function [] = bisekcjaFunkcja( a,b,fx )
format long
clc

f1 = input('Podaj wzor funkcji ', 's')
f = inline(f1);

a=input('Podaj poczatek przedzialu: ');
b=input('Podaj koniec przedzialu: ');

s=a+(b/2);
eps=0.000001;
i=0;

w1=f(a);
w2=f(b);

    while (abs(a-b))>eps
        s=(a+b)/2
        ws=f(s);
        if w1*ws<0
            b=s
        else
            a=s
        end
    w1=f(a);
    w2=f(b);
    i=i+1;
    end

2 plik 2 metoda
iii main i w meinie tak?

function [ output_args ] = main( input_args )

x = menu('Podaj metode' , 'bisekcja','newtona');
switch x
    case 1
        disp('Rozwiązanie metodą bisekcji ');   
        bisekcjaFunkcja( a,b,fx );
    otherwise 2
        disp('Rozwiazanie 2 metoda');
        
end

1 użytkowników online, w tym zalogowanych: 0, gości: 1