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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 17:25   #1
DuHbka
Новичок
Джуниор
 
Регистрация: 31.05.2009
Сообщений: 9
По умолчанию Метод простых итерации для нелинейных уравнений. Подскажите где ошибка

мне было задано разработать программы решение нелинейных уравнений методом простых итераций, у меня 3 уравнения есть с коэффициентами которые нада с клавы вводить... Программа работат но корни которые она находит мне кажется не правельные... подскажите пожалуйста где тут ошибка плиз. ( я сам думаю что у меня не правильная формула для нахождения корней -с(а*х+ в). помогите
текст программы:
Код:
program Rasskaz_iter;
uses CRT;
const E=0.0001;
var n:integer; x,a,b,c: real; ab:text; 
function f(x:real;k:integer):real;
begin
if k=1 then f:= -c/(a*x*x + b);
if k=2 then f:= c/(a*x*x*x - b);
if k=3 then f:= -c/(a*x - b);
end;
procedure mitercii(var X:real; t:integer);
var X1:real;
begin
repeat
X1:=X;
X:=f(X,t);
until abs(x-x1)<E;
end;
begin
clrscr;
writeln ('‘ введите коэффициенты’');
read (a);
read (b);
read (c);
writeln('Выберете уравнение');
writeln('1. aX^3 + bX + c = 0 ');
writeln('2. aX^4 - bX - c =0 ');
writeln('3. ax^2 – bx + c =0 ');
write('n = '); 
readln(n);
write('Введем начальное приближение X = ');
readln(X);
mitercii(X,n);
writeln('Корень уравнения X = ',X);
assign(ab,'Rasskazov_iter.TXT');
rewrite(ab);
writeln(ab,'Номер уравнения ',n);
writeln(ab,'Корень уравнения X =',x);
close(ab);
readln;
end.

Последний раз редактировалось MaTBeu; 01.06.2009 в 00:07.
DuHbka вне форума Ответить с цитированием
Старый 31.05.2009, 21:28   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Что значит кажется? В уравнение корни подставьте.. В коде разбираться невозможно, хоть бы в теги запихнули (такая кнопочка с решеткой)
Насколько я вижу, при коэффициентах 1 2 3 первое уравнение решает правильно... получается -0.99, а корень уравнения x^3+2x+3 это -1... вы погрешность задайте скажем 1.0E-17... и будет как раз -1..
Uguu~

Последний раз редактировалось __STDC__; 31.05.2009 в 21:34.
__STDC__ вне форума Ответить с цитированием
Старый 31.05.2009, 21:35   #3
DuHbka
Новичок
Джуниор
 
Регистрация: 31.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
Что значит кажется? В уравнение корни подставьте.. В коде разбираться невозможно, хоть бы в теги запихнули (такая кнопочка с решеткой)
Насколько я вижу, при коэффициентах 1 2 3 первое уравнение решает правильно... получается -0.99, а корень уравнения x^3+2x+3 это -1...
а если ввести другие коэффициенты он решать его не будет, мне интересно какие коэффициенты можно вводить а какие нет, тесть области их определний... если не трудно... или у меня все таки не правильная формула(
DuHbka вне форума Ответить с цитированием
Старый 31.05.2009, 21:38   #4
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

ну какие например, другие? Между прочим, итерационные методы не являются безусловно сходящимися...
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 31.05.2009, 21:50   #5
DuHbka
Новичок
Джуниор
 
Регистрация: 31.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
ну какие например, другие? Между прочим, итерационные методы не являются безусловно сходящимися...
ввожу рандомно 3 9 7 для 1ого уравнения корень -6.7. он не является корнем если его подставить... (((
для 3его ввожу 4 10 1 корень выдает 1.04 но он тоже не подходит(((
мне кто то говорил там зависимость какая то должна быть типо а+б больше с или а+с больше бблин... попадалово.. незнаю чо делать
DuHbka вне форума Ответить с цитированием
Старый 31.05.2009, 21:51   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от DuHbka Посмотреть сообщение
ввожу рандомно 3 9 7 для 1ого уравнения корень -6.7. он не является корнем если его подставить... (((
для 3его ввожу 4 10 1 корень выдает 1.04 но он тоже не подходит(((
мне кто то говорил там зависимость какая то должна быть типо а+б больше с или а+с больше бблин... попадалово.. незнаю чо делать
вы не совсем правы.. не -6.7, а -0.67, что как раз является корнем (в пределах погрешности). Если вы не знакомы с E-формой записи, предлагаю оформить вывод результата как
Код:
writeln('Корень уравнения X = ',X:0:3);
Также советую в конце программы вычислить ф-цию f подставив значение полученное.. тогда можно убедить препода, что прога работает как надо (когда у вас в выводе будет число порядка погрешности)
Uguu~

Последний раз редактировалось __STDC__; 31.05.2009 в 21:55.
__STDC__ вне форума Ответить с цитированием
Старый 31.05.2009, 21:54   #7
DuHbka
Новичок
Джуниор
 
Регистрация: 31.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
вы не совсем правы.. не -6.7, а -0.67, что как раз является корнем (в пределах погрешности). Если вы не знакомы с E-формой записи, предлагаю оформить вывод результата как
Код:
writeln(ab,'Корень уравнения X =',x:0:3);
блииин а у меня выводиться -6.7519... и тд а не как у вас -0.67
DuHbka вне форума Ответить с цитированием
Старый 31.05.2009, 21:55   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от DuHbka Посмотреть сообщение
блииин а у меня выводиться -6.7519... и тд а не как у вас -0.67
выше исправьте.. не где вывод в файл, я просто ошибся, не ту строку скопировал.. в своем посте исправил уже
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 31.05.2009, 21:59   #9
DuHbka
Новичок
Джуниор
 
Регистрация: 31.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
выше исправьте.. не где вывод в файл, я просто ошибся, не ту строку скопировал.. в своем посте исправил уже
ой спасибо вам большое вот где ошибка, а значит можно вводить любые коэффициенты сама программа расчет а меня правильно сделана?
DuHbka вне форума Ответить с цитированием
Старый 31.05.2009, 22:01   #10
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от DuHbka Посмотреть сообщение
ой спасибо вам большое вот где ошибка, а значит можно вводить любые коэффициенты сама программа расчет а меня правильно сделана?
это не ошибка.. просто программа выводила данные в E-формате... с плавающей точкой.. Повторюсь, итерационные методы не всегда сходятся.. насколько я проверял - все верно... Так что думаю переживать не стоит) Но проверочку добавить было бы здорово
Uguu~
__STDC__ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста очень нужно решение задачки Satenka Microsoft Office Excel 4 28.05.2014 21:57
помогите закончить решение задачи. gilex Помощь студентам 1 28.12.2008 21:36
решение задачи Claster Общие вопросы Delphi 17 16.09.2008 21:08
Решение задачи на Си kisha Общие вопросы C/C++ 9 19.11.2007 23:31
решение задачи TuNeR Microsoft Office Excel 2 15.10.2007 09:31