【发布时间】:2015-01-06 02:01:24
【问题描述】:
好的,所以对于我的数学课,我们被要求编写一个程序来执行和打印牛顿的方法,直到值收敛并且我们有一个函数的根。起初我以为这很容易。直到我无法从第一次获得第二次使用的值。我的语言知识是基本的。真的很基本,所以你即将看到的可能并不漂亮。
#!usr/bin/perl
use PDL;
print "First guess? (this is x0)\n";
$xorig = <>;
do {
&fx;
} until ($fex == 0);
sub fx {
if ($xn == 0) {
$x = $xorig;
}
else {
$x = $xn;
}
print "What is the coefficient (for each factor) of your function?\n";
$fcx = <STDIN>;
push @coefficient_of_x, $fcx;
print "... times x to the (enter exponent, if no exponent, enter 1. if no x, enter 0)?\n";
$fex = <STDIN>;
push @exponent_x, $fex;
chomp ($fcx, $fex, $x, $xorig);
$factor = $fcx * ($x ** $fex);
push @fx, $factor;
}
my $fx = 0;
foreach my $variable (@fx) {
$fx = $variable + $fx #THIS PROVIDES A VALUE FOR THE GIVEN F(X) WITH A GIVEN X VALUE
}
print "f($x)=$fx\n";
do {
&fprimex;
} until ($fprimeex == 0);
sub fprimex {
if ($xn == 0) {
$x = $xorig;
}
else {
$x = $xn;
}
print "What is the coefficient (for each factor) of your derivative function?\n";
$fprimecx = <STDIN>;
push @coefficient_of_fpx, $fprimecx;
print "... times x to the (enter exponent, if no exponent, enter 1. if no x, enter 0)?\n";
$fprimeex = <STDIN>;
push @exponent_fpx, $fprimeex;
chomp ($fprimecx, $fprimeex, $x, $xorig);
$factorprime = $fprimecx * ($x ** $fprimeex);
push @fprimex, $factorprime;
}
$fprimex = 0;
foreach my $variableprime (@fprimex) {
$fprimex = $variableprime + $fprimex #THIS PROVIDES A VALUE FOR THE GIVEN F'(X) WITH THAT SAME X VALUE
}
print "f'($x)=$fprimex\n";
sub x0 {
$xn = $xorig - $fx / $fprimex; #THIS IS NEWTON'S METHOD EQUATION FOR THE FIRST TIME
push @newxn, $xn;
print "xn ia $xn\n";
}
&x0;
foreach $value (@exponent_x) {
$exponent_x = $xn ** $value;
push @part1, $exponent_x;
$part1 = @part1;
}
foreach $value2 (@coefficient_of_x) {
$part2 = $value2 * @part1;
push @final1, $part2;
}
print "@part1\n";
print "@final1\n";
基本上是什么,我首先要求第一个猜测。我使用这个值来定义 f(x) 的系数和指数,以根据给定的 x 获得 f(x) 的值。我为 f'(x) 再做一次。然后我第一次执行牛顿法并得到新值xn。但是我很难获得 f(xn) 和 f'(xn) 的值,这意味着我无法获得 x(n+1) 并且无法继续使用牛顿法。我需要帮助。
【问题讨论】:
标签: perl calculus newtons-method