Форум программистов, компьютерный форум, киберфорум
Наши страницы

Matlab

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.96
nhr
2 / 2 / 0
Регистрация: 08.09.2011
Сообщений: 31
#1

метод хорд - Matlab

22.09.2011, 16:11. Просмотров 7223. Ответов 5
Метки нет (Все метки)

Помогите добить задачу по матлабу, методом хорд!!
вот код, где тут ошибки??
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
function[a,k,f1_a]=xrd(a,b,eps); 
k=0; 
while( abs(b-a)>eps) 
   c=a-f1(a)*(b-a)/(f1(b)-f1(a));  
    k=k+1; 
    if(f1(a)*f1(c)<0) 
        b=c; 
    else a=c; 
    end 
end 
f1_a=f1(a) 
end
еще совсем недавно попытался поменять условия выхода, но все-равно что-то не так! количество итерации неизменно!!
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function[a,k,f1_a]=xrd(a,b,eps)
%clear all;
k=0;
stop=1;
while stop==1
        k=k+1;
   c=a-f1(a)*(b-a)/(f1(b)-f1(a));
      x0=c;
   if abs(x0-c)<=eps
       stop=0;
   else stop=1;
    end
end
f1_a=f1(a)
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2011, 16:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос метод хорд (Matlab):

Метод Хорд и Метод Ньютона - Matlab
Добрый день. Помогите,пожалуйста, найти ошибку. Моя функция sqrt(x^3-2*x^2+1) , e=0.001; её корни ...

метод хорд - Matlab
Уравнение: (sin*(sqrt(x))-(cos*(sqrt(x))+2*(sqrt(x)).Промежуток.Внешний вид типо токого... clc; clear all; a = 0.0; b = 0.2; ...

метод хорд (matlab) - Matlab
Решить уравнение методом хорд в Matlab. уравнение: 3*exp(-5x)*sin(7x+0.1)-1 интервал собственно,с алгоритмом я разобрался но не могу...

Метод хорд и касательных (комбинированный) - Matlab
Добрый день. Столкнулся с такой проблемой: выводится только один график на сетке. Исходник во вложении.

Метод хорд (ошибка в программе) - Matlab
Здравствуйте. Помогите, пожалуйста, найти ошибку в программе: function mh clc; clear; m=2; f=@(x) sqrt((x-m)^3); a=-100; ...

метод хорд и касательных (комбинированный) mathlab - Matlab
метод хорд и касательных (комбинированный) mathlab пожалуйста,помогите,посмотрите что не так clc; clear; function =f(x) ...

5
xARAx
18 / 18 / 2
Регистрация: 08.05.2011
Сообщений: 28
22.09.2011, 19:36 #2
А у какой функции ноль ищите? Просто я тут ввел свою функцию f1(x) и у меня k меняется и корень вычисляется точно, хотя в методе не разбирался. Посмотрел первый листинг.
0
nhr
2 / 2 / 0
Регистрация: 08.09.2011
Сообщений: 31
22.09.2011, 20:25  [ТС] #3
y=7.5046*x.^4 +11.0866*x.^3 +3.8239*x.^2 +0.442*x -0.4797;
y=x-sin(x)-0.25;

вот эти!
Не можете написать, количество итерации этих ф-ий, может у меня что-то с программой
0
xARAx
18 / 18 / 2
Регистрация: 08.05.2011
Сообщений: 28
22.09.2011, 21:17 #4
В общем с этими функциями программа действительно плохо работала. Я написал программу, но осовываясь на
этой информации про метод хорд

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function f
 
[a,k,f1_a]=xrd(0,2,0.1)
 
 
 
%строим график
ii=1:1:100;
x=ii*0.04;
for i=[ii]
    f1_plot(ш)=f1(x(i));
end
plot(x,f1_plot)
%строим график
 
 
 
function[x1,k,f1_a]=xrd(a,b,eps); 
k=0; 
x0=a;%край отрезка
x1=b;
x2=(b-a)/2;% в начале в центре отрезка
while( abs(x2-x1)>eps) 
    x0=x1;
    x1=x2;
    x2=x1-f1(x1)*(x1-x0)/(f1(x1)-f1(x0)); 
    
    k=k+1; 
    k;
    
end 
f1_a=f1(x2);
end
 
function f=f1(x)
       f=7.5046*x^4 +11.0866*x^3 +3.8239*x^2 +0.442*x-0.4797; 
end
end
Вроде тот метод, что и требовался. И вроде работает.
1
nhr
2 / 2 / 0
Регистрация: 08.09.2011
Сообщений: 31
22.09.2011, 23:04  [ТС] #5
видишь, в чем мои сомнения, что при этом методе ответ правильный, fzero подсказал(: но вот итерации, разве может такое быть, что они идут по очереди, т.е. точность 1е-5: k=9
1e-9: k=10
1e-11:k=11

я еще во как придумал, но там все-равно 1е-5: k=4
1e-9: k=5
1e-11:k=6
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
function[a,k,f1_a]=xrd2(a,b,eps)
k=0; 
while( abs(a-b)>eps)
    x1=f1(a);
    x2=f1(b);
   c=b-x2*(b-a)/(x2-x1);
   a=b;
    k=k+1; 
    b=c; 
end  
    f1_a=f(b)
end
0
nhr
2 / 2 / 0
Регистрация: 08.09.2011
Сообщений: 31
26.09.2011, 19:21  [ТС] #6
НУ почему???
Сказали, что за x0 выбран отрезок не правильно, он должен выбираться исходя из теоремы.
Итого: теорему реализовал, а программа НЕ РАБОТАЕТ.
Помогите, пожалуйста!
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function[x2,k,f1_a]=xrd(a,b,eps)
k=0;
x1=b;
%x2=(b-a)/2;% в начале в центре отрезка
if(abs(pr1(a))>abs(pr1(b)))
    M=abs(pr1(a));%максимум первой производной
    m=abs(pr1(b));%минимум первой производной
else
    m=abs(pr1(a));
    M=abs(pr1(b));
end
if(f1(a)*pr2(a)<0)% pr2 вторая производная
    x0=a;
else x0=b;
    
    del=5;
while(del>(eps)*(M-m)/M) 
    x2=x1-f1(x1)*(x1-x0)/(f1(x1)-f1(x0)); 
    del=abs(x1-x0);
    x0=x2;
    k=k+1; 
end    
end 
f1_a=f1(x2);
end
Добавлено через 1 час 0 минут
Все работает, все правильно!
никто не придерется
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function[x1,k,f1_a]=xrd(a,b,eps)
k=0;
x1=b;
x2=(b-a)/2;% в начале в центре отрезка
if(abs(pr1(a))>abs(pr1(b)))
    M=abs(pr1(a));
    m=abs(pr1(b));
else
    m=abs(pr1(a));
    M=abs(pr1(b));
end
 
if(f1(a)*pr2(a)<0)
    x0=a;
else x0=b;
end
 
while(abs(x2-x1)>=(eps)*(M-m)/M)
    %x0=x1;
    x1=x2;
    x2=x1-f1(x1)*(x1-x0)/(f1(x1)-f1(x0));
    k=k+1;
end
f1_a=f1(x2);
end
0
26.09.2011, 19:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2011, 19:21
Привет! Вот еще темы с ответами:

Вычисление корней с заданной точностью (метод хорд) - Matlab
возникают сложности с написанием кода в матлабе, чтобы получилось тоже что и в маткад не подскажете как должно быть?

Решение уравнения методом хорд - Matlab
sqrt(x)-tgx(1-x)=0 помогите очень надо

Решить уравнение методом хорд. - Matlab
Решить уравнение методом хорд в Matlab. уравнение: x^4-18*x-10=0 Вроде как код верный написал, но не отображает результат &quot;с&quot;. Если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.