我想问一下有效的算法。 例子我有等式:
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 = ...
答案 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',或者使用简化编写代码的库。