Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
nhr
Новичок
1 / 1 / 0
Регистрация: 08.09.2011
Сообщений: 31
22.09.2011, 16:11     метод хорд
  #1
Помогите добить задачу по матлабу, методом хорд!!
вот код, где тут ошибки??
Код Code
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
еще совсем недавно попытался поменять условия выхода, но все-равно что-то не так! количество итерации неизменно!!
Код Code
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
AdAgent
Объявления
22.09.2011, 16:11
xARAx
Новичок
16 / 16 / 2
Регистрация: 08.05.2011
Сообщений: 28
22.09.2011, 19:36
  #2
А у какой функции ноль ищите? Просто я тут ввел свою функцию f1(x) и у меня k меняется и корень вычисляется точно, хотя в методе не разбирался. Посмотрел первый листинг.
nhr
Новичок
1 / 1 / 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;

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

Код C
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
Вроде тот метод, что и требовался. И вроде работает.
nhr
Новичок
1 / 1 / 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
Код Code
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
nhr
Новичок
1 / 1 / 0
Регистрация: 08.09.2011
Сообщений: 31
26.09.2011, 19:21  [ТС]     метод хорд
  #6
НУ почему???
Сказали, что за x0 выбран отрезок не правильно, он должен выбираться исходя из теоремы.
Итого: теорему реализовал, а программа НЕ РАБОТАЕТ.
Помогите, пожалуйста!

Код Code
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 минут
Все работает, все правильно!
никто не придерется

Код Code
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
Yandex
Объявления
26.09.2011, 19:21
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Matlab метод хорд
Уравнение: (sin*(sqrt(x))-(cos*(sqrt(x))+2*(sqrt(x)).Промежуток.Внешний вид типо токого... clc; clear all; a = 0.0; b = 0.2; epsilon = 0.0001; x(k) = a; k = 1; while kmax <=100 & k = k + 1...
Matlab V1PeRR 05.06.2014 21:19
C++ Метод деления отрезка попалам, метод хорд, метод простых итераций 3^x-3*x=5
#include <stdio.h> #include <conio.h> #include <math.h> // функция для вычисления f(х) float f(float x) { return pow(3,x)-3*x-5;//возвращаемое значение }
С++ для начинающих BogRatiON 04.04.2014 19:32
Matlab Метод Хорд и Метод Ньютона
Добрый день. Помогите,пожалуйста, найти ошибку. Моя функция sqrt(x^3-2*x^2+1) , e=0.001; её корни 1 5^(1/2)/2 + 1/2 1/2 - 5^(1/2)/2 Написал код для...
Matlab recovery20101 31.12.2013 18:28
Delphi нелинейные уравнения (метод хорд, метод касательных, метод половинного деления)
Ребят помогите пожалуйста. Задали тему курсовой "Решение нелинейных уравнений (метод хорд, метод касательных, метод половинного деления)". Напишите хотя бы код программы в Borland Delphi 7 .
Delphi для начинающих fasstwar 01.06.2013 15:41
Matlab Метод хорд
разработать подпрограмму для решения нелинейного уравнения методом хорд Добавлено через 5 часов 29 минут ап\\\\\
Matlab ThisIsLucker 07.02.2013 17:30
Matlab метод хорд
Доброго времени суток! Прошу Вас, посмотрите пожалуйста мой код, реализующий метод хорд. Дело все в том, что у меня не работает счетчик(k) и если сравнивать с методом половинного деления, то и еще...
Matlab nhr 15.09.2011 18:10
Delphi Сравнение эффективности различных методов решения нелинейных уравнений. Метод последовательных приближений и метод хорд.
Вот такое у меня задание, которое я никак не осилю... Сравнение эффективности различных методов решения нелинейных уравнений. Метод последовательных приближений и метод хорд. Исходные данные к...
Delphi Z1P 04.03.2011 18:49
Опции темы

Текущее время: 12:09. Часовой пояс GMT +4.

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