Показано с 1 по 2 из 2
-
17.08.2007, 11:29 #1
- Регистрация
- 24.11.2006
- Сообщений
- 3
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Осуществление функции Root из MathCad в Delphi
Кто-нить знает как можно осуществить функцию Root из MathCad в Дельфи или что-то похожее?
У меня есть текст Маскадовоской программы но мне нужно всё это перевести на Дельфи. Когда начал писать столкнулся с такой проблемой есть уравнение которое как я понял по Хелпу решается методом секущей Мюллера. Уравнение с двумя аргументами. Я нашел несколько исходников вроде тех которые надо но только на языке СИ 3.0 по ДОС, начал их переводить и получилось так что там есть цикл For k=0 .. to .. и получилось что k во время выполнения цикла в расчётах не участвует. Я опять зашел в тупик. нашел еще несколько опять же н СИ и вообще не чего не понял если что на всякий случай пример скачанного мной кода.
//************************************************** *
#include <conio.h>
#include <iostream.h>
#include <math.h>
double f(double x)
{
return exp(x)+2*x;
}
double findRootMuller(double x0,
double h,
double eps,
long max_step,
double (&f)(double))
{
double x1 = x0+h, x2 = x0+2*h, xn;
double f_x0 = f(x0), f_x1 = f(x1), f_x2 = f(x2), f_xn;
for(long k=0; k<max_step; k++)
{
double q = (x0-x1)/(x1-x2);
double a = q*f_x0-q*(1+q)*f_x1+q*q*f_x2;
double b = (2*q+1)*f_x0-(1+q)*(1+q)*f_x1+q*q*f_x2;
double c = (1+q)*f_x0;
double d = sqrt(b*b-4*a*c);
double z = (fabs(b+d)>fabs(b-d))?(b+d):(b-d);
xn = x0-(x0-x1)*2*c/z;
f_xn = f(xn);
if(fabs(f_xn)<eps)
{
break;
}
x2 = x1; f_x2 = f_x1;
x1 = x0; f_x1 = f_x0;
x0 = xn; f_x0 = f_xn;
}
return xn;
}
void main()
{
clrscr();
cout.precision(6);
cout.setf(ios::fixed|ios::showpoint);
double x = findRootMuller(-2,1,.0000001,10000,f);
cout<<"x = "<<x<<endl;
cout<<"f(x) = "<<f(x)<<endl;
getch();
}
За ранее спасибо, за помощь! Однако я точно не уверен что это то что мне нужно если у кого есть мысль плиз.... поделитесь....
-
27.12.2007, 19:02 #2
- Регистрация
- 27.12.2007
- Сообщений
- 3
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Поищи в гугле проги "C2PAS" или "H2PAS" (вторая входит в инструментарий Lazarus) - они сделают 80% перевода на паскаль, останется косметика
Похожие темы
-
Пожалуйста, подскажите.... Delphi
от NITRON в разделе Прикладное программированиеОтветов: 5Последнее сообщение: 18.01.2008, 02:56
Социальные закладки