Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用泰勒级数进行adasin(x)计算_Ada_Trigonometry - Fatal编程技术网

用泰勒级数进行adasin(x)计算

用泰勒级数进行adasin(x)计算,ada,trigonometry,Ada,Trigonometry,我是Ada的绝对初学者,我正在尝试使用泰勒级数来计算sin(x)[sin(3)],但我就是无法让它工作 这是我的程序: with Ada.Float_Text_IO; with Mat; procedure SinKoz is X:Float:=3.0; Szamlalo:Float:=0.0; begin for I in 1..100 loop Szamlalo := Szamlalo + ((-1.0)**I)*(X**(2.0*I+1.0))/Ma

我是Ada的绝对初学者,我正在尝试使用泰勒级数来计算sin(x)[sin(3)],但我就是无法让它工作

这是我的程序:

with Ada.Float_Text_IO;
with Mat;
procedure SinKoz is
    X:Float:=3.0;
    Szamlalo:Float:=0.0;
begin
    for I in 1..100 loop
        Szamlalo := Szamlalo + ((-1.0)**I)*(X**(2.0*I+1.0))/Mat.Faktorialis(2*I+1);
    end loop;
    Ada.Float_Text_IO.Put( Szamlalo );
end SinKoz;
在Mat里面,这是我的Faktorialis,它计算2*I+1的阶乘:

function Faktorialis( N: Float ) return Float is
      Fakt : Float := 1.0;
begin
      for I in 1..N loop
         Fakt := Fakt * I;
      end loop;
      return Fakt;
end Faktorialis;
当我试图编译代码时,出现以下错误: 指数必须是自然类型,发现类型为“Standard.Float”


我希望你能帮助我找出我的类型出了什么问题

我一定很喜欢艾达的打字能力

我怀疑你的问题可能是这句话:

Szamlalo := Szamlalo + ((-1.0)**I)*(X**(2.0*I+1.0))/Mat.Faktorialis(2*I+1);

2.0*I+1.0
将返回浮点值。不是天生的。您可以尝试将其包装在
Integer()
Natural()
(Natural是Integer的子类型)中,看看是否有帮助。

第一个问题是:是否需要将X提升为非整数幂

在我看来,好像你没有:在这种情况下,用
X**(2.0*I+1.0)
替换
X**(2*I+1)
,一切都会好起来

但是如果你真的这样做了(也许不是在这里,而是在另一个应用程序中),你只需要让这样一个操作符可见:在包
Ada.Numerics.Elementary_函数
中有一个用于Float的操作符

with Ada.Numerics.Elementary_Functions;
use Ada.Numerics.Elementary_Functions;
它应该像写的那样工作。
最后,如果您已经创建了自己的浮点类型,您可以使用您的类型作为参数实例化泛型包
Ada.Numerics.generic\u Elementary\u函数
,以专门为您的类型创建一组这些函数。

这就是问题所在,谢谢!是啊,对我来说味道真的很浓。这个答案比我的好:)我离开Ada有一段时间了。谢谢,这是一个非常详细的答案!有时候知道几种方法来做这项工作是件好事。Ada是一个库存充足的工具箱,而不仅仅是一把锤子:-)