Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

Вычисление значения полинома и всех его возможных производных.
Полином вида 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,792
По умолчанию

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

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

Вычисления полинома лагранжа при известных коэффициентах и ра считывание в заданных точках. правда на С++
Код:
#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
По умолчанию

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разработка программы построения графика интерполяционного полинома 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