方程

时间:2016-03-08 17:12:06

标签: javascript c# algorithm

我想问一下有效的算法。 例子我有等式:

x = y + z;

如果变量y的值= 1,则变量z = 2,因此变量x为3

但如果变量x = 3且变量z = 2且该等式如何自动获得y的值?没有创建新的等式y = x - z

我希望可以使用C#或javascript获取示例代码。

另一个例子,如果等式是

a = (((x + y - z)/2)*10)^4

方程式来自程序,用户提交3个变量的值。 用户提交变量(x,y,z)或(y,z,a)或(z,a,x)或(a,x,y)

如果用户输入var x,y和z的值,程序可以用该等式显示a的值。没有创建一个= ...

如果var y,z和a的用户输入值,程序可以用该等式显示x的值。没有create x = ...

如果var z,a和x的用户输入值,程序可以用该等式显示y的值。没有创建y = ...

如果var a,x和y的用户输入值,程序可以用该等式显示z的值。没有创建z = ...

6 个答案:

答案 0 :(得分:1)

您正在寻找的是一个方程求解器'。这是非常重要的,对此有相当多的研究,一些着名的大型数学软件就是这样做的。

有关详情,请参阅谷歌计算机代数算法'。

答案 1 :(得分:0)

你必须解决关于未知变量的等式:

x = y + z;

相当于

y = x - z;

z = x - y;

对于第二个等式,它更难。如果< 0将没有解决方案。否则你可以先取第4根:

a = (((x + y - z)/2)*10)^4   <=>  sqrt(sqrt(a)) = +/- (x + y + z) * 5

然后根据x,y或z解决它。请注意,您将获得一般的两种解决方案。

有些程序和库可以自动执行这些计算:检查“符号数学”或“计算机代数系统”。

答案 2 :(得分:0)

我对你提出的问题进行了深入的数学研究,你可以在google上搜索关于维基百科链接的equation algorithm solve

是的,如果你有一个简单的工作流程,一些基本的算法来找到一个变量

让我们假设这个环境;   因为总会有三个变量,你可以确认三个中只有一个是null,然后选择你想要找到的变量的等式,如果non为null,那么你发送一个没有值为null的消息

原始方程是x = y + z-a

x=5; y=7; z=2; a=null;

If (!x.hasValue ()){
 x= y + z - a;
} 
 ....
 Else if (!a.hasValue ()){
 a = -(x + y + a);
}Else{Console.Write("Don't give value to all variable");}

答案 3 :(得分:-1)

这不是它的工作原理。在编程语言中,你不是真的有方程而是分配。您可以为左侧的变量指定右侧值。

所以获得y的唯一方法是,当x和z运行时

y = x - z

编辑:您可能想要创建类似

的内容
myFunction(double? x=null, double? y=null, double? z=null, double? a=null)

然后在里面检查哪个变量为空(所以不使用),并相应地执行计算。你会像这样运行它

var something = myFunction(x: 1, y: 2, a: 3)

答案 4 :(得分:-1)

如果您不想编写新的代码行并获得“&#39; y&#39;当&#39; x&#39;在同一个等式中不等于零,试试这个......

// equation : x = y + z
var x=3,y=0,z=2;
x = ((x!=0) ? (x-z) : y ) + z;
console.log("Result : "+ x);

// or saving the value in 'y'
x = ((x!=0) ? y = (x-z) : y ) + z;
console.log("Result 2 : "+ x);

答案 5 :(得分:-2)

回答第一个问题:

Y = X - Z

是唯一可行的解​​决方案。没有其他方法来计算Y. 这是因为计算机不能解决方程式(或者更好,它们可以编程来解决它们,但只能使用'Y = X-Z'),它们可以改变变量的值。在这种情况下,我们将Y值设置为(X - Z)值。

回答第二个问题:

你可以解决这个等式

X = fourth square of (...)

或者您可以使用自己完成所有这些工作的库,例如'计算机代数系统'(也由@FrankPuffer引用)

当然:你可以解决执行逆运算的方程,比如'Y = X - Z',或者使用简化编写代码的库。

相关问题