Witam.
Moim zadaniem jest napisać funkcję znajdującą pierwiastki równań liniowych np:\(\displaystyle{ sin(x)}\) z przedziału \(\displaystyle{ <-1,2>}\) używając metody siecznych czyli Eulera z dokładnością \(\displaystyle{ e=1e-4}\) i maksymalną ilością iteracji 100. Efektem ma być wykres funkcji w podanym przedziale wraz z zaznaczonym miejscem zerowym, znalezionym pierwiastkiem oraz liczbą iteracji, jaka była potrzebna do znalezienia.
Tak oto wygląda mój kod:
Problem polega na tym, iż przy próbach uruchomienia, pojawiają mi się błędy odnośnie np linii 4, 10 itp. Niestety nie mam pojęcia co dalej zrobić.
[MatLab] Metoda siecznych
-
- Użytkownik
- Posty: 2
- Rejestracja: 15 gru 2015, o 12:35
- Płeć: Mężczyzna
- Lokalizacja: Polska
[MatLab] Metoda siecznych
No skąd program ma wiedzieć, że f jest funkcją? Musisz napisać podprogram, który definiuje Ci f
-
- Użytkownik
- Posty: 2
- Rejestracja: 15 gru 2015, o 12:35
- Płeć: Mężczyzna
- Lokalizacja: Polska
[MatLab] Metoda siecznych
No to też bez problemu powinieneś umieć napisać taki skrypt , który ciąg znaków Ci zamienia na funkcję (interpretuje jako funkcję zmiennej x)
- jarzabek89
- Użytkownik
- Posty: 1337
- Rejestracja: 11 lis 2007, o 21:36
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 4 razy
- Pomógł: 181 razy
[MatLab] Metoda siecznych
Nie patrząc na to jak wywołasz funkcję, to algorytm jest nie do końca poprawny.
Po pierwsze:
To nie ma najmniejszego sensu.
Nie tutaj powinieneś zerować, ale rozumiem idee, ale to i tak powoduje inny błąd
Program będzie "krążył" wokół jednego miejsca zerowego, a Ty potraktujesz to jako kilka miejsc zerowych.
Powinno się raczej przed odpaleniem metody siecznych sprawdzić ile jest miejsc zerowych. Zrobić malutki kroczek i sprawdzać znak iloczynu.
Po pierwsze:
Kod: Zaznacz cały
t = 0;
t=t+1;
Nie tutaj powinieneś zerować, ale rozumiem idee, ale to i tak powoduje inny błąd
Kod: Zaznacz cały
x(i+1)=x(i)-((f(i)/f(i)-f(i-1))*(f(i)-f(i-1)));
if (abs(f(i)) < eps) || (i == 100)
Powinno się raczej przed odpaleniem metody siecznych sprawdzić ile jest miejsc zerowych. Zrobić malutki kroczek i sprawdzać znak iloczynu.