Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function y=func(x)
- y = exp(x) - log(x) - 20;
- endfunction
- function phi=f1(x)
- phi = log(log(x) + 20);
- endfunction
- function dphi=f2(x)
- dphi = 1 ./ (x .* (log(x) + 20));
- endfunction
- function [ans, an, bn]=hdm(a, b)
- flag = 1;
- while (flag)
- c = (a + b) ./ 2;
- if (0 == func(c)) then
- ans = c;
- f = 0;
- an=a;
- bn=b;
- else
- if (func(a) .* func(c) < 0) then
- b = c;
- else
- a = c;
- end
- if (abs(b - a) < 0.01) then
- ans = (a + b) ./ 2;
- flag = 0;
- an=a;
- bn=b;
- end
- end
- end
- endfunction
- x = 3.0:0.1:3.2;
- y = func(x);
- plot(x, y);
- //локалізація кореня методом половинного ділення
- [ans,an,bn]=hdm(3.0,3.2);
- //локалізація лівої межі
- a=an;
- //локалізація правої межі
- b=bn;
- //локалізація кореня
- xp=ans;
- x = [a: 0.001: b];
- q = max(abs(f2(x)));
- r = ((1 - q) ./ q) .* 0.0000001;
- i = 1;
- f = 1;
- while ((i < 50) & (1 == f))
- i = i + 1;
- xn = f1(xp);
- if (abs(xn - xp) < r) then
- ans2 = xn;
- f = 0;
- else
- xp = xn;
- end
- end
- //уточнення кореня методом ітерацій
- x0=ans2;
- printf("Відповідь - %f\n", x0);
- //точність обчислень
- eps=r;
- //знаходження кореня за допомогою вбудованої функції
- printf("Вбудованою функцією - %f", fsolve(1.0, func));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement