MATLAB potrzebna pomoc

Odpowiedz Nowy wątek
2017-03-21 15:32
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;)
edytowany 4x, ostatnio: piogeb, 2017-03-21 16:08

Pozostało 580 znaków

2017-03-21 15:48
0

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


01010100 01110101 01110100 01100001 01101010 00100000 01101110 01101001 01100101 00100000 01101101 01100001 00100000 01101110 01101001 01100011 00100000 01100011 01101001 01100101 01101011 01100001 01110111 01100101 01100111 01101111 00101110 00100000 01001001 01100011 00100000 01110011 01110100 01101111 01101110 01110100 00101110

Pozostało 580 znaków

2017-03-21 16:30
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.


もう誰かのためじゃなくて
自分のために笑っていいよ

Pozostało 580 znaków

2017-03-21 17:55
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
"Projket polega na przygotowaniu dwóch metod obliczania miejsc zerowych. Na ten moment mam wykonaną metodę bisekcji." - czyli z tego co rozumiem, to w drugiej funkcji ma być kod na wyliczenie miejsc zerowych tą drugą metodą. Switcha to umieścisz w głównym skrypcie, jak już tę metodę napiszesz i ją wywołasz w case 2. - Ursu 2017-03-21 19:51
a gdzie sprawdzenie warunków dla bisekcji? "Aby można było zastosować metodę równego podziału, muszą być spełnione założenia: funkcja {\textstyle f(x)} {\textstyle f(x)} jest ciągła w przedziale domkniętym {\textstyle [a;b]} {\textstyle [a;b]} funkcja przyjmuje różne znaki na końcach przedziału: {\textstyle f(a)f(b)<0} {\textstyle f(a)f(b)<0}" - EraeRa 2017-03-25 18:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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