Задание 2: Вычислить корень функции методом хорд

Функция:

Задание 2: Вычислить корень функции методом хорд - student2.ru

Ввод x,y, epsilon  
abs(y-x)>epsilon  
Начало  
z=x-(y-x)*f(x)/(f(y)-f(x)), x=y, y=z  
Вывод результата Z    
конец

// Hords.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <math.h>

#include <stdio.h>

double f (double x);

FILE *tabfun1;

int main(void)

{

double a,b,c,eps;

printf("enter a,b,eps \n");

scanf("%le%le%le",&a,&b,&eps);

while (abs(a-b)>eps)

{c=a-(b-a)*f(a)/(f(b)-f(a));

b=a; a=c; }

printf("koren6 = %15.5le",c);

tabfun1=fopen("a1.dat","w");

fprintf(tabfun1,"%15.5le %15.5le\n",'a=',a,' b=',b,' ','eps=',eps);

fclose(tabfun1);

scanf("%le", &a);

return 0;

}

double f (double x)

{return pow(pow(exp(x)+exp(-x),0.5)+pow(exp(2*x)+exp(-2*x),0.5),1/exp(x))/(sin(x)+cos(2*x)+exp(pow(x*x+x,0.5)))-0.75;}

}

Вывод: При вычислении корня методом хорд на промежутке между 0 и 2 получено значение 2.1

Задание 2: Вычислить корень функции методом хорд - student2.ru

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

Задание 1: Вычислить корень функции:

f=((sqrt(exp(x)+exp(x))+sqrt(exp(2.*x)+exp(2.*x)).^(1/exp(x)))/sin(x)+cos(2.*x)+exp(sqrt(x.^(2)+x)))-0.75

Программный код:

function MethodHord

a=0

b=2

eps=1.*10^(-6)

while ( (b-a)>eps)

c=(a+b)./2;

d=func(a).*func(c);

if (d>0) a=c;

else b=c;

end

end

x=(a+b)./2;

x

end

function f = func(x);

f=((sqrt(exp(x)+exp(x))+sqrt(exp(2.*x)+exp(-2.*x)).^(1/exp(x)))/sin(x)+cos(2.*x)+exp(sqrt(x.^(2)+x)))-0.75;

end

Результат:

a =

b =

eps =

1.0000e-006

x =

2.0000

Наши рекомендации