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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 14:43   #1
Кэмерон
 
Аватар для Кэмерон
 
Регистрация: 10.03.2009
Сообщений: 8
Восклицание Метод послед. приближений. Pascal

Привет, ребята, очень нужна ваша помощь )))
Задача не получается, сижу уже который час(((

Мне нужно вычислить значение X равного корню N-ой степени из A, для A=0.45, 12, 32, 144 и N=2,3,4,5 методом последовательных приближений, и дали мне такую формулу X[k+1]=(N-1)/N*X[k]+A/(N*X[k] в степени (N-1)) Вычисления производить до |X[k+1]-X[k]|<=E, где E - заданная точность, равная 1E-3

Помогите пожалуйста, не могу понять где ошибка/ошибки у меня(((
Кэмерон вне форума Ответить с цитированием
Старый 24.05.2009, 14:44   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

в 34-й строчке исходного кода.. так сказали мне звезды
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 24.05.2009, 14:51   #3
Кэмерон
 
Аватар для Кэмерон
 
Регистрация: 10.03.2009
Сообщений: 8
По умолчанию

сорри(((
у меня прога в модуле только:

unit glavn;
interface
type
mas=array[1..10] of integer;
map=array[1..10] of real;
procedure made (var f1:text;var f2:text;var eps:real);
implementation
uses crt;
procedure made;
var
k,n,i,j,l,m:integer;a:map;b:mas;
x1,x0,x,xb:real;
begin
reset(f1); reset(f2);
i:=0;j:=0;
while not eof(f1) do
begin
inc(i);
read(f1,a[i]);
end;
while not eof(f2) do
begin
inc(j);
read(f2,b[j]);
end;


for l:=1 to i do
begin
for m:=1 to j do
begin
x0:=a[l]/b[m]; xb:=1;
for k:=1 to b[m]-1 do
xb:=xb*x0;
repeat
x1:=(b[m]-1)/b[m]*x0+a[l]/(b[m]*xb);x:=x0;
x0:=x1;
until abs(x1-x)<=eps;
write(x1:3:1);
end;
end;

end.

в f1 содержатся значения A
в f2 N

Последний раз редактировалось Кэмерон; 24.05.2009 в 15:08.
Кэмерон вне форума Ответить с цитированием
Старый 24.05.2009, 15:20   #4
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

смотри как у меня получилось
Код:
function pow(var base:real; n:integer):real;
var
	i:byte;
begin
	pow := 1;
	for i:=1 to n do
		pow := pow*base;
end;

function f(A,x:real;N:integer):real;
begin
	f := (N-1)/N*x + A/(N*pow(x,n-1));
end;

var
	x1,x2,A:real;
	Eps:real;
	n:integer;
	
begin
	Eps := 1E-3;
	A   := 0.45;
	n   := 2;
	x2  := -1000;
	repeat
		x1 := x2;
		x2 := f(A,x1,n);
		writeln(x1:5:3,x2:5:3);
	until (abs(x1-x2) <= Eps);
	writeln(f(A,x1,n));
end.
тут только для одного набора A, N... ну там разберешься.. просто общий принцип.. тут получается корень второй степени из A... только два корня будет вообще-говоря.. +/-...
у меня из-за начального приближения (-1000) выводится отрицательный корень.. можешь от него брать abs или оба выводить.. это будет правильно

P.S. ваш код не смотрел потому, что он оформлен ужасно.. лениво копаться во всем этом.. Я думаю вы переделаете без проблем то что я написал в модуль и с массивами (или как вам будет еще угодно)
Uguu~

Последний раз редактировалось __STDC__; 24.05.2009 в 15:32.
__STDC__ вне форума Ответить с цитированием
Старый 24.05.2009, 15:34   #5
Кэмерон
 
Аватар для Кэмерон
 
Регистрация: 10.03.2009
Сообщений: 8
По умолчанию

а что такое X2 и почему оно -1000 ?
Кэмерон вне форума Ответить с цитированием
Старый 24.05.2009, 15:36   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Кэмерон Посмотреть сообщение
а что такое X2 и почему оно -1000 ?
x2 это следующее приближение к корню, -1000 начальное значение, т.к. мы не знаем (ну якобы не знаем) на каком отрезке находится корень... хотя можно зная A выбрать более узкий отрезок.. учитывая что квадратный корень из A меньше 1, можно было бы начальным приближением взять -1...
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 24.05.2009, 15:38   #7
Кэмерон
 
Аватар для Кэмерон
 
Регистрация: 10.03.2009
Сообщений: 8
По умолчанию

спасибо огромное, буду пробовать)))
Кэмерон вне форума Ответить с цитированием
Старый 24.05.2009, 15:39   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Кэмерон Посмотреть сообщение
спасибо огромное, буду пробовать)))
пробуйте) будут вопросы - пишите =)
Uguu~
__STDC__ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода Delphi-Pascal! Метод Пауэлла bestlover Помощь студентам 3 21.12.2009 17:35
Pascal, метод Ньютона, вычисление корня ф-ии. Qousio Помощь студентам 2 02.05.2009 19:47
Метод прямого слияния. Pascal SeRhy Помощь студентам 1 04.03.2009 09:36