Мегаобучалка Главная | О нас | Обратная связь


Нахождение корня в Mathcad



2015-12-04 777 Обсуждений (0)
Нахождение корня в Mathcad 0.00 из 5.00 0 оценок




Лабораторная работа №1

Решение нелинейных уравнений

 

Вариант №7

 

Задание:

1. Построить график функции f(x).Отделить все корни, лежащие на данном отрезке.

2. Вычислить наибольший из корней методами, указанными в варианте. Точность . Программа должна быть универсальной. Методы оформить в виде отдельных подпрограмм, содержащих проверку условий сходимости метода. Метод, начальное приближение задавать как параметр, вводимый с клавиатуры. Вычислить корень при различных значениях . Вывод на консоль: метод, , номер итерации - k, , .

3. Сравнить число необходимых итераций в обоих методах, указать преимущества и недостатки методов. Сделать выводы.

4. Графически проиллюстрировать сходимость методов для своего уравнения.

5. Вычислить наибольший из корней в MathCAD.

 

Ход работы

 

 

 

 

 
 
 
 
 

 

Из графика видно, что первый корень находится на отрезке [-2;-1], второй на отрезке [1;3], а третий- [3;5]. Наибольший корень лежит на отрезке [3;5].

 

 

Составим программу для вычисления наибольшего из корней данного уравнения:

 

Текст программы:

 

 

#include <stdio.h>

#include <math.h>

#include<conio.h>

double a,b;

int metod;

int i;

double k,fn,f1,f2,x,xn,xk,fn2;

void newton(double a,double b)

{

int i;

x=b;

k=1;

printf("Xo=%f\n", x);

for (i=1; k>=0.0001; i++)

{

fn=pow(x,3)-5*x*x+12;

f1=3*x*x-10*x;

f2=6*x-10;

xn=x-(fn/f1);//формула итераций

k=abs(x-xn);

if(k>0.0001)

{x=xn;}

printf ("k=%d Xk=%.10f Ek=%.10f \n",i,xn,k);

if (i>30)

{

printf ("----------ERROR------------\n");

printf ("RESTRICTION OF NUMBER OF ITERATIONS\n"); //ОГРАНИЧЕНИЕ ЧИСЛА ИТЕРАЦИЙ

break;

}

printf ("x*=%.10f\n", xn);

}

}

void vegstein(double a,double b)

{

int i;

x=b;

printf("Xo=%f\n", x);

k=1;

fn= pow(x,3)-5*x*x+12;

f1=3*x*x-10*x;

f2=6*x-10;

fn2= pow(xn,3)-5*xn*xn+12;

xn=x-(fn/f1);//формула итераций

printf("X1=%f\n", xn);

k=x-xn;

if (k<0)

{

k*=-1;

}

 

for (i=1; k>= 0.0001; i++)

{

fn= pow(x,3)-5*x*x+12;

f1=3*x*x-10*x;

f2=6*x-10;

fn2= pow(xn,3)-5*xn*xn+12;

if (i>30)

{

printf ("----------ERROR------------\n");

printf ("RESTRICTION OF NUMBER OF ITERATIONS\n"); //ОГРАНИЧЕНИЕ ЧИСЛА ИТЕРАЦИЙ

break;

}

xk=xn-(fn2*(xn-x)/(fn2-fn));//формула итераций

k=xk-xn;

if (k<0)

{

k*=-1;

}

x=xn;

xn=xk;

printf ("k=%d Xk=%.10f Ek=%.10f \n",i,xk,k);

}

printf ("x*=%.10f\n", xk);

}

int main()

{

a=-2;

b=5;

while(1)

{

printf ("\n\n");

printf ("Choose action:\n");

printf ("1-Newton's method\n");

printf ("2-Vegsteyn's method\n");

printf ("3-exit\n");

scanf("%d",&metod);

switch(metod)

{

case 1: newton(a,b);

break;

case 2: vegstein(a,b);

break;

case 3: return 0; break;

defoult: printf("the method is absent");

break;

 

} }

getch();

}

 

 

Результат работы программы:

Нахождение корня в Mathcad

 

 
 

 

 

 

 

Метод Ньютона и Вегстейна практически не отличаются ,единственное отличие в том что производная в методе Вегстейна заменена на

,

Метод Вегстейна является двухшаговым , то есть необходимо знать два предыдущих приближения, что неудобно. Метод Ньютона чувствителен к выбору начального приближения.

 

 

Графически проиллюстрируем сходимость метода Ньютона:

Графически проиллюстрируем сходимость метода Вегстейна:

Условие сходимости метода предполагают сохранение знаков f’(x),f”(x) на промежутке [a; b].

 

Вывод:

В данной работе нашла корень уравнения двумя итерационными методами: Ньютона и Вегстейна. Метод Ньютона одношаговый , поэтому является более приемлемым по сравнению с методом Вегстейна.



2015-12-04 777 Обсуждений (0)
Нахождение корня в Mathcad 0.00 из 5.00 0 оценок









Обсуждение в статье: Нахождение корня в Mathcad

Обсуждений еще не было, будьте первым... ↓↓↓

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

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (777)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)