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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2014, 20:48   #11
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
По умолчанию

program MyGaus;
uses
crt;
const
nmax = 5; {кол-во уравнений}
type
t_matrix = array[1..nmax,1..nmax] of real;
t_answer = array[1..nmax] of real;

var
i,j,k,c,count :byte;
arr :t_matrix;
ans,b,x0 :t_answer;
tmp,tmp1,tmp2,E :real;
function a11(x1:Real): Real; {Частная производная по Х первого уравнения системы}
begin
a11 := -1/(2 * cos(x1) * sin(x1));
end;
function a21(x1:Real): Real; {Частная производная по Х второго уравнения системы}
begin
a21 := 200 * x1;
end;
function p1(x1,y1:Real): Real; {Вектор правой части для первого уравнения системы}
begin
p1 := sin(x1)/cos(x1) - y1;
end;
function P2(x1,y1:Real): Real; {Вектор правой части для второго уравнения системы}
begin
p2 := 100 * x1 * x1 - y1 - 10;
end;
begin
clrscr;
E := 0.0000001;
k:= 2; {кол-во уравнений в системе }
writeln('Vvedite priblizjenie ');
for i:=1 to k do begin
write('x',i,' = ');
read(x0[i]);
end;
count :=0;
repeat
count :=count+1;
tmp1 := x0[1];
tmp2 := x0[2];
x0[1] := ans[1] + tmp1;
x0[2] := ans[2] + tmp2;

b[1] := p1(x0[1],x0[2]);
b[2] := p2(x0[1],x0[2]);
arr[1,1] := a11(x0[1]);
arr[2,1] := a21(x0[2]);
arr[1,2] := -1;
arr[2,2] := -1;

for i:=1 to k-1 do begin
for j:=i+1 to k do begin
tmp:= arr[i,i]/arr[j,i];
for c:=i to k do begin
arr[j,c] := arr[j,c] * tmp - arr[i,c];
end;
b[j] := b[j] * tmp - b[i];
end;
end;
ans[j]:=b[j]/arr[j,j];
{Oбратный ход - поиск корней}
for i:=k-1 downto 1 do begin
tmp:=b[i];
for j:=i+1 to k do begin
tmp:= tmp - ans[j] * arr[i,j];
end;
ans[i]:= tmp/arr[i,i];
end;
until (abs(x0[1] - tmp1) < E);
writeln('count = ',count);
for i:=1 to k do writeln('X',i,' = ',ans[i]);
readkey;
end.
Ангелина А вне форума Ответить с цитированием
Старый 03.06.2014, 20:48   #12
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
По умолчанию

Правильно?
Ангелина А вне форума Ответить с цитированием
Старый 03.06.2014, 20:49   #13
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
Печаль

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Интервал и точность есть в задаче?
Правильное решение? =)
Ангелина А вне форума Ответить с цитированием
Старый 03.06.2014, 21:08   #14
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
По умолчанию

или меня обманули)

Ангелина А вне форума Ответить с цитированием
Старый 03.06.2014, 21:08   #15
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Ангелина, где вы взяли этот код?
Код:
E := 0.0000001;
Вот это разве не точность.... ?
Сформулируйте точно ваше задание и все условия....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 03.06.2014, 21:10   #16
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
Радость

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Ангелина, где вы взяли этот код?
Код:
E := 0.0000001;
Вот это разве не точность.... ?
Сформулируйте точно ваше задание и все условия....
Необходимо на Турбо Паскаль решить нелинейные уравнения методом касательных
3х(4 степень)+8х(3 степень)+6х(2 степень)-10=0. Метод Ньютона
интервалы и точность отсутствуют
Ангелина А вне форума Ответить с цитированием
Старый 03.06.2014, 21:12   #17
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Ангелина, где вы взяли этот код?
Код:
E := 0.0000001;
Вот это разве не точность.... ?
Сформулируйте точно ваше задание и все условия....
это помог друг но правильно ли это он сам не до конца уверен (гаус)
Ангелина А вне форума Ответить с цитированием
Старый 03.06.2014, 21:38   #18
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от Ангелина А Посмотреть сообщение
Метод Ньютона


Цитата:
Сообщение от Ангелина А Посмотреть сообщение
program MyGaus;
Как тонко )
Son Of Pain вне форума Ответить с цитированием
Старый 03.06.2014, 21:47   #19
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Ангелина А проверяйте, возможно опечатка или не точности...
Нашел этот метод, немного подработал.... и вот ОНО
По крайней мере я так понял это задание....
Код:
uses crt;

function f(x : real) : real; {  Исходная функция  }
begin
  f := 3 * (exp (4 * ln(x))) + 8 * (exp (3 * ln(x))) + 6 * (exp (2 * ln(x))) - 10;
end;

function f1(x : real) : real; { Первая производная функции  }
begin
  f1 := 12 * (exp (3 * ln(x))) + 24 * (exp (2 * ln(x))) + 12 * x;
end;

var 
  a, b :      real;
  x, e, en :  real;
  i :         integer;

begin
  writeln;
  writeln(' Уравнение 3x^4 + 8x^3 - 6x^2 - 10 = 0');
  writeln(' -------------------------------------');
  writeln;
  write(' Введите левую границу интервала: ');
  readln(a);
  write(' Введите правую границу интервала: ');
  readln(b);
  write(' Введите требуемую точность решения (например 0.001): ');
  readln(e);
  
  writeln;
  writeln(' Решение:');
  writeln(' --------');
 
  en := abs(a - b);
  x := b;
  i := 1;
  
  while(abs(en) > e) do         { Пока не достигнута точность }
  begin 
    x := x - f(x)/f1(x);        { выполнить шаг метода }
    writeln(' Шаг ', i : 2, ' | X = ', x : 1:3); { вывести значение X с шага }
    en := abs(x - b);           { Новая точность }
    b := x;                     { Значение границы для следующего шага }
    i := (i + 1);               { Номер шага }
  end;
end.
Безымянный1.jpg
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 03.06.2014, 23:01   #20
Ангелина А
Новичок
Джуниор
 
Регистрация: 02.06.2014
Сообщений: 14
По умолчанию

Спаааасииииибооооооооооо!!!!!!!!!!! !!!!!!!!!!!! Доба тебе не лучик а много много! =)) и мои руки под заточку надо отдать, а вернее мозг)
Ангелина А вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Ньютона для решения нелинейных уравнений EugeneNK Помощь студентам 1 21.06.2013 10:50
Решение системы нелинейных уравнений методом Ньютона на Pascal spaike619 Помощь студентам 0 28.02.2012 00:33
Решение нелинейных уравнений методом Ньютона (касательных) Veina Помощь студентам 1 10.11.2010 18:29
Решение нелинейных уравнений матодом Ньютона Гудвин Помощь студентам 1 09.10.2009 12:02