Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 29.05.2008, 14:03   #1
file
Пользователь
 
Регистрация: 29.05.2008
Сообщений: 25
Репутация: 10
По умолчанию Вычисление полинома

Помогите решить задачу.

Вычисление значения полинома и всех его возможных производных.
Полином вида y=a(0)+a(1)x+a(2)x(в степени 2)...
По формуле Горнера:

y=a(0)+x(a(1)+x(a(2)+x(a(3)+...+x(a (n-2)+x(a(n-1)+a(n)x))...))).

Заранее спасибо!

Последний раз редактировалось file; 29.05.2008 в 15:40.
file вне форума   Ответить с цитированием
Старый 29.05.2008, 14:32   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,841
Репутация: 6850
По умолчанию

Тут наверное рекурсией делать нужно. Смекаешь? Наработки есть?
или что такое x( - функция или просто умножение на скобочку?
Stilet вне форума   Ответить с цитированием
Старый 29.05.2008, 15:45   #3
file
Пользователь
 
Регистрация: 29.05.2008
Сообщений: 25
Репутация: 10
По умолчанию

x( - это просто умножение.
Я так понимаю, что в начале должно задаваться a, x, n. Но как, не зная n записать формулу, по которой будит вычисляться полином?
file вне форума   Ответить с цитированием
Старый 29.05.2008, 15:52   #4
Necrom
Пользователь
 
Регистрация: 08.11.2007
Сообщений: 14
Репутация: 10
По умолчанию

Вычисления полинома лагранжа при известных коэффициентах и ра считывание в заданных точках. правда на С++
Код:
#include<iostream>
#include<conio.h>
#include<locale.h>
#include<math.h>
using namespace std;
#define size 20

float L,p;

double lagrange (int k,double *x,double *y,double *px)
{
	int i,j;

	L=0;
	for(i=0;i<k;i++)
	{
		p=1;
		for(j=0;j<k;j++)
		{
			if(i==j);
			else
				p*=(*px-x[j])/(x[i]-x[j]);
		}
		p*=y[i];
		return L+=p;
	}
}

void main()

{
	int k;

	setlocale( LC_CTYPE, "Russian" );
	
	double massivres[ ] ={ 8.865, -7.149, 0.894, 2.616, 0.895, 28.45, -30.16};
	double massivb[ ] ={-1,-0.96,-0.860,-0.79,0.22,0.5,0.93};
	double px [] = {-0.92, -0.88, -0.78, -0.71, 0.3, 0.58, 1.01};
	double result [size];
	for (k=0;k<7;k++)
	{
		result[k]=lagrange(6,&massivb[k],&massivres[k],&px[k]);
		cout << result[k] << endl;
	}
}
Necrom вне форума   Ответить с цитированием
Старый 29.05.2008, 17:42   #5
file
Пользователь
 
Регистрация: 29.05.2008
Сообщений: 25
Репутация: 10
По умолчанию

Не знаю C++. Объясни алгоритм?
file вне форума   Ответить с цитированием
Старый 29.05.2008, 21:00   #6
_Dmitry
Профессионал
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
Репутация: 776
По умолчанию

Схема Горнера была несколько раз, пользуйтесь поиском
Код:
y:=a[n];   
for i:=n-1 downto 0 do   
  y:=a[i]+y*x;
_Dmitry вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разработка программы построения графика интерполяционного полинома KORT Помощь студентам 4 07.11.2011 19:41
Вычисление постфиксного выр-я на С++ Go6a Помощь студентам 12 20.04.2008 13:34
Вычисление интреграла Kiedis Помощь студентам 19 23.05.2007 19:41
Вычисление Exp Mickle Общие вопросы Delphi 1 26.04.2007 09:34
TDBGrid. Вычисление Nic-x БД в Delphi 8 17.04.2007 08:19


23:00.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.