IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите пожалуйста решить задачу аппроксимации
neo123
сообщение 14.08.2014 21:21
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Здравствуйте!
Помогите решить задачку.
Что то мой уже не молодой мозг, знакомый и с пасклем и с делфи и с численным моделированием, и с численными решениями дает сбои.
Чувствую что вопрос какой то у меня слишком примитивный.
Вообщем подскажите как сделать элементарную аппрокисацию. Линейную я так понимаю.
Вот есть массив а(1...8) численных значений (не целых, тип реал). Например 20, 100, 150.....
Ему соответствует массив b(1...8) численных значений (не целых, тип реал). 100, 200, 300.....
И допустим, мы вводим значение ai=40, и нужно методом аппрокимации определить, какое значение из массива b ему соответствует.
Т.е., в уме рассчитаем:
a3=(a1+a2)/2=(20+100)/2=60 ему соответсвует: b3=( b1+b2)/2 = 100+200 / 2 = 150
a4=(a1+a3)/2=(20+60)/2=40 ему соответсвует: b4=(b1+b3)/2 = 100+150 / 2 = 125.

Результат: ai=40 соответствует b4=125

Подскажите как запрограммировать, ну или хоть какой это численный метод....
Спасибо...

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
neo123
сообщение 21.08.2014 6:33
Сообщение #2





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Спасибо большое!!!
Только у меня какие то сомнения что это такой метод, поскольку мы имеем не функцию, а набор каких то чисел в диапазоне.
Вот данные:

const a: array[1..8] of integer =(250,230,224,223,197,173,167,164);
b: array[1..8] of integer = (460,435,460,505,510,520,480,450);
T: array[1..8] of integer = (20,100,150,200,250,300,350,375);

Например, нужно определить значение a и b для T=140.

Я что то голову уже сломал, не получается, вот код:

T1:=StrToInt(edit4.text); {T1=140}

for i:=2 to 8 do
begin
if T[i]<T1 then
begin
Tk:=RoundTo((T[i]+T[i+1])/2, 1);
ak:=RoundTo((a[i]+a[i+1])/2, 1);
bk:=RoundTo((b[i]+b[i+1])/2, 1);


Repeat
begin
if Tk<T1 then begin
Tk:=RoundTo((Tk+T[i+1])/2, 1);
ak:=RoundTo((ak+a[i+1])/2, 1);
bk:=RoundTo((bk+b[i+1])/2, 1);
end;
if Tk>T1 then begin
Tk:=RoundTo((Tk+T[i])/2, 1);
ak:=RoundTo((ak+a[i+1])/2, 1);
bk:=RoundTo((bk+b[i+1])/2, 1);
end;
end;
Until Tk=T1;
end;
end;

Подскажите пожалуйста, что не так...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.08.2025 4:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"