Метод хорд (метод линейной интерполяции)

Форум, посвященный общим вопросам, связанным с MATLAB

Модераторы: Krasnopeev, Komarov, sladmin

Метод хорд (метод линейной интерполяции)

Сообщение Vadimka » Пн янв 25, 2010 1:31 pm

Реализую Метод хорд (метод линейной интерполяции)
текст программы
clc
clear
x1=-pi/4;
x2=pi/6;
e=0.001;
while abs(x2-x1)>e
x1=x2;
x2=x2-((myfunc4(x2)/(myfunc4(x2)-myfunc4(x1))/(x2-x1)));
end

u=fzero(@(x) sin(3*x)*cos(2*x)-0.2,[-pi/4;pi/6])

ее функция
function [ f ] = myfunc4( x )
%UNTITLED1 Summary of this function goes here
% Detailed explanation goes here
f=sin(3*x)*cos(2*x)-0.2;

end
формула x2=x2-((myfunc4(x2)/(myfunc4(x2)-myfunc4(x1))/(x2-x1))); преврашаеться в 0, как ето исправить? как сохранить пердыдушие значение так чтобы в етой формуле оно не выдавало 0? :roll:
Vadimka
Пользователь
 
Сообщений: 5
Зарегистрирован: Пн янв 18, 2010 1:07 pm

Re: Метод хорд (метод линейной интерполяции)

Сообщение mik_cher » Вт янв 26, 2010 8:50 am

Vadimka писал(а):Реализую Метод хорд (метод линейной интерполяции)
текст программы
clc
clear
x1=-pi/4;
x2=pi/6;
e=0.001;
while abs(x2-x1)>e
x1=x2;
x2=x2-((myfunc4(x2)/(myfunc4(x2)-myfunc4(x1))/(x2-x1)));
end

u=fzero(@(x) sin(3*x)*cos(2*x)-0.2,[-pi/4;pi/6])

ее функция
function [ f ] = myfunc4( x )

%UNTITLED1 Summary of this function goes here
% Detailed explanation goes here
f=sin(3*x)*cos(2*x)-0.2;

end
формула x2=x2-((myfunc4(x2)/(myfunc4(x2)-myfunc4(x1))/(x2-x1))); преврашаеться в 0, как ето исправить? как сохранить пердыдушие значение так чтобы в етой формуле оно не выдавало 0? :roll:




странный какой то у вас метод хорд - где у вас происходит уменьшение интервала на котором ищете корень ?

по-моему вот так как то должно быть

function my_hord
clc;
clear all;
x1=-pi/4;
x2=pi/6;
e = 1e-3;
while abs(x2-x1)>e
x0 = x1 - myfunc4(x1)*(x2-x1)/( myfunc4(x2)- myfunc4(x1));
if myfunc4(x0)*myfunc4(x1)>0, x1 = x0; else x2 = x0; end
end

u=fzero(@myfunc4,[-pi/4;pi/6])
x0

function [ f ] = myfunc4( x )
%UNTITLED1 Summary of this function goes here
% Detailed explanation goes here
f=sin(3*x)*cos(2*x)-0.2;
mik_cher
Пользователь
 
Сообщений: 159
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение Vadimka » Вт янв 26, 2010 9:14 am

Спасибо все работает +1 :)
Vadimka
Пользователь
 
Сообщений: 5
Зарегистрирован: Пн янв 18, 2010 1:07 pm

Re: Метод хорд (метод линейной интерполяции)

Сообщение amandra » Вт янв 26, 2010 9:21 am

mik_cher писал(а):странный какой то у вас метод хорд

да не метод странные, а не верно его реализовал, горе студент)) как пол года сделать не может))))
http://elib.ispu.ru/library/math/sem1/kiselev1/node84.html
Вадим, дело в том, что задаются две точки приближения, по ним вычисляется третья тд
у вас же вычисляется по двум точкам, что изначально не верно
Донесем чистоту до трудно доступных мест - ни дня без туалетной бумаги
amandra
Пользователь
 
Сообщений: 573
Зарегистрирован: Вт мар 28, 2006 4:29 pm

Сообщение Vadimka » Вт янв 26, 2010 3:20 pm

if myfunc4(x0)*myfunc4(x1)>0, x1 = x0; else x2 = x0;
что нам дает ет условие?, а то как полгода 1 лабу не могу сдать :(
Vadimka
Пользователь
 
Сообщений: 5
Зарегистрирован: Пн янв 18, 2010 1:07 pm

Сообщение amandra » Вт янв 26, 2010 3:56 pm

Vadimka писал(а):if myfunc4(x0)*myfunc4(x1)>0, x1 = x0; else x2 = x0;
что нам дает ет условие?, а то как полгода 1 лабу не могу сдать :(

форумчане, не отвечайте ему, пожалуйста))))))))
пусть сам думает))
Донесем чистоту до трудно доступных мест - ни дня без туалетной бумаги
amandra
Пользователь
 
Сообщений: 573
Зарегистрирован: Вт мар 28, 2006 4:29 pm

Сообщение Jey » Вт янв 26, 2010 4:09 pm

Vadimka писал(а):а то как полгода 1 лабу не могу сдать :(

Лентяй и разгильдяй - это печально. В армию еще не забирают?
Помогаю с решением задач в Matlab'e за материальное вознаграждение.
Также Qt Creator, SCADA системы АСУТП.
ICQ: 291942126, Skype: shaman-myaso
Интернет магазин салатников, менажниц в Москве: http://skladovaya.com
Jey
Пользователь
 
Сообщений: 2510
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Сообщение amandra » Вт янв 26, 2010 4:34 pm

Jey писал(а):
Vadimka писал(а):а то как полгода 1 лабу не могу сдать :(

Лентяй и разгильдяй - это печально. В армию еще не забирают?

давно пора))
Вадим, сходите в армию, годик всего)))
Донесем чистоту до трудно доступных мест - ни дня без туалетной бумаги
amandra
Пользователь
 
Сообщений: 573
Зарегистрирован: Вт мар 28, 2006 4:29 pm

Сообщение mik_cher » Вт янв 26, 2010 6:03 pm

[quote="Vadimka"]if myfunc4(x0)*myfunc4(x1)>0, x1 = x0; else x2 = x0;
что нам дает ет условие?, а то как полгода 1 лабу не могу сдать :([/quoteJnrh


Вы любой учебник по Выч методам откройте и прочитайте про этот метод - а то так и не сдадите лабу никогда !

условие - это проверка на наличие корня внутри интервала
mik_cher
Пользователь
 
Сообщений: 159
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение amandra » Вт янв 26, 2010 6:05 pm

mik_cher писал(а):Вы любой учебник по Выч методам откройте

если бы...даже погуглить не хочет....о чем вообще разговор

короче, Вадим, переводитесь, а то со мной еще встретитесь как минимум на трех предметах на 3 и 5 курсах :D :D, а есть еще страшные фамилии как Щетинин, Михеев, Рыбаков))) решайтесь!
Донесем чистоту до трудно доступных мест - ни дня без туалетной бумаги
amandra
Пользователь
 
Сообщений: 573
Зарегистрирован: Вт мар 28, 2006 4:29 pm

Сообщение Vadimka » Вт янв 26, 2010 6:35 pm

хм гугл не всегда выручает....... и при том делал по методичке высшей математике, а там неправильно записанно условие, я не такой гений как вы=)
Vadimka
Пользователь
 
Сообщений: 5
Зарегистрирован: Пн янв 18, 2010 1:07 pm

Сообщение amandra » Вт янв 26, 2010 6:38 pm

а облизывать меня не нужно.....для выполнения достаточного материала у вас на руках
Донесем чистоту до трудно доступных мест - ни дня без туалетной бумаги
amandra
Пользователь
 
Сообщений: 573
Зарегистрирован: Вт мар 28, 2006 4:29 pm


Вернуться в Общие вопросы по MATLAB/Программирование в MATLAB

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 1