using MathNet.Symbolics;
using System;
using System.IO;
using System.Text;private string ConvertToLatex(string mathExpression)
{return mathExpression.Replace(" * ", "").Replace("*", "");
}// 將函數定義為字符串
string functionString = "10 * x^2";
// 將函數解析為符號表達式
SymbolicExpression function = SymbolicExpression.Parse(functionString);
// 關于x符號化的微分函數
SymbolicExpression derivative = function.Differentiate("x");
// 代入x = -1到微分函數
SymbolicExpression x = SymbolicExpression.Parse("x");
int value = -1;
SymbolicExpression val1 = SymbolicExpression.Parse(value.ToString());
SymbolicExpression result = derivative.Substitute(x, val1);
string latexExpr0 = ConvertToLatex(functionString);
string latexExpr1 = ConvertToLatex(derivative.ToString());
// 將求解結果函數和值寫入Tex文件
string filePath = "derivative_value.tex"; // 文件路徑
StringBuilder sb = new StringBuilder(500);string latexHead = @"\documentclass{article}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{CJKutf8}
\begin{document}\begin{CJK}{UTF8}{gkai}%正文放在此行下與\end{CJK}之間就行
";
sb.Append(latexHead);
sb.Append("\r\n");
sb.Append(" 設$f(x)="+ latexExpr0 + $"$,試按定義求 $f'({value})$。\r\n");
sb.Append("\r\n");
sb.Append(" 解:$f'(x)="+ latexExpr1 + "$\r\n");
sb.Append("\r\n");
sb.Append($" $f'({value})="+ result.ToString() + "$。\r\n");
string latexTail = @"
\end{CJK}
\end{document}
";
sb.Append(latexTail);string content = sb.ToString(); // 要寫入的文本內容
Encoding utf8bom = new UTF8Encoding(true);
File.WriteAllText(filePath, content, utf8bom);
derivative_value.tex文件內容:
\documentclass{article}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{CJKutf8}
\begin{document}\begin{CJK}{UTF8}{gkai}%正文放在此行下與\end{CJK}之間就行設$f(x)=10x^2$,試按定義求 $f'(-1)$。解:$f'(x)=20x$$f'(-1)=-20$。\end{CJK}
\end{document}