一道c#编程题!帮我一下
x*x*x*-3sin(x)-1=0 在0到1之间的解,精确到小数点5位 !
谢谢
------解决方案--------------------以下为matlab的一个.m文件,可以利用C#内部的matlab引擎进行调用执行。
此函数要稍加改动,元函数用于计算z = c * sqrt(1- y.*y/b/b - x.*x/a/a),可改为
x-3y-1=Z,其中a = 1 b = -3 c =-1这个函数的基本原理是利用二分法逼近求值。
至于C#内调用matlab文件可参考帮助内的源码。
function BendArea(a,b,c,N)
a = input( 'a = ');
b = input( 'b = ');
c = input( 'c = ');
N = input( '绘图精度: ');
xgrid = linspace(-abs(a), abs(a), N);
ygrid = linspace(-abs(b), abs(b), N);
[x,y] = meshgrid(xgrid, ygrid);
z = c * sqrt(1- y.*y/b/b - x.*x/a/a);
u = 1;
z1 = real(z);
for k = 2 : N - 1
for j = 2 : N - 1
if imag(z(k , j)) ~=0
z1(k,j) = 0;
end
if all(imag(z([k-1,k+1],[j-1,j+1]))) ~=0
z1(k,j) = NaN;
end
end
end
surf(x,y,z1);
hold on;
if u == 1
z2 = -z1;
surf(x,y,z2);
axis([-abs(a),abs(a),-abs(b),abs(b),-abs(c),abs(c)]);
end
xlabel( 'x ');
ylabel( 'y ');
zlabel( 'z ');
title( '曲面输出 ');
hold off;
------解决方案--------------------能用MATLAB很昂贵啊,MATLAB本身就大,然后还需要将MATLAB,的算法封装成NET程序集,本身还需要用M语言,(特别灵活,而且动态定义)呵呵