meu72
?>

Составить программу для вычисления корня нелинейного уравнения по методу касательных х^2-cos(x^2)=6

Информатика

Ответы

moisalexx7
Для метода касательных (он же - метод Ньютона) надо задать начальное приближение и получить выражение для производной функции.
f(x)=x^2-\cos(x^2)-6; \\ f'(x)=2x+2x\sin(x^2)=2x(1+\sin(x^2))
Рекуррентная формула в методе Ньютона имеет следующий вид:
\displaystyle x_{n+1}=x_n- \frac{f(x_n)}{f'(x_n)}
Для нашей конкретной задачи можно записать:
\displaystyle x_{n+1}=x_n- \frac{x_n^2-\cos{x_n^2}-6}{2x_n(1+\sin{x_n^2})}
А еще надо задать погрешность решения, которую определим так:
\displaystyle |f(x_{n+1})|\leq \varepsilon

 function f(x:real):real;
begin
  f:=sqr(x)-cos(sqr(x))-6
end;

function fn1(x:real):real;
begin
  fn1:=x-(sqr(x)-cos(sqr(x))-6)/(2*x*(1+sin(sqr(x))))
end;

var
  xn,xn1,y,eps:real;
begin
  Writeln('Введите начальное приближение для корня: ');
  Read(xn);
  Writeln('Введите значение погрешности для решения: ');
  Read(eps);
  xn1:=xn; y:=f(xn);
  while abs(y)>eps do
    begin xn1:=fn1(xn); y:=f(xn1); xn:=xn1 end;
  Writeln('x=',xn1,' f(x)=',y)
end.

Тестовое решение:
Введите начальное приближение для корня:
-3
Введите значение погрешности для решения:
0.00001
x=-2.61645602631473 f(x)=1.28691349221555E-06
Kochinev4
Идея алгоритма заключается в том, что для проверки корректности строки мы заводим стек, содержащий в себе открывающие скобки.
Посмотрим конкретно на вашем примере:)
1+5+(321-54*[321-321]+21)
Мы идём слева-направо, откидывая все символы, не являющиеся скобками, поскольку они нас не интересуют (как это было указано в вашем условии, почему я это и уточнял)
Затем, натыкаясь на открывающую скобку, добавляем её в стек.
В нашем стеке: "("
Идём дальше, находим открывающую квадратную скобку, кладём в стек
В нашем стеке: "(["
Дальше видим закрывающую квадратную скобку, т.к. у нас последняя добавленная скобка - [, значит, она закрываёт её.
В нашем стеке: "("
Аналогично с круглой скобкой, в итоге в нашем стеке не остаётся ничего, строка корректна:)
В остальных случаях:
Если программа наткнётся на закрывающую скобку, для которой не найдётся открытой в стеке, причём той же самой (для квадратной - квадратная, для круглой - круглая, для фигурной - фигурная) выходит, выражение некорректно, что мы и выводим в качестве ответа. Само собой, если после выполнения программы останутся незакрывшиеся скобки, значит, это выражение тоже является некорректным.
Я не мастер объяснять, но надеюсь, что мой разбор вам:)  Исходный код вложен в ответ.

Решите на паскаль плз 1. «строки» дано арифметическое выражение, требуется вывести его корректность.
vmnk38
Лови тут и шифратор и дешифратор 
Var X : Array [1..20, 1..20] Of integer; M, N  : Integer; //M - столбцы, N - строки i, j  : Integer; //i, j - параметры циклов p: integer;   Procedure vvod (var X: Array [1..20, 1..20] Of byte); begin For i := 1 To N Do For j := 1 To M Do Begin Write ('X[', i, ',', j, '] = '); ReadLn(X[i,j]); End; end; Procedure print (X: Array [1..20, 1..20] Of byte); begin for i :=1 to N do begin    for j :=1 to M do       write ( X [ i , j ]:4);    writeln ; end; end; Begin WriteLn ('Ввод элементов.'); Write ('Число строк: '); ReadLn (N); Write ('Число столбцов: '); ReadLn (M); WriteLn ('Введите поочередно элементы матрицы:'); vvod(X); print(x); ReadLn; End.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Составить программу для вычисления корня нелинейного уравнения по методу касательных х^2-cos(x^2)=6
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

kotovayaanastasia2069
missimeri
firsova5911
EVLAMPIN56
kirillboytsov403
Linichuk
motor2218
martabunova
sadkofamily61
Fateevsa9
amarantmetall
геннадиевна2001
Vyacheslavovich-Gubanov
Виталий887
rynaodal